多路服務器的價值是什麼?與分佈式集羣有何區別?

簡單來說,多路服務器是爲了增強服務器的性能,CPU主要承擔的就是計算的功能,多一個CPU自然在性能上肯定會更強。

我們將CPU比作一個運輸卡車,貨物就是我們要計算的信息,CPU運算就類似於卡車運輸貨物。同一時間運送的貨物越多,說明CPU運算能力越強。

單CPU系統就相當於一輛卡車在一條車道上跑。由於車少,所以運輸能力有限。以往CPU生產廠商都是在不斷的提高卡車的載重即主頻來提高他的運輸能力。

雙CPU系統-價格相當於兩輛卡車在兩條相交的車道上跑。每輛車大部分都在自己的路上跑,但偶爾會相遇、停車避讓。由於車多路寬,所以雙CPU運輸能力最強。

所以我們可以從CPU數量上簡單來判斷服務器的性能,一般來說,雙路的服務器要比單路的要強。但這並不絕對。

02.如果你想成爲技術專家,還需要知道下面的

有人可能會說,多加個CPU服務器性能就強,那麼我們需要高性能服務器就多加幾個CPU唄,兩個不行就四個,四個不行就八個,甚至成百上千個。這不就解決服務器性能不夠的問題了嗎?

答案肯定是不行的,CPU僅能影響服務器的一定的性能,服務器的性能除了跟CPU相關,更重要的還跟服務器的I/O速度有關。

衆所周知,不論至強還是Power,處理器主頻都超過了1Ghz,也就是說時鐘週期都遠遠小於1ns,處理器在一個時鐘週期內可以處理多條指令,平均到每條指令的處理時間就更短了。

相對而言,I/O訪問速度就要慢很多,CPU訪問自身Cache一定是最快的,延遲在10ns級別,相當於幾十個時鐘週期;訪問本地內存延遲可以控制在100ns以內,跨CPU節點訪問內存,其延遲就到了us級別;如果是要訪問PCI-E上的設備,則要經過VFS、Diver等多個層次,就算通過DMA訪問,其延遲也至少在10us以上。

在當前的技術條件下,I/O是系統性能提高的瓶頸,如果I/O問題沒有解決好,處理器數量的增加不一定會帶來性能的提升,極端情況下,新增的資源有可能被I/O全部消耗掉。單純的增加CPU的數量並不能大幅提升服務器性能。

所以,如何建立一個I/O模型,儘量降低I/O對系統性能的開銷,是多路服務器設計必須要考慮的關鍵問題之一。目前來說,四路服務器在I/O性能方面已經達到一個極限,在多路的產品反而因爲I/O的影響達不到想要的性能。這也是目前服務器廠商服務器產品最多也就基本在四路的原因。

03. 分佈式集羣不是也能提供更高性能,爲何還要多路服務器?

有人會問,多路服務器不就是增加了服務器的性能了嗎?我通過分佈式集羣不一樣可以提升性能嗎?

服務器節點內部通信雖然會制約系統性能的提升,但仍遠遠優於節點外通信,節點外通訊的延遲普遍在ms級別,最高甚至達到秒級,如果處置不當會嚴重降低系統性能,影響實際業務,這就是大規模在線交易處理系統必須採用多路服務器的主要原因。

在線交易處理必須基於同一數據源,各處理器之間必須頻繁通信才能保證數據一致性,如果採用集羣技術,服務器的各個處理器核心將用較長的時間等待數據,這種延遲將隨着節點數量的增加飛昇,系統很快就會出現擴展瓶頸。

正在被各大互聯網運營商廣泛採用的分佈式技術其實是個反例,很多傳統行業用戶也以爲分佈式技術能夠更好地承載他們的業務。其實這是一種誤解,兩類系統在設計原則上存在着根本的不同。

以採用了全分佈式架構的阿里巴巴爲例,後臺確實經過了雙十一那種近乎災難式的壓力考驗,但是很多天貓購物的人也會遇到虛假下單成功、支付完成後訂單仍顯示未支付等問題,這些問題都是各個系統之間數據不一致導致的,如果阿里巴巴能夠在關鍵系統中採用多路服務器將節點間通訊轉化爲節點內通訊,降低內部交互壓力,系統表現肯定會好得多。

這些問題對於淘寶來講僅是一個客戶體驗問題,等雙十一結束後,可以通過人工或者其他手段來解決,但是銀行、電信等行業用戶對於這類問題很難容忍,在數據一致性問題上他們從不探討,所以他們通常把分佈式技術都用在非生產性系統中,生產系統採用的都是清一色的大型服務器和關係數據庫,傳統交易處理方式仍然不可替代。

這也是爲何需要多路高性能服務器的主要原因。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章