官术网_书友最值得收藏!

1.3.2 高可擴展性

高可擴展性是指系統能夠在運行過程中自由地對系統內部節點或現有功能進行擴充,而不影響現有服務的運行。傳統的軟件系統或單機軟件在更新過程中,往往會先停機,然后升級,當一切更新配置都結束后,最后重新啟動應用程序。另外,很多傳統的系統是“閉環系統”這里的閉環系統指的是那些完全通過內部通信,而不需要和外部通過協議進行數據交換的系統。,其擴展能力非常有限,它們絕大多數使用私有協議進行消息通信,缺乏開放的API也是導致系統擴展能力低下的主要原因之一。因此,在對現有系統進行擴展的過程中,由于私有接口的局限性和不完善性,擴展工作變得異常復雜,有時甚至需要對接口進行更新和定義,才能滿足需求,而與其他系統進行集成則變得更加困難:沒有開放接口,需要中間層做轉換。這些原因都導致了系統在擴展性方面存在難度大和成本高的問題。

我們來看一個現代分布式系統設計的案例:Storm實時處理系統(以下簡稱Storm)。在Storm中,節點主要由Spout和Bolt兩大類組成,我們可以把這種關系類比到MapReduce過程,Spout作為消息源會將搜集到的數據發送到Storm計算拓撲中,再通過一系列消息處理單元Bolt進行分布式處理,最終將處理結果合并得到最終結果。在這里,消息處理單元Bolt是分布式數據處理的核心組件,每當消息處理單元的數據處理完成后,它就會把當前階段處理的數據發送給下一級消息處理單元做進一步處理。那么,這些消息處理單元之間的元組數據則主要通過開源JSON格式進行傳遞。利用這種機制,我們看到了一個很好的現象,那就是我們可以隨意在消息處理單元后進行擴充,如果數據處理的結果還達不到我們的需求,只需在Storm計算拓撲中繼續追加新的消息處理單元,直至滿足我們的需求。Storm使用JSON作為節點之間元組數據發送的紐帶,一方面解決了私有接口難以擴展和集成的問題,另一方面解決了Storm拓撲結構的后續節點擴充問題。圖1-1所示為基本的Storm實時處理系統拓撲結構圖,其中每個方框都是一個節點。

圖1-1 基本的Storm實時處理系統拓撲結構

因此,在設計和開發我們自己的實時處理系統的過程中,高可擴展性是必須考慮的問題之一,我們會在后續章節進行編程實戰的時候對此問題做深入分析。

主站蜘蛛池模板: 罗源县| 柘荣县| 乌鲁木齐市| 合阳县| 探索| 东城区| 长乐市| 沂水县| 防城港市| 四子王旗| 涡阳县| 霞浦县| 图们市| 罗山县| 京山县| 永城市| 荆门市| 容城县| 城固县| 永川市| 饶平县| 惠安县| 沙河市| 宜川县| 通河县| 榕江县| 建瓯市| 江川县| 宁津县| 稻城县| 武清区| 鹤壁市| 富源县| 宁武县| 安乡县| 绿春县| 东乡| 依兰县| 商丘市| 巩义市| 溆浦县|