從一個(gè)簡單的問題開始談起——多路服務(wù)器的性能為什么會(huì)更強(qiáng)?
是因?yàn)樘幚砥鲾?shù)量多嗎?是,不過更重要的原因是,I/O速度快,能夠讓多處理器的性能發(fā)揮出來。在當(dāng)前的技術(shù)條件下,I/O是系統(tǒng)性能提高的瓶頸,如果I/O問題沒有解決好,處理器數(shù)量的增加不一定會(huì)帶來性能的提升,極端情況下,新增的資源有可能被I/O全部消耗掉。
I/O是制約多路服務(wù)器性能的關(guān)鍵因素
眾所周知,不論安騰、至強(qiáng)還是power,處理器主頻都超過了1Ghz,也就是說時(shí)鐘周期都遠(yuǎn)遠(yuǎn)小于1ns,處理器在一個(gè)時(shí)鐘周期內(nèi)可以處理多條指令,平均到每條指令的處理時(shí)間就更短了。
I/O訪問速度就慢得多,CPU訪問自身cache一定是最快的,延遲在10ns級(jí)別,相當(dāng)于幾十個(gè)時(shí)鐘周期;訪問本地內(nèi)存延遲可以控制在100ns以內(nèi),跨CPU節(jié)點(diǎn)訪問內(nèi)存,其延遲就到了us級(jí)別;如果是要訪問PCI-E上的設(shè)備,則要經(jīng)過VFS、Diver等多個(gè)層次,就算通過DMA訪問,其延遲也至少在10us以上。
可以看出,服務(wù)器的I/O耗時(shí)遠(yuǎn)大于計(jì)算,I/O的延遲勢(shì)必將造成處理核心的大量等待周期,所以,如何建立一個(gè)I/O模型,盡量降低I/O對(duì)系統(tǒng)性能的開銷,是多路服務(wù)器設(shè)計(jì)必須要考慮的關(guān)鍵問題之一。
節(jié)點(diǎn)外I/O是災(zāi)難
談完了服務(wù)器內(nèi)部通信,有必要再談一下服務(wù)器外部通信,也就是節(jié)點(diǎn)外通信。
節(jié)點(diǎn)內(nèi)部通信雖然會(huì)制約系統(tǒng)性能的提升,但仍遠(yuǎn)遠(yuǎn)優(yōu)于節(jié)點(diǎn)外通信,節(jié)點(diǎn)外通訊的延遲普遍在ms級(jí)別,最高甚至達(dá)到秒級(jí),如果處置不當(dāng)會(huì)嚴(yán)重降低系統(tǒng)性能,影響實(shí)際業(yè)務(wù),這就是大規(guī)模在線交易處理系統(tǒng)必須采用多路服務(wù)器的主要原因。在線交易處理必須基于同一數(shù)據(jù)源,各處理器之間必須頻繁通信才能保證數(shù)據(jù)一致性,如果采用集群技術(shù),服務(wù)器的各個(gè)處理器核心將用較長的時(shí)間等待數(shù)據(jù),這種延遲將隨著節(jié)點(diǎn)數(shù)量的增加飛升,系統(tǒng)很快就會(huì)出現(xiàn)擴(kuò)展瓶頸。
分布式技術(shù)難以克服I/O瓶頸
但是,正在被各大互聯(lián)網(wǎng)運(yùn)營商廣泛采用的分布式技術(shù)似乎是個(gè)反例,很多傳統(tǒng)行業(yè)用戶也以為分布式技術(shù)能夠更好地承載他們的業(yè)務(wù)。
其實(shí)這是一種誤解,兩類系統(tǒng)在設(shè)計(jì)原則上存在著根本的不同。
以采用了全分布式架構(gòu)的阿里巴巴為例,后臺(tái)確實(shí)經(jīng)過了雙十一那種近乎災(zāi)難式的壓力考驗(yàn),但是很多天貓購物的人也會(huì)遇到虛假下單成功、支付完成后訂單仍顯示未支付等問題,這些問題都是各個(gè)系統(tǒng)之間數(shù)據(jù)不一致導(dǎo)致的,如果阿里巴巴能夠在關(guān)鍵系統(tǒng)中采用多路服務(wù)器將節(jié)點(diǎn)間通訊轉(zhuǎn)化為節(jié)點(diǎn)內(nèi)通訊,降低內(nèi)部交互壓力,系統(tǒng)表現(xiàn)肯定會(huì)好得多。
這些問題對(duì)于淘寶來講僅是一個(gè)客戶體驗(yàn)問題,等雙十一結(jié)束后,可以通過人工或者其他手段來解決,但是銀行、電信等行業(yè)用戶對(duì)于這類問題很難容忍,在數(shù)據(jù)一致性問題上他們從不探討,所以他們通常把分布式技術(shù)都用在非生產(chǎn)性系統(tǒng)中,生產(chǎn)系統(tǒng)采用的都是清一色的大型服務(wù)器和關(guān)系數(shù)據(jù)庫,傳統(tǒng)交易處理方式仍然不可替代。