51CTO专访淘宝清无:漫谈Nginx服务器与Lua语言

http://os.51cto.com/art/201112/307610.htm

说到Web服务器,也许你第一时间会想到Apache,也许你会想到Nginx。虽然说Apache依然是Web服务器的老大,但是在全球前 1000大Web服务器当中,22.4%使用NGINX。这些服务器包括诸如Facebook、Hulu和WordPress之类的网络巨头使用的服务 器。在今年刚刚结束的O‘Reilly Velocity China 2011会议上,51CTO编辑有幸采访到了目前就职淘宝的王晓哲。在《淘宝网Nginx定制开发实战》的主题演讲上,王晓哲与朱照远为大家分享淘宝网是 怎么通过定制开发Nginx服务器内核以及开发有效的模块达到亚洲最大电子商务网站的经验。

王晓哲:花名清无 一淘-数据平台与产品部技术专家。任职于数据平台部-量子恒道组,负责量子统计整体技术架构搭建。对海量数据处理、高性能高可用的Web服务相关技术有浓厚兴趣。

51CTO张浩:您从什么时候开始接触Nginx的?您是否接触过其他的服务器,比如Apache或者IIS?

清无:我是2008年开始接触Nginx的,当时在雅虎中国做开放平台的相关开发,非常看中Web服务器的大并 发服务能力,对Apache2Event模型、lighttpd和Nginx进行调研比较后,才选择了性能更为优异的Nginx进行开发和使用。除了 IIS以外,Linux平台上生产级的开源Web服务器我基本上都接触过,如apache/lighttpd/Nginx/cherokee等。

51CTO张浩:您在最初在Nginx上工作时使用的是什么语言?在您的分享中非常看好Lua语言,您又是从何时开始接触Lua语言的?

清无:最初在应用程序侧使用的是PHP,但在开放平台的实际业务中对PHP的并发能力很不满,就一直在考虑如何提升业务侧在这方面的表现。2009年进入淘宝后量子统计也有类似的诉求,经过多方比较选择了将Lua解释器嵌入Nginx的方案,也是从那时开始接触Lua语言。

51CTO张浩:其实很多开发者对Lua语言的了解来自《愤怒的小鸟》这款经典游戏,作为在服务器端工作的人,您认为Lua语言作为Web服务器中的胶水语言与在移动应用开发中有哪些不同?既然我们对Lua语言的了解是从《愤怒的小鸟开始》那么您有没有进行过相关开发呢?

清无:从基本结构来说,移动应用中以UI事件为主体的事件循环同Web服务器中以I/O事件为主体的事件循环有 惊人的相似之处,差别无非是前者所处理的事件大部分由用户操作所产生,而后者处理的事件则大部分由外设(主要是网卡)产生。移动应用中使用的Lua开发框 架通常还是标准的“填空”模式,即开发人员要站在系统事件循环的视角上,显式将业务逻辑切分为多块,用Lua脚本去编写若干回调函数分别实现各块,再由事 件循环在合适的时机去调用它们完成相关操作。而ngx_lua通过协程封装I/O操作之后,让开发人员可以站在业务逻辑的视角上以自然的线性逻辑书写代 码,由底层的ngx_lua将其隐式转换为多块回调的形式运行。

除此之外我觉得二者差别不大,移动平台上硬件机能差、Web服务器上并发处理请求多,二者都需要开发人员对运行性能和资源占用保持很高的敏感性。

虽然我个人正在使用Lua语言,但说到移动应用的开发我个人只是尝试过一些iOS上的Lua开发框架,没有实际发布过应用。

51CTO张浩:相比PHP,Lua语言在整个架构上的优势在哪里?换句话说是Lua语言哪些地方吸引了您?

清无:Lua的紧凑、快速和内建协程支持是最吸引我的地方,前2点是实现高并发服务的基础,后1点则保证了我们可以将回调式异步操作转变为隐式异步操作,在保证并发服务能力的同时极大地降低了业务逻辑实现成本。

51CTO张浩:现在Nginx的增长非常迅速,有数据表示在世界上1000台服务器中有22.4%使用 Nginx。这些服务器包括诸如Facebook、Hulu和WordPress之类的网络巨头使用的服务器。您觉得Nginx与Apache相比优势在 哪里?比如在压力承载与开发维护上?

清无:在Apache漫长的发展过程中,开发团队和社区产出了相当丰富的扩展模块,这些模块是Apache流行 的重要原因。遗憾的是它们现在也是阻挠Apache转型的最大障碍,可以说是成也模块、败也模块。因为Web服务器的扩展模块总会深度嵌入请求处理过程的 各个层面,服务模型一旦确定,为了保证扩展模块兼容性,就无法再做大的修改。Apache从一开始选择的是多进程服务模型(Prefork),同时得益于 设计明晰的内部处理流程,使得此模型下模块非常容易开发;随着互联网的迅猛发展,Apache开发团队也意识到了多进程模型的并发服务瓶颈并着手改进,先 后开发出了Worker(thread)服务模型和Event(Leader-Follower)服务模型。但无论哪个模型,都是为了最大程度地兼容原有 扩展模块而设计,保留了阻塞式请求处理流程,这就相当于自己为并发服务能力设置了一层天花板。

相比Apache,Nginx就没有这些历史包袱,有机会从头做正确的事,它借鉴了Apache中良好的内部流程设计,同时摒弃了阻碍性能进一步提升的阻塞式请求处理方案,加上Igor本人对开发高性能程序方面有丰富经验,就造就了Nginx这样一个后起之秀。

在内核上同Apache相比,Nginx更为精巧,单机并发处理能力要强很多,但缺点是难以开发复杂的扩展模块和深度定制代码,这是选择非阻塞 I/O复用服务模型的缺点。我们希望后续能通过加强ngx_lua对Nginx核心的控制能力来彻底解决Nginx扩展困难的问题。

51CTO张浩:在本期的Velocity上的一个主要基调就是为用户最舒适的体验,那么作为架构师来讲在进行架构设计的时候需要注意哪些方面的细节?

清无:作为技术架构师,快速、稳定是架构设计时追求的2个终极目标,也是为用户创造舒适体验的基本前提。设计是一个权衡的过程,没有最好的设计,只有最合适的设计,在设计的过程中大致上需要注意四个方面:

  1. 尽量减少数据通路上的不必要环节,多一个环节就多一分出错可能
  2. 同时关注运行效率和开发效率,视具体场景有所侧重
  3. 正视而非掩盖系统异常,要对依赖系统故障时的自动处理机制有较周全的考虑
  4. 尽量将系统组件的内部运行状态以监控接口形式暴露出来,让运维工作白盒化

把握好以上要点基本上就可以设计出符合业务需求的系统架构。

51CTO张浩:您从参加工作到现在最大的感触是什么?您对基层的运维开发人员在职业规划上又有哪些建议呢?

清无:“聚焦”才是硬道理。人的总精力有限,投入的方向多,摊到各个方向上的精力就少,更难出成绩。如果想在技 术领域有所作为,就要善于从日常工作中发现问题并思考解决方案,及时总结经验,多花时间学习基础理论,在熟悉了所在领域的基本状况后,可以选择一个方向重 点投入精力进行研究积累,只要时间投入够多,总能独树一帜。

时间: 2024-08-01 10:41:41

51CTO专访淘宝清无:漫谈Nginx服务器与Lua语言的相关文章

淘宝店群使用云服务器非常好

本人做淘宝店群快三年了,期间也使用了各种不同的服务器.但在使用服器过程中经常出现各种问题,服务器今天死机,明天服务器崩溃,真是让人无语啊,整天都在为服务器的稳定提心吊胆.后来经店群圈子里面的一位大佬介绍了一款云服务器,使用了已经快半年了,非常的稳定,从来没出现异常,云服务器稳定,店铺成单率自然就稳定,心里也高兴,哈哈. 这款服务器就是腾讯云的高性能服务器,采用的是腾讯云第二代英特尔?至强可扩展处理器,非常的稳定,对店群也非常的友好. 这款云服务器的地址点击打开 本人采用的是1核2G的配置,一共买

《淘宝技术这十年》读书笔记——第一章 第二章

引言 ? ? 这本书的作者是子柳先生,子柳本名赵超,2004年加入淘宝网.历任开发工程师.项目经理.产品经理.测试经理,2009年随着淘宝系统的大规模重构和人才的迅速扩张,创办了"淘宝技术大学",因培养内外部工程师众多,人称"校长". ? ? 之所以读这本书,主要想了解淘宝的技术/业务发展过程中遇到过哪些问题,以及他们怎么解决的.在阅读的过程中有很多不懂的地方,主要是知识面确实涵盖的太广,就当拓展视野吧. ? ? 第一章 ? ? 淘宝架构初版 ? ? 淘宝的第一版源

淘宝开源Web服务器Tengine基本安装步骤

Tengine 是由淘宝核心系统部基于Nginx开发的Web服务器,它在Nginx的基础上,针对大访问量 网站的需求,添加了很多功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,淘宝商城等得到了很好的验证.它的最终目标是打造一个高效. 稳定.安全.易用的 Web 平台.Tengine现已开源. 以下是在CentOS 6.0编译安装Tengine的基本步骤: 1.安装Tengine 安装pcre #支持Tengine伪静态 # cd /usr/local/src # tar zxv

淘宝开源Web服务器Tengine安装教程

简介Tengine是由淘宝核心系统部基于Nginx开发的Web服务器,它在Nginx的基础上,针对大访问量网站的需求,添加了很多功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,淘宝商城等得到了很好的验证.它的最终目标是打造一个高效.稳定.安全.易用的 Web 平台.Tengine现已开源. 特性 继承Nginx-1.0.10的所有特性: 组合多个CSS.JavaScript文件的访问请求变成一个请求: 支持管道和syslog形式的日志和抽样: 自动根据CPU数目设置亲缘性: 监

淘宝数据库负责人介绍淘宝数据库设计

江枫先给我们介绍一下自己,和你在这次淘宝"双十一"事件中所扮演的角色? 大家好,我是淘宝技术保障部的江枫.目前主要负责数据库的稳定性这一块.双十一这一天,我主要是负责协调整个数据库团队和保障整个数据库在"双十一"过程中的稳定性不受任何影响. 那给我们详细的谈一下淘宝网现在整个数据库整体的一个架构,包括它硬件的组成.  淘宝的数据库发展到今天,已经是一个非常复杂的系统.我大概算了一下,淘宝目前所有的数据库服务器加起来可能已经超过800台.那在这么一个规模底下,淘宝的数

关于淘宝的数据库系统

江枫先给我们介绍一下自己,和你在这次淘宝“双十一”事件中所扮演的角色?  大家好,我是淘宝技术保障部的江枫.目前主要负责数据库的稳定性这一块.双十一这一天,我主要是负责协调整个数据库团队和保障整个数据库在“双十一”过程中的稳定性不受任何影响.  那给我们详细的谈一下淘宝网现在整个数据库整体的一个架构,包括它硬件的组成.  淘宝的数据库发展到今天,已经是一个非常复杂的系统.我大概算了一下,淘宝目前所有的数据库服务器加起来可能已经超过800台.那在这么一个规模底下,淘宝的数据库团队这么多年也是随着淘

Linux客户端访问Nginx服务器出现Cannot assign requested address错误

故障描述 参考文章 http://blog.csdn.net/sctq8888/article/details/7381910 不过这篇文章中提到的开启TIME-WAIT sockets的快速回收和重用功能可能在某些场景下会导致问题,比如使用NAT方式访问服务器时,由于很多客户端的出口IP都是一样的,由于TCP时间戳的不一致会导致在同一个WIFI下有的客户端可以访问,有的客户端不可以访问的现象. 参见http://john88wang.blog.51cto.com/2165294/1422705

最新无货源淘宝店群方法揭秘如何极速上下架

店群管家这节课教大家无货源淘宝店群如何极速上下架,很多人不相信现在淘宝店群还可以月入上万,然而坚持下来的朋友大多已经做到了月入上万.这也是小编最新研究出来的新方法,立马分享给大家尝试,做电商的都知道,我们是在跟时间赛跑,希望对各位双十一的出单有帮助!一.上下架原理1.极速的上架和下架原理则是出售中有大量的商品至少一万加,每天订单和访客比较多.通过两分钟下架后马上两分钟上架,因为时间过短,淘宝来不及判定你店铺的权重,只能给你全店商品权重.通过这个漏洞抓取大量的访客.2.循环上下架原理:淘宝七天上下

淘宝无货源店铺没有流量?精细化运营无需引流技术操作

电商市场的庞大是我们不可想象的,不要担心没有市场.人在哪里流量就在那里,流量变现的今天,流量决定收入.淘宝这个平台流量池是电商行业中最大的,几个亿的用户群体,只不过是如何去引进这些流量到自己的店铺的问题,归根结底还是运营思路与方法. 那么新手前期做店铺到底应该如何去做呢?前期店铺没有流量,无信誉等级,没办法在淘宝平台推广.新店通过三个月的扶持期,新品七天新品七天扶持期来做文章,通过大量上架来获取流量.然后删选,精细化优化SEO,等等,都是精细化运营的一部分,前期上架其他相关类目来引流,后期精简类