偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

51CTO專訪清無(wú):Nginx_lua的應(yīng)用及性能對(duì)比

原創(chuàng)
開(kāi)發(fā) 前端
對(duì)于Web高性能服務(wù)器上的選擇,這個(gè)是很多人頭痛的問(wèn)題。對(duì)于Apache、lighttpd、Nginx都用他們優(yōu)點(diǎn),在什么情況下我們?nèi)绾稳ミx擇適合自己的Web高性能服務(wù)器,如何去搭建一個(gè)適合自己的架構(gòu)環(huán)境,這個(gè)是一個(gè)很麻煩的事情。接下來(lái),在ADC 2012(Alibaba Developer Conference 2012)大會(huì)上,51CTO記者有幸采訪到了一淘數(shù)據(jù)平臺(tái)與產(chǎn)品部技術(shù)專家——清無(wú)(花名),為我們解讀Nginx_lua的一些優(yōu)勢(shì)及劣勢(shì),以及在高性能服務(wù)器上的選擇。

對(duì)于Web高性能服務(wù)器上的選擇,這個(gè)是很多人頭痛的問(wèn)題。對(duì)于Apache、lighttpd、Nginx都用他們優(yōu)點(diǎn),在什么情況下我們?nèi)绾稳ミx擇適合自己的Web高性能服務(wù)器,如何去搭建一個(gè)適合自己的架構(gòu)環(huán)境,這個(gè)是一個(gè)很麻煩的事情。接下來(lái),在ADC 2012(Alibaba Developer Conference 2012)大會(huì)上,51CTO記者有幸采訪到了一淘數(shù)據(jù)平臺(tái)與產(chǎn)品部技術(shù)專家——清無(wú)(花名),為我們解讀Nginx_lua的一些優(yōu)勢(shì)及劣勢(shì),以及在高性能服務(wù)器上的選擇。

 

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

清無(wú)你好,lua我們都知道是一種嵌入式的腳本語(yǔ)言,而它最著名的是應(yīng)用在暴雪的魔獸世界和網(wǎng)易的大話西游中。那么在淘寶上的應(yīng)用lua主要是應(yīng)用在那塊?

清無(wú):目前在一淘網(wǎng)這邊Nginx_lua主要應(yīng)用在兩塊地方,一塊是傳統(tǒng)的一淘數(shù)據(jù)庫(kù)量子統(tǒng)計(jì)店鋪經(jīng),數(shù)據(jù)接口部分完全是用Nginx_lua來(lái)做。另一塊是一淘的廣告部門(mén)有一部分?jǐn)?shù)據(jù)接口也使用著Nginx_lua。

具我的了解,你開(kāi)始接觸nginx應(yīng)該是2008年的。在08年時(shí),很多高性能的WEB服務(wù)器也非常多,比如apache、lighttpd等等。這些都是高性能的開(kāi)源服務(wù)器,你選擇nginx是因?yàn)槭裁矗克欠矫姹容^吸引你?

清無(wú):08的時(shí)候高性能WEB服務(wù)器除了Nginx以外其實(shí)只有l(wèi)ighttpd是開(kāi)源的,lighttpd和Nginx比較的話有一個(gè)很明顯的缺點(diǎn)是lighttpd的模塊機(jī)制設(shè)計(jì)的很不好,lighttpd的模塊機(jī)制過(guò)多的把模塊本身的請(qǐng)求處理邏輯和底層的網(wǎng)絡(luò)事件的處理組合在一起,所以不像Nginx的模塊結(jié)構(gòu)這么清晰,當(dāng)然Nginx的模塊設(shè)計(jì)很大程度上也借鑒了Apache的這種模塊設(shè)計(jì),所以這塊有一個(gè)先天的優(yōu)勢(shì)。當(dāng)時(shí)其實(shí)我最早接觸lighttpd,然后Nginx出來(lái)以后,就對(duì)比它們模塊結(jié)構(gòu)上的差異后,覺(jué)得Nginx似乎更有優(yōu)勢(shì)一些。實(shí)測(cè)對(duì)于我們這種網(wǎng)絡(luò)I/O密集型的應(yīng)用來(lái)說(shuō),只要不是你實(shí)現(xiàn)的這個(gè)邏輯有多大缺陷,其實(shí)在放lighttpd或者Nginx差別不是特別大。

Nginx的優(yōu)勢(shì)你剛剛也講了,你有沒(méi)有哪nginx和其他的開(kāi)源web服務(wù)器做過(guò)一些性能比較?可以跟我們網(wǎng)友進(jìn)行一些分析。

清無(wú):比較的話是這樣,首先架構(gòu)如果有問(wèn)題的話無(wú)論你實(shí)現(xiàn)如何它都是有問(wèn)題的,所以我的比較首先在架構(gòu)搭建上,每連接或者每請(qǐng)求單線程單進(jìn)程這種服務(wù)模型,直接就被刷掉,肯定不可能做到很高的服務(wù)能力。余下來(lái)清一色的都是基于RO多路**的這種結(jié)構(gòu)體系,那么在這個(gè)體系上我們才去檢驗(yàn)這個(gè)*****,實(shí)際上拿一個(gè)IPP的請(qǐng)求來(lái)壓測(cè)看它實(shí)現(xiàn)的質(zhì)量如何,通常來(lái)說(shuō)這部分一旦架構(gòu)體系決定以后,實(shí)測(cè)這個(gè)性能差異不是特別的大,除非說(shuō)是某個(gè)特性一個(gè)實(shí)現(xiàn)另一個(gè)沒(méi)實(shí)現(xiàn)這種情況,我們測(cè)出來(lái)的差異通常是在10%-20%上下波動(dòng)而已。

lua目前最高的版本是5.2,你們現(xiàn)在使用的是哪個(gè)版本?

清無(wú):我們現(xiàn)在使用的是5.1.2,后面那個(gè)是補(bǔ)丁號(hào)。

如果我認(rèn)為它的版本越高,性能越強(qiáng)你認(rèn)為對(duì)嗎?

清無(wú):呵呵,不太對(duì)。對(duì)于lua來(lái)說(shuō)每一個(gè)版本的變化意味著它將加入新的語(yǔ)法元素或者變更了內(nèi)部的一些實(shí)現(xiàn)的方式。嚴(yán)格意義上并不說(shuō)明它的性能就好,比如對(duì)5.2和5.1來(lái)說(shuō),不管對(duì)于環(huán)境表或者其他的一些機(jī)制的修改上面,嚴(yán)格的來(lái)說(shuō)他都是一種新的語(yǔ)言了。所以目前來(lái)說(shuō)遷移到5.2最大的障礙其實(shí)還是5.2里面對(duì)于底層接口的這種概念的變化。因?yàn)?.1里面對(duì)于//形成隔離//方面下了很多工夫,然后使用它的全局表加環(huán)境表這種機(jī)制,但是5.2里面徹底取消了全局表的概念,也取消了CU級(jí)別上一系列對(duì)環(huán)境表操作的接口,對(duì)我們來(lái)說(shuō)肯定是不能平滑的遷移到5.2,如果有這個(gè)需求的話,我們可以做,但目前還沒(méi)有看到這個(gè)需求。另外一個(gè)阻礙我們升級(jí)版本號(hào)的問(wèn)題是LuaJIT,luaJIT的性能比標(biāo)準(zhǔn)的lua要高很多,所以//深層//里面我們通常用JIT,但是luaJIT目前對(duì)lua5.2的支持并不是那么緊,它目前還是以5.1為主,所以這塊我沒(méi)可能較長(zhǎng)的時(shí)間跟著luaJIT的腳步來(lái)。

據(jù)我了解lua的特點(diǎn)是體積小、快速、簡(jiǎn)單,作為獨(dú)立編程并不是它的主要使用方式,因?yàn)樗幌駄ava那樣有一個(gè)完善的庫(kù),必須嵌入到其他的大型語(yǔ)言中才能發(fā)揮出它的并發(fā)能力和靈活性。你們目前的主語(yǔ)言是什么?

清無(wú):實(shí)際上我們是分場(chǎng)景,根據(jù)具體的業(yè)務(wù)場(chǎng)景來(lái)選擇最合適的語(yǔ)言。對(duì)一淘數(shù)據(jù)庫(kù)來(lái)說(shuō)像Java,PHP,C++和lua都用。

在我的印象中很多人還是選擇nginx+php這種組合搭配,你的選擇是nginx+lua,那么nginx+lua比和php的組合優(yōu)勢(shì)在哪里?

清無(wú):首先,Nginx+php之間是要有進(jìn)程之間通信的,這樣以來(lái)基礎(chǔ)的性能開(kāi)銷就很大。lua是嵌在Nginx進(jìn)程內(nèi)部的,它不需要有兩套進(jìn)程在那里獨(dú)立工作。所以這塊從結(jié)構(gòu)上來(lái)說(shuō)就有決定性的優(yōu)勢(shì)在里面。再加上線程之間通訊的時(shí)候需要大量的反序列化和序列化的工作,然后兩套進(jìn)程帶來(lái)額外情況是更多的進(jìn)程更多的切換開(kāi)銷,所以單機(jī)上面Nginx_php要比Nginx_lua要低很多。但是相對(duì)來(lái)說(shuō)仍然要回到我們做什么事情上面,因?yàn)镹ginx_lua目前最大的劣勢(shì)就是周邊的模塊相當(dāng)?shù)牟唤∪?,我們需要大量的時(shí)間來(lái)積累這些模塊。php積累了十幾年的時(shí)間了,如果說(shuō)你對(duì)性能的要求并不是那么高,我的并發(fā)數(shù)就是幾十,那么你用php就是最合適的。但是如果像一淘數(shù)據(jù)的數(shù)據(jù)接口,機(jī)器數(shù)就那么一點(diǎn),因?yàn)槲业拇罅砍杀驹贛ySQL集群上面,它是這塊的主力,那么對(duì)外的數(shù)據(jù)接口我希望盡可能降成本,并發(fā)數(shù)又非常大,php肯定是不行,那么我們就要選擇Nginx_lua。但這塊的話對(duì)模塊的劣勢(shì)看起來(lái)不是那么大,因?yàn)樗倪壿嬒鄬?duì)來(lái)說(shuō)較為固定,我們可以忍受這樣的成本,我們?nèi)檫@個(gè)邏輯來(lái)定制一些模塊。

你認(rèn)為目前nginx+lua能滿足你現(xiàn)在的需求嗎?有沒(méi)有嘗試或?qū)ふ移渌罴训拇顧n?

清無(wú):對(duì)于我們數(shù)據(jù)接口的這部分需求是完全可以滿足的,至于其他的需求我們還要具體發(fā)現(xiàn),尋找最佳決解方案。因?yàn)樵谟?jì)算機(jī)行業(yè)沒(méi)有一招吃遍天這種事。

作為一名技術(shù)架構(gòu)師,在性能這塊你認(rèn)為到何處為止?還是無(wú)止境的追求?

清無(wú):這個(gè)要看我們是在做生意還是在個(gè)人事情,如果是在公司,比如在具體的事情上面,然后是一個(gè)團(tuán)隊(duì)協(xié)作的情況下,那么盲目的追求性能的極限是一個(gè)不合適的行為,因?yàn)槟愕淖非笫且冻鱿鄳?yīng)的成本和開(kāi)銷的,而往往在一個(gè)企業(yè)的環(huán)境里面這個(gè)是不可容忍的。最合適的架構(gòu)往往是針對(duì)你去解決問(wèn)題的那個(gè)架構(gòu),而不是去追求效率最高的架構(gòu)。所以我們具體在企業(yè)里面做項(xiàng)目的時(shí)候,顯然適可而止是最好的。蓋過(guò)了你這個(gè)用戶的最大需求你就沒(méi)必要去付出更多的精力來(lái)做,因?yàn)槠渌膯?wèn)題有很多,你沒(méi)必要停留在性能這個(gè)問(wèn)題上,性能只是其中的一個(gè)問(wèn)題,在一個(gè)問(wèn)題上沒(méi)必要投入太大的精力。但是,從開(kāi)發(fā)人員個(gè)人的角度來(lái)說(shuō),追求性能的極限是一個(gè)很好的想法和行為,因?yàn)殚_(kāi)發(fā)者自己對(duì)性能極限的追求體現(xiàn)出對(duì)完美的追求,對(duì)于完美的追求意味著它可以從上層到底層的專研,而專研是提升個(gè)人素質(zhì)最有效的動(dòng)力。所以是分開(kāi)來(lái)看這個(gè)問(wèn)題。

你剛剛在大會(huì)上也講了一些nginx lua的優(yōu)勢(shì)和劣勢(shì),能不能在這里也給我們網(wǎng)友分享一些?

清無(wú):剛才也說(shuō)了一個(gè)是周邊模塊不完善,不健全。如果你用到的這個(gè)東西比較復(fù)雜的時(shí)候可能生產(chǎn)力上不去,目前Nginx_lua最適合的人員是數(shù)據(jù)接口層,以及所有的網(wǎng)絡(luò)中間層,你需要最求并發(fā),高性能的網(wǎng)絡(luò)中間層。因?yàn)樗旧淼倪壿嬒鄬?duì)來(lái)說(shuō)比較簡(jiǎn)單,或者完全用lua本身就可以變現(xiàn)出來(lái),這個(gè)用起來(lái)收效比例是最大的。那么如果你目前要做一個(gè)復(fù)雜的WEB訪問(wèn)站,有大量模板要套,有大量的復(fù)雜邏輯嵌在里面,然后要訪問(wèn)mail要訪問(wèn)其他服務(wù)的話,目前來(lái)說(shuō)我覺(jué)得還是php或者其他比較成熟的語(yǔ)言。就我們目前應(yīng)用來(lái)說(shuō)也是這樣,中間層會(huì)大量的使用lua,但是前端展現(xiàn)層的話要么全部移到瀏覽器上面用JS+模板的形式來(lái)實(shí)現(xiàn),要么就是用PHP這樣來(lái)做。另外的劣勢(shì)就是調(diào)試的輔助工具不太多,因?yàn)楦呒?jí)點(diǎn)的php程序員會(huì)往往會(huì)使用XDebug或者其它的調(diào)試工具,可以單步調(diào)試,在線調(diào)試。跟php相比目前還欠缺這樣的一個(gè)機(jī)制。到時(shí)候我們會(huì)仿照XDebug 去實(shí)現(xiàn)DPT V2協(xié)議,我們實(shí)現(xiàn)兼容DPT V2這樣的一種機(jī)制內(nèi)連到Nginx_lua里面,那樣Nginx_lua也可以單步調(diào)試。到時(shí)候我們也會(huì)分享給大家。

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

2012-07-25 22:15:00

Nginxlua

2011-12-14 19:10:32

淘寶清無(wú)NginxLua

2012-07-13 09:58:06

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

2012-07-31 16:50:17

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

2011-11-01 12:15:16

TechEd 2011

2010-08-26 08:57:04

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

2010-11-22 17:06:34

基礎(chǔ)業(yè)務(wù)管理

2011-08-25 17:29:40

LUAPHPWEB

2011-09-08 13:50:51

51cto 51CTO

2011-12-23 16:13:25

2011-01-04 15:29:30

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

2009-11-13 04:23:12

云計(jì)算Gartner專訪

2011-09-08 13:26:27

51cto 51CTO

2009-08-07 11:45:58

云計(jì)算SOA虛擬化

2014-03-05 18:57:31

2017-04-13 15:15:17

Netflix ZuuNginx性能

2011-05-20 08:56:55

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

2010-12-10 13:21:47

51CTO博客大賽

2011-05-11 13:01:55

2010-04-02 22:02:19

蓋國(guó)強(qiáng)NoSQL
點(diǎn)贊
收藏

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