阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

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

  • 2016-12-26
  • 本文字数:1963 字

    阅读完需:约 6 分钟

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 源码进行深入学习?

叔度: 新特性主要包括:

debug_pool 模块,可以查看 Tengine/Nginx 内部内存分布 (基于 Nginx 的内存池轻量改造),可以帮助开发同学做内存优化和快速定位内存泄露。

如果想有效学习 Tengine 源码,建议查阅

官方文档了解大体功能,然后再结合代码阅读,或者查看当时的 pull request 提交记录。

InfoQ:请您谈一下这五年来维护开源项目的心得以及您对开源的一些想法。请您阐述下 Tengine 的下一步计划及未来的发展方向?

叔度:维护开源是一件有意义的事情,当基于真实需求开发出新的功能,开放出去不但能提高项目自身的完善度,同时也会帮助到其他有使用需求的人,也能够更好地促进大家对于开源的支持及参与。不仅如此,能够编写一份完善的文档,能够及时解答使用者的困惑,能够对反馈的信息及时收纳和处理,对开源项目的进一步发展都起着非常重要的作用。

下一步,我们希望能够将内部的一些通用的功能和模块整理并合入 Tengine 中。比如最近会先将 HTTP 请求流量拷贝模块和 HTTP 正向代理模块先整合进主干。另外还有各种丰富的调试优化改进以及集群监控管理功能,这些都将会逐步引入。不仅如此,我们还将积极跟进 Nginx 官方版本,尽快将 Tengine 版本与 Nginx 最新版本对齐,促进 Tengine 更好地发展,进一步扩大用户的使用范围。

2016-12-26 19:243998

评论

发布
暂无评论
发现更多内容

《机器学习》By:周志华,PDF免费下载

计算机与AI

学习

区块链技术应用打造智慧物流

13828808769

区块链技术应用开发

年轻人不讲武德,竟然重构出这么优雅后台 API 接口

楼下小黑哥

重构 Spring MVC

想了解表格问答,我们先看看TA的前世

华为云开发者联盟

数据库 规范 表格

一文带你彻底了解Java异步编程

Java老k

Java 响应式编程 reactor 异步编程

Spring 源码学习 03:创建 IoC 容器的几种方式

程序员小航

spring 源码 ioc 源码阅读

线程池ForkJoinPool简介

Java老k

Java 线程池 forkjoin

区块链数字物流应用落地解决方案

t13823115967

区块链落地 区块链+ 数字物流应用落地解决方案

美团T8级架构师剖析Spring Boot源码:日志、缓存、消息、Web服务等

Java架构追梦

Java 源码 架构 微服务 springboot

架构师 3 期 3 班 -week2- 作业

zbest

作业 week2

30分钟玩转「正则表达式」

Yano

正则表达式

每一位程序员都应该保存的计算机网络总结,哪怕你刚进大学

996小迁

Java 架构 面试

PGAS模型编程语言

星际行者

智能视频监控的发展和优势

anyRTC开发者

安全 监控 音视频 WebRTC RTC

精心总结C++智能指针用法详解(完整版)附带视频讲解

ShenDu_Linux

c++ 程序员 指针 智能指针

AWS IoT Greengrass设计解析

soolaugust

边缘计算 工业4.0 工业物联网 iiot

go-zero 之 rest 实战与原理

万俊峰Kevin

RESTful api 网关 microservice Go 语言

为什么从蚂蚁离职?base拉胯,高潜也被倒挂,就是酸,忍不了

Java架构师迁哥

聊聊OpenAPI Specification(OAS)

尤利西斯的微笑

全栈工程师 软件设计 swagger OpenAPI

写了一套优雅接口之后,领导让我给大家讲讲这背后的技术原理

楼下小黑哥

spring 重构

跟随杠精的视角一起来了解Redis的主从复制

leonsh

redis redis高可用 redis主从

万字长文深度剖析面向对象的javascript

程序那些事

Java nodejs 程序那些事 面向对象js

极客大学 - 架构师训练营 第十一周作业

9527

盖洛普

成周

linux后台开发必知的linux系统内存知识总结

linux大本营

c++ Linux 后台开发 架构师 内存管理

《华为数据之道》读书笔记:第 9 章 打造“安全合规”的数据可控共享能力

方志

大数据 数据中台 数据安全

架构师训练营W07作业

Geek_f06ede

架构师 3 期 3 班 -week2- 总结

zbest

总结 week2

你敢信?就是这个Netty的网络框架差点把我整疯了,哭jj

小Q

学习 编程 面试 Netty 网络

学Linux到底学什么?未来职业到底是怎么样的?

Linux服务器开发

Linux 后端 Linux服务器 底层应用开发 web服务器

甲方日常 60

句子

工作 随笔杂谈 日常

Tengine 开源5周年:不忘初心 继续前行_语言 & 开发_大冰_InfoQ精选文章