BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Tengine 开源5周年:不忘初心 继续前行

| 作者 大冰 关注 0 他的粉丝 发布于 2016年12月27日. 估计阅读时间: 6 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!
Tengine,轻量级Web服务器,基于Nginx进行开发,针对大访问量网站的需求,新增了很多高级功能和特性。比如,Tengine兼容Nginx的所有配置,并且增加了动态模块加载、集成了Lua语言进行扩展等很多实用的功能,并在性能方面做了较大的提升。Tengine在微博、土豆、小米等大型互联网公司均有使用,阿里集团内部几乎所有需要使用七层负载均衡软件或者Web服务器的场景中也都有使用。
 
2011年12月,Tengine宣布开源。时至今日,已是Tengine走过的第5个开源年头。值此开源5周年之际,InfoQ特采访了项目发起人及主要负责人朱照远(叔度),希望能够向大家详细的介绍一下Tengine的日常维护及后续发展。
 

采访嘉宾:

朱照远,2009年加入淘宝网,花名叔度,现在是阿里云CDN团队负责人,负责阿里巴巴Web服务器、CDN等系统的研发。他是开源Web服务器项目Tengine的发起人。他的研究方向包括高性能服务器开发、大型网站的架构和性能优化、云计算技术等领域。
 
InfoQ:作为Tengine开源项目的发起人及主要负责人,请您谈谈您在项目中主要起什么作用?目前开发和维护Tengine的人员有哪些?
 
叔度:我在项目中主要负责制定项目的开发计划并参与到开发之中。同时也负责审核团队里其他工程师提交的代码、日常问题解答等。
 
目前,公司内部有3-4人参与开发和维护Tengine项目,比如,我的工作平常主要就是负责负载均衡软件Tengine的维护和开发。不过,外部也有部分爱好者提交patch,目前社区中提交并收入patch的开发人数有超过50人。
 
InfoQ:关于Tengine的发展历程,也许您最有发言权,那么您和您的团队在Tengine维护过程中都遇到过哪些困难?平时是怎么收集bug信息及用户反馈的呢?
 
叔度: 许多核心改动官方不支持,导致分支差异较大,每次合并Nginx主干需要花费相当大的review和测试时间;还有就是当开源项目与内部业务的时间安排相冲突时,内部业务任务紧急所导致的开发资源紧缺,这是目前我们面对的主要困难。
 
关于bug信息和用户反馈等的收集,我们主要还是通过GitHub issue,当然用户邮件私信反馈上来的问题也占一部分。
 
InfoQ:Tengine是基于Ngnix进行的二次开发,那么相较于Ngnix,都解决了哪些主要问题?
 
叔度:Tengine主要解决了如下问题:
 (1) upstream功能加强: 一致性Hash,会话保持,后端主动健康检查,动态upstream修改;
 (2) 更精细监控手段: 基于域名粒度数据统计,upstream状态监控;
 (3) 页面优化: CSS/JS/HTML内容组合,HTML内容缩减,footer模块;
 (4) 请求body过滤功能,body流式上传;
 (5) 模块动态加载框架;
 (6) proc模块框架: 基于此开发独立进程;
 (7) 流控: 基于CPU/Mem等的进程保护模块sysguard,原生请求限流模块加强;
 (8) 其他许多核心改动如reuseport、syslog日志支持等。
 
InfoQ:Tengine 开源5周年之际,Tengine 2.2.0 新版本发布,这是继上次Tengine 2.1.1 版本发布已经过去了一年多的时间,有人说阿里对Tengine已经不再重点维护,对此您怎么看?
 
叔度: Tengine项目始终是阿里重点维护的开源项目,我们内部一直在对Tengine做维护和不断的改进。但是由于最近1年内部工作较多,精力有限所以没有做版本的发布。实际上最近一年Tengine在GitHub上的commit记录从未间断过,这也是最近发布Tengine 2.2.0的一个基础。还有就是我们最近又有很多新同学加入,后续版本迭代会恢复正常,希望能给大家带来更多的惊喜。
 
InfoQ:新发布的版本,都给大家带来了哪些新的功能及特性?如何有效利用Tengine源码进行深入学习?
 
叔度: 新特性主要包括:
force_exit功能,可以强制reload后老进程在一定时间内退出,副作用是进程退出时老的连接将被关闭且无法处理。
 
debug_pool模块,可以查看Tengine/Nginx内部内存分布(基于Nginx的内存池轻量改造),可以帮助开发同学做内存优化和快速定位内存泄露。
     
如果想有效学习Tengine源码,建议查阅官方文档了解大体功能,然后再结合代码阅读,或者查看当时的pull request提交记录。
 
InfoQ:请您谈一下这五年来维护开源项目的心得以及您对开源的一些想法。请您阐述下Tengine的下一步计划及未来的发展方向?
 
叔度:维护开源是一件有意义的事情,当基于真实需求开发出新的功能,开放出去不但能提高项目自身的完善度,同时也会帮助到其他有使用需求的人,也能够更好地促进大家对于开源的支持及参与。不仅如此,能够编写一份完善的文档,能够及时解答使用者的困惑,能够对反馈的信息及时收纳和处理,对开源项目的进一步发展都起着非常重要的作用。
 
下一步,我们希望能够将内部的一些通用的功能和模块整理并合入Tengine中。比如最近会先将HTTP请求流量拷贝模块和HTTP正向代理模块先整合进主干。另外还有各种丰富的调试优化改进以及集群监控管理功能,这些都将会逐步引入。不仅如此,我们还将积极跟进Nginx官方版本,尽快将Tengine版本与Nginx最新版本对齐,促进Tengine更好地发展,进一步扩大用户的使用范围。
 
 

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT