大家对tengine(nginx的淘宝分支)怎么看?
本帖最后由 OwnWaterloo 于 2013-12-30 00:50 编辑项目主页:中文,英文。
github地址: 代码,网站文档(tengine-website/util里貌似有一些工具可以转换md和协助翻译什么的)。
据官方说法是用在淘宝和天猫上:
简介
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
从2011年12月开始,Tengine成为一个开源项目,Tengine团队在积极地开发和维护着它。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。Tengine是社区合作的成果,我们欢迎大家参与其中,贡献自己的力量。
我比较在意的是这些功能:
[*]负载均衡相关
一致性hash模块:中文,英文。
会话保持模块: 中文,英文。
还可以对后端的服务器进行主动健康检查:中文,英文(这个链接在首页里没有但可以通过url的规律猜出来)。
[*]静态文件相关
组合多个CSS、JavaScript文件的访问请求变成一个请求:中文,英文。
自动去除空白字符和注释从而减小页面的体积:中文,英文(这个链接是首页给出来的不过失效了。根据url猜的另一个链接也失效)。
对网站来说这些功能都是需要的。但这些功能是否都应该集中在这一个软件中?是否都应该是nginx/tengine的职责?
我觉得tengine的这种做法更符合Windows下那种大而全而不是*nix下那种小而专的思想。
一般地说其实什么思想哲学都无所谓。至少我觉得对使用来说都不是必须考虑的因素。只要确实好用也都OK。
按照前面官方的说法tengine应该是靠谱的。哪怕有某些小不靠谱的地方淘宝、搜狗的技术团队肯定会去操心的。
作为对比。根据cnblogs分享出的经验来看我感觉阿里云就不靠谱。如果阿里巴巴自己也用阿里云估计它就必须靠谱了。
针对tengine来说,它走这种高大上的路线我担心很有可能nginx官方不会合并它的代码啊。。。
根据FAQ(英文,中文)来看确实是这样。
而且我怀疑被明确指出不会合并的功能应该不仅是syslog and pipe support。那两个和静态文件相关的功能也很有可能被拒绝啊。。。
而且这两类功能我感觉也挺鸡肋的。。。
Web Server怎么可能把和静态文件相关的那两个功能做好做精?不是应该用专门的工具在部署的时候搞定么?
对于负载均衡相关的功能目前还没有经验。但我更倾向于不让session们粘着在某一个服务器上,不管是通过一致性hash还是会话保持。于是健康检查也不是很紧要的功能了?
希望大家多给点(尤其是不同的)看法、意见、建议什么的。多谢多谢。。。 占楼。:wink: 看过一段时间的nginx 代码,真的学习了不少。才3点多M,也不大。
可惜平常不接触WEB。 淘宝那么牛掰的业务都能搞的定,亲就不要顾虑了! 淘宝现在从内核到中间件要全fork一遍。。。 回复 3# seufy88
http://www.ohloh.net/p/nginx/analyses/latest/languages_summary
有几十行的Assembly和C++是怎么回事。。。
回复 4# linux_c_py_php
只要淘宝自己会用那对它的质量倒没什么顾虑。。。
问题就是功能挺鸡肋的。。。
CSS不熟。
html是否除去空白与注释等等在gzip之后会有多少差别? 除去空白和注释后调试会不会不方便啊。。。
如果html是一些片段需要拼接, 估计tengine不会想复杂到这种程度吧?
js如果只是简单合并相比专业的mangle工具弱爆了的感觉。。。
总之这些都有专业的工具。 把它做在web server里显得不上不下的。。。
回复 5# tempname2
内核也搞? 针对web做了一些修改? 求传送门。。。 我去。。。 还真有汇编和C++的代码。。。
src/os/unix/rfork_thread.S
src/misc/ngx_cpp_test_module.cpp
回复 8# OwnWaterloo
http://kernel.taobao.org/index.php/Documents/kernel_team_successful_stories
看起来是基于红帽内核backport必要的patch,以及实现一些不在主线上的feature。
上次Ted为了out-of-tree的patch在主线代码里私自加了个flag引起轩然大波,他的辩解里就提到google和taobao都在用这个东西。
It doesn't change the interface or break anything; it just reserves a bit so that out-of-tree patches don't collide with future allocations. There are significant usages of this bit within Google and Tao Bao. It is true that there has been significant pushback about adding this functionality on linux-fsdevel; I find it personally frustrating that in effect, if enough people scream, they can veto an optional feature that might only be implemented by a single file system.
http://lwn.net/Articles/527373/