自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

51CTO專(zhuān)訪淘寶清無(wú):漫談Nginx服務(wù)器與Lua語(yǔ)言

原創(chuàng)
系統(tǒng)
在今年剛剛結(jié)束的O'Reilly Velocity China 2011會(huì)議上,51CTO編輯有幸采訪到了目前就職淘寶的王曉哲。王曉哲花名清無(wú),一淘-數(shù)據(jù)平臺(tái)與產(chǎn)品部技術(shù)專(zhuān)家。任職于數(shù)據(jù)平臺(tái)部-量子恒道組,負(fù)責(zé)量子統(tǒng)計(jì)整體技術(shù)架構(gòu)搭建。清無(wú)為大家介紹了自己在Nginx上的心路歷程,并且分享了對(duì)Lua語(yǔ)言的使用心得。

說(shuō)到Web服務(wù)器,也許你***時(shí)間會(huì)想到Apache,也許你會(huì)想到Nginx。雖然說(shuō)Apache依然是Web服務(wù)器的老大,但是在全球前1000大Web服務(wù)器當(dāng)中,22.4%使用NGINX。這些服務(wù)器包括諸如Facebook、Hulu和WordPress之類(lèi)的網(wǎng)絡(luò)巨頭使用的服務(wù)器。在今年剛剛結(jié)束的O'Reilly Velocity China 2011會(huì)議上,51CTO編輯有幸采訪到了目前就職淘寶的王曉哲。在《淘寶網(wǎng)Nginx定制開(kāi)發(fā)實(shí)戰(zhàn)》的主題演講上,王曉哲與朱照遠(yuǎn)為大家分享淘寶網(wǎng)是怎么通過(guò)定制開(kāi)發(fā)Nginx服務(wù)器內(nèi)核以及開(kāi)發(fā)有效的模塊達(dá)到亞洲***電子商務(wù)網(wǎng)站的經(jīng)驗(yàn)。

[[53338]] 

王曉哲:花名清無(wú) 一淘-數(shù)據(jù)平臺(tái)與產(chǎn)品部技術(shù)專(zhuān)家。任職于數(shù)據(jù)平臺(tái)部-量子恒道組,負(fù)責(zé)量子統(tǒng)計(jì)整體技術(shù)架構(gòu)搭建。對(duì)海量數(shù)據(jù)處理、高性能高可用的Web服務(wù)相關(guān)技術(shù)有濃厚興趣。

51CTO張浩:您從什么時(shí)候開(kāi)始接觸Nginx的?您是否接觸過(guò)其他的服務(wù)器,比如Apache或者IIS?

清無(wú):我是2008年開(kāi)始接觸Nginx的,當(dāng)時(shí)在雅虎中國(guó)做開(kāi)放平臺(tái)的相關(guān)開(kāi)發(fā),非??粗蠾eb服務(wù)器的大并發(fā)服務(wù)能力,對(duì)Apache2Event模型、lighttpd和Nginx進(jìn)行調(diào)研比較后,才選擇了性能更為優(yōu)異的Nginx進(jìn)行開(kāi)發(fā)和使用。除了IIS以外,Linux平臺(tái)上生產(chǎn)級(jí)的開(kāi)源Web服務(wù)器我基本上都接觸過(guò),如apache/lighttpd/Nginx/cherokee等。

51CTO張浩:您在最初在Nginx上工作時(shí)使用的是什么語(yǔ)言?在您的分享中非??春肔ua語(yǔ)言,您又是從何時(shí)開(kāi)始接觸Lua語(yǔ)言的?

清無(wú):最初在應(yīng)用程序側(cè)使用的是PHP,但在開(kāi)放平臺(tái)的實(shí)際業(yè)務(wù)中對(duì)PHP的并發(fā)能力很不滿(mǎn),就一直在考慮如何提升業(yè)務(wù)側(cè)在這方面的表現(xiàn)。2009年進(jìn)入淘寶后量子統(tǒng)計(jì)也有類(lèi)似的訴求,經(jīng)過(guò)多方比較選擇了將Lua解釋器嵌入Nginx的方案,也是從那時(shí)開(kāi)始接觸Lua語(yǔ)言。

51CTO張浩:其實(shí)很多開(kāi)發(fā)者對(duì)Lua語(yǔ)言的了解來(lái)自《憤怒的小鳥(niǎo)》這款經(jīng)典游戲,作為在服務(wù)器端工作的人,您認(rèn)為L(zhǎng)ua語(yǔ)言作為Web服務(wù)器中的膠水語(yǔ)言與在移動(dòng)應(yīng)用開(kāi)發(fā)中有哪些不同?既然我們對(duì)Lua語(yǔ)言的了解是從《憤怒的小鳥(niǎo)開(kāi)始》那么您有沒(méi)有進(jìn)行過(guò)相關(guān)開(kāi)發(fā)呢?

清無(wú):從基本結(jié)構(gòu)來(lái)說(shuō),移動(dòng)應(yīng)用中以UI事件為主體的事件循環(huán)同Web服務(wù)器中以I/O事件為主體的事件循環(huán)有驚人的相似之處,差別無(wú)非是前者所處理的事件大部分由用戶(hù)操作所產(chǎn)生,而后者處理的事件則大部分由外設(shè)(主要是網(wǎng)卡)產(chǎn)生。移動(dòng)應(yīng)用中使用的Lua開(kāi)發(fā)框架通常還是標(biāo)準(zhǔn)的“填空”模式,即開(kāi)發(fā)人員要站在系統(tǒng)事件循環(huán)的視角上,顯式將業(yè)務(wù)邏輯切分為多塊,用Lua腳本去編寫(xiě)若干回調(diào)函數(shù)分別實(shí)現(xiàn)各塊,再由事件循環(huán)在合適的時(shí)機(jī)去調(diào)用它們完成相關(guān)操作。而ngx_lua通過(guò)協(xié)程封裝I/O操作之后,讓開(kāi)發(fā)人員可以站在業(yè)務(wù)邏輯的視角上以自然的線性邏輯書(shū)寫(xiě)代碼,由底層的ngx_lua將其隱式轉(zhuǎn)換為多塊回調(diào)的形式運(yùn)行。

除此之外我覺(jué)得二者差別不大,移動(dòng)平臺(tái)上硬件機(jī)能差、Web服務(wù)器上并發(fā)處理請(qǐng)求多,二者都需要開(kāi)發(fā)人員對(duì)運(yùn)行性能和資源占用保持很高的敏感性。

雖然我個(gè)人正在使用Lua語(yǔ)言,但說(shuō)到移動(dòng)應(yīng)用的開(kāi)發(fā)我個(gè)人只是嘗試過(guò)一些iOS上的Lua開(kāi)發(fā)框架,沒(méi)有實(shí)際發(fā)布過(guò)應(yīng)用。

51CTO張浩:相比PHP,Lua語(yǔ)言在整個(gè)架構(gòu)上的優(yōu)勢(shì)在哪里?換句話說(shuō)是Lua語(yǔ)言哪些地方吸引了您?

清無(wú):Lua的緊湊、快速和內(nèi)建協(xié)程支持是最吸引我的地方,前2點(diǎn)是實(shí)現(xiàn)高并發(fā)服務(wù)的基礎(chǔ),后1點(diǎn)則保證了我們可以將回調(diào)式異步操作轉(zhuǎn)變?yōu)殡[式異步操作,在保證并發(fā)服務(wù)能力的同時(shí)極大地降低了業(yè)務(wù)邏輯實(shí)現(xiàn)成本。

51CTO張浩:現(xiàn)在Nginx的增長(zhǎng)非常迅速,有數(shù)據(jù)表示在世界上1000臺(tái)服務(wù)器中有22.4%使用Nginx。這些服務(wù)器包括諸如Facebook、Hulu和WordPress之類(lèi)的網(wǎng)絡(luò)巨頭使用的服務(wù)器。您覺(jué)得Nginx與Apache相比優(yōu)勢(shì)在哪里?比如在壓力承載與開(kāi)發(fā)維護(hù)上?

清無(wú):在Apache漫長(zhǎng)的發(fā)展過(guò)程中,開(kāi)發(fā)團(tuán)隊(duì)和社區(qū)產(chǎn)出了相當(dāng)豐富的擴(kuò)展模塊,這些模塊是Apache流行的重要原因。遺憾的是它們現(xiàn)在也是阻撓Apache轉(zhuǎn)型的***障礙,可以說(shuō)是成也模塊、敗也模塊。因?yàn)閃eb服務(wù)器的擴(kuò)展模塊總會(huì)深度嵌入請(qǐng)求處理過(guò)程的各個(gè)層面,服務(wù)模型一旦確定,為了保證擴(kuò)展模塊兼容性,就無(wú)法再做大的修改。Apache從一開(kāi)始選擇的是多進(jìn)程服務(wù)模型(Prefork),同時(shí)得益于設(shè)計(jì)明晰的內(nèi)部處理流程,使得此模型下模塊非常容易開(kāi)發(fā);隨著互聯(lián)網(wǎng)的迅猛發(fā)展,Apache開(kāi)發(fā)團(tuán)隊(duì)也意識(shí)到了多進(jìn)程模型的并發(fā)服務(wù)瓶頸并著手改進(jìn),先后開(kāi)發(fā)出了Worker(thread)服務(wù)模型和Event(Leader-Follower)服務(wù)模型。但無(wú)論哪個(gè)模型,都是為了***程度地兼容原有擴(kuò)展模塊而設(shè)計(jì),保留了阻塞式請(qǐng)求處理流程,這就相當(dāng)于自己為并發(fā)服務(wù)能力設(shè)置了一層天花板。

相比Apache,Nginx就沒(méi)有這些歷史包袱,有機(jī)會(huì)從頭做正確的事,它借鑒了Apache中良好的內(nèi)部流程設(shè)計(jì),同時(shí)摒棄了阻礙性能進(jìn)一步提升的阻塞式請(qǐng)求處理方案,加上Igor本人對(duì)開(kāi)發(fā)高性能程序方面有豐富經(jīng)驗(yàn),就造就了Nginx這樣一個(gè)后起之秀。

在內(nèi)核上同Apache相比,Nginx更為精巧,單機(jī)并發(fā)處理能力要強(qiáng)很多,但缺點(diǎn)是難以開(kāi)發(fā)復(fù)雜的擴(kuò)展模塊和深度定制代碼,這是選擇非阻塞I/O復(fù)用服務(wù)模型的缺點(diǎn)。我們希望后續(xù)能通過(guò)加強(qiáng)ngx_lua對(duì)Nginx核心的控制能力來(lái)徹底解決Nginx擴(kuò)展困難的問(wèn)題。

51CTO張浩:在本期的Velocity上的一個(gè)主要基調(diào)就是為用戶(hù)***的體驗(yàn),那么作為架構(gòu)師來(lái)講在進(jìn)行架構(gòu)設(shè)計(jì)的時(shí)候需要注意哪些方面的細(xì)節(jié)?

清無(wú):作為技術(shù)架構(gòu)師,快速、穩(wěn)定是架構(gòu)設(shè)計(jì)時(shí)追求的2個(gè)***目標(biāo),也是為用戶(hù)創(chuàng)造舒適體驗(yàn)的基本前提。設(shè)計(jì)是一個(gè)權(quán)衡的過(guò)程,沒(méi)有***的設(shè)計(jì),只有最合適的設(shè)計(jì),在設(shè)計(jì)的過(guò)程中大致上需要注意四個(gè)方面:

  1. 盡量減少數(shù)據(jù)通路上的不必要環(huán)節(jié),多一個(gè)環(huán)節(jié)就多一分出錯(cuò)可能
  2. 同時(shí)關(guān)注運(yùn)行效率和開(kāi)發(fā)效率,視具體場(chǎng)景有所側(cè)重
  3. 正視而非掩蓋系統(tǒng)異常,要對(duì)依賴(lài)系統(tǒng)故障時(shí)的自動(dòng)處理機(jī)制有較周全的考慮
  4. 盡量將系統(tǒng)組件的內(nèi)部運(yùn)行狀態(tài)以監(jiān)控接口形式暴露出來(lái),讓運(yùn)維工作白盒化

把握好以上要點(diǎn)基本上就可以設(shè)計(jì)出符合業(yè)務(wù)需求的系統(tǒng)架構(gòu)。

51CTO張浩:您從參加工作到現(xiàn)在***的感觸是什么?您對(duì)基層的運(yùn)維開(kāi)發(fā)人員在職業(yè)規(guī)劃上又有哪些建議呢?

清無(wú):“聚焦”才是硬道理。人的總精力有限,投入的方向多,攤到各個(gè)方向上的精力就少,更難出成績(jī)。如果想在技術(shù)領(lǐng)域有所作為,就要善于從日常工作中發(fā)現(xiàn)問(wèn)題并思考解決方案,及時(shí)總結(jié)經(jīng)驗(yàn),多花時(shí)間學(xué)習(xí)基礎(chǔ)理論,在熟悉了所在領(lǐng)域的基本狀況后,可以選擇一個(gè)方向重點(diǎn)投入精力進(jìn)行研究積累,只要時(shí)間投入夠多,總能獨(dú)樹(shù)一幟。

責(zé)任編輯:張浩 來(lái)源: 51CTO.com
相關(guān)推薦

2012-07-13 10:57:46

Nginxlua

2015-09-29 17:06:24

戴爾

2011-11-01 12:15:16

TechEd 2011

2011-09-08 13:50:51

51cto 51CTO

2011-09-08 13:26:27

51cto 51CTO

2012-07-13 09:58:06

WEBWEB前端性能優(yōu)化

2010-08-26 08:57:04

AndroidAndroid開(kāi)發(fā)

2012-07-13 02:22:44

褚霸去IOEADC 2012

2011-07-25 10:24:01

2011-08-01 10:07:38

2010-06-05 13:24:20

IT服務(wù)

2011-12-23 16:13:25

2009-11-13 04:23:12

云計(jì)算Gartner專(zhuān)訪

2011-01-04 15:29:30

開(kāi)發(fā)技術(shù)

2011-09-08 14:24:57

51cto 51CTO

2010-12-10 13:21:47

51CTO博客大賽

2011-05-20 08:56:55

Office應(yīng)用訪談金山

2009-08-07 11:45:58

云計(jì)算SOA虛擬化

2014-03-05 18:57:31

2009-07-10 14:28:38

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)