NGINX作者新开源软件NGINX Unit
150 次浏览
发表于 2021-06-28 18:59

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


公众号:程序员洪志道



如果您觉得不错,就打赏支持一下吧〜
已有 0 人进行打赏
点击标签,发现更多精彩
发表评论
发表者

洪志道

NGINX官方团队成员

  • 11

    文章

  • 1

    关注

  • 34

    粉丝

活动推荐
版权所有©F5 Networks,Inc.保留所有权利。京ICP备16013763号-5