点赞
评论
收藏
分享
举报
NGINX作者新开源软件:NGINX Unit
发表于2021-06-28 18:52

浏览 1.2k

文章标签

Unit,已经出道好几年

Unit是NGINX作者Igor Sysoev亲自设计,NGINX团队核心人员开发的,首次开源发布于2017年。有着活跃的社区和专业的开发能力,我有幸成为其中正式一员。

Changes with Unit 1.24.0   27 May 2021......Changes with Unit 0.1      06 Sep 2017    *) First public release.

Unit 现代应用服务器软件

结合此图看Unit,以下是它的核心功能。

配置:完全动态,包括进程数、服务监听端口、证书等。

路由:灵活并且强大的路由功能,它会成为微服务的杀器功能。

语言:支持各种主流语言和版本,这对DevOps太友好了。

文件:支持静态资源服务,并且更好用。

代理:目前只有简单的轮循,成为完整的负载均衡只是时间问题。

容器:目前拥有隔离功能,一直在挑战做容器的事情。


NGINX,全球头号Web服务器软件

2004年Igor Sysoev开源了NGINX,本来只是个人的兴趣而已,没想到2021年NGINX正式超越Apache,成为全球头号Web服务器软件,并且这个趋势看着会一直持续下去。

20年前的计算机体系架构跟现在相比已经发生非常大的变化,NGINX从最早版本到现在最核心的代码几乎没有变过。客观讲NGINX的架构已经非常优秀了,也说明年轻时的Igor已经具备非常强的设计和编码能力。

然而深谙NGINX源码的开发者仔细思考的话,会发现NGINX最大的问题就是动态能力不够。比如reload需要创建新的进程,这对长连接服务是没法忍受的,当然通过其它方式已经有成熟的解决方案。比如不能修改头部等,也可通过其它方式解决。这些的本质还是架构和数据结构设计的问题,放在10多年前这些都不是问题,互联网没有今天这么复杂。

得益于NGINX的模块化,NGINX的生态发展如此迅速,反过来看也正是因为模块化,限制了NGINX的重构机会,因为第三方模块依赖了NGINX的API。这也是Igor多年来一直在思考解决的问题。NGINX Unit就这样出现了。


Unit,更好的架构设计
Unit跟NGINX是两个完全独立的软件,没有人比NGINX团队更清楚哪些设计更需要改进。Unit内部引入了level hash,动态内存池,动态共享内存等。得益于这些基础数据结构,Unit解决了动态的问题,彻底放飞了。

架构图


Unit高性能

NGINX团队最拿手的就是开发高性能软件,Unit的低延迟非常优秀,让它可以处理更多的请求。还有不得不提它的低内存消耗。


纯应用


NGINX+应用

纯Unit

 黄色部分:读取时间      绿色部分:处理时间     橙色部分:响应时间


    

https://itnext.io/performance-comparison-between-nginx-unit-and-uwsgi-python3-4511fc172a4c


Unit稳定吗? 稳定

NGINX社区的风格就是开发出来的东西都是产品级别的,虽然目前Unit功能相对较少,但发布出来的都是稳定可用的。


Unit简单好用

以wordpress为例,只需一个Unit软件就行。以下是它的配置。

{    "listeners": {        "*:80": {            "pass": "routes"        }    },    "routes": [        {            "match": {                "uri": [                    "*.php",                    "*.php/*",                    "/wp-admin/"                ]            },            "action": {                "pass": "applications/wordpress/direct"            }        },        {            "action": {                "share": "/path/to/app/",                "fallback": {                    "pass": "applications/wordpress/index"                }            }        }    ],    "applications": {        "wordpress": {            "type": "php",            "targets": {                "direct": {                    "root": "/path/to/app/"                },                "index": {                    "root": "/path/to/app/",                    "script": "index.php"                }            }        }    }}


Unit未来可期

Unit背后有强大的研发团队,它是NGINX作者亲自设计,NGINX核心团队开发的,相信Unit未来大有可为。


官方资料

文档:http://unit.nginx.org

代码:https://github.com/nginx/unit

计划:https://github.com/orgs/nginx/projects/1


公众号:程序员洪志



已修改于2023-03-08 19:12
本作品系原创
创作不易,留下一份鼓励
胖子_204

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
胖子_204
这家伙很懒还未留下介绍~
1
文章
0
问答
1
粉丝
相关文章
介绍NGINXUnit是一个多语言动态应用服务器,同样支持代理和静态文件。是由NGINX作者IgorSysoev亲自设计带领团队从零实现的高性能纯C服务器。Unit的使用对开发者和运维非常友好。 关键特性:灵活用HTTP协议的RESTfulJSONAPI更新任意粒度配置极其强大和易用的路由管理请求支持所有主流语言:GO,Python,JAVA,Perl,PHP,NodeJS,Ruby支持负载均衡的代理支持静态资源服务 性能高并发:使用异步事件处理模型低内存:使用连接和内存复用每个应用语言的进程管理支持动态和静态分配对Java,Perl,Python,Ruby支持原生多线程处理 安全和稳定性处理请求的进程以非特权方式运行进程间完全独立不同的应用完全相互隔离支持用容器化方式对应用程序进行namespace和filesystem隔离支持SSL/TLS 社区和文档容易上手保持一直活跃的开发状态:https://github.com/nginx/unit/官方一直更新使用文档:https://unit.nginx.org/ 完整示例:{ "cer
点赞 7
浏览 1.7k
感谢您参加> Ø3月11日用Unit实现应用的动态配置Ø 3月18日Unit的负载均衡配置Ø 3月25日Unit架构设计Ø 4月01日Unit源代码解读
点赞 1
浏览 1.2k
Unit,已经出道好几年Unit是NGINX作者IgorSysoev亲自设计,NGINX团队核心人员开发的,首次开源发布于2017年。有着活跃的社区和专业的开发能力,我有幸成为其中正式一员。Changes with Unit 1.24.0   27 May 2021......Changes with Unit 0.1      06 Sep 2017*)Firstpublicrelease.Unit现代应用服务器软件结合此图看Unit,以下是它的核心功能。配置:完全动态,包括进程数、服务监听端口、证书等。路由:灵活并且强大的路由功能,它会成为微服务的杀器功能。语言:支持各种主流语言和版本,这对DevOps太友好了。文件:支持静态资源服务,并且更好用。代理:目前只有简单的轮循,成为完整的负载均衡只是时间问题。容器:目前拥有隔离功能,一直在挑战做容器的事情。NGINX,全球头号Web
点赞 1
浏览 1.6k