新聞中心
在如今互聯(lián)網(wǎng)技術(shù)高速發(fā)展的背景下,分布式技術(shù)已經(jīng)是各種技術(shù)革命的先驅(qū),它早已不再局限于傳統(tǒng)的互聯(lián)網(wǎng)等應(yīng)用場景。諸如IoT物聯(lián)網(wǎng)、Mobile移動計算、AI人工智能、Blockchain區(qū)塊鏈、Cloud云計算、Data大數(shù)據(jù)、Edge邊緣計算,無不都是以分布式技術(shù)為基石。在互聯(lián)網(wǎng)這個領(lǐng)域,分布式技術(shù)更加是各大型互聯(lián)網(wǎng)公司和大型項目必然具備的技能。毫不夸張地說,沒有分布式技術(shù)就沒有如今的互聯(lián)網(wǎng),也就沒有諸如阿里巴巴、騰訊這樣的巨無霸互聯(lián)網(wǎng)公司。

雖然各大互聯(lián)網(wǎng)公司都有或多或少的裁員計劃,但是分布式技術(shù)人才卻依然是各大公司爭奪的焦點,因為哪個公司更好的掌握了分布式技術(shù),哪個公司就更容易在新一輪技術(shù)浪潮中獲得主動。
接下來就通過分布式技術(shù)的起源來說明什么是分布式技術(shù)
單兵模式:單機(jī)模式
1946年情人節(jié)發(fā)布的ENIAC是世界上的第一臺通用計算機(jī),它占地170平米重達(dá)30噸,每秒可進(jìn)行5000次加法或者400次乘法運算,標(biāo)志著單機(jī)模式的開始。
所謂單機(jī)模式是指,所有應(yīng)用程序和數(shù)據(jù)均部署在一臺電腦或服務(wù)器上,由一臺計算機(jī)完成所有的處理。
以火車票系統(tǒng)為例,包括用戶管理、火車票管理和訂單管理等模塊,每個模塊都包含自己的數(shù)據(jù),單機(jī)模式下,所有的模塊和數(shù)據(jù)均會部署在同一臺計算機(jī)上,整個系統(tǒng)所有的功能都部署在一臺計算機(jī)上。
如下圖,藍(lán)色虛線代表一臺計算機(jī)。
圖片
這種模式的好處是功能、代碼和數(shù)據(jù)集中,便于維護(hù)、管理和執(zhí)行。
這種模式的缺點是對于大型系統(tǒng)來說,牽一發(fā)而動全身,一個簡單功能的修改,就要以短時間停止整個系統(tǒng)的代價來進(jìn)行升級系統(tǒng)。
再就是隨著系統(tǒng)的不斷更新迭代,系統(tǒng)會越來越龐大,這對單個計算機(jī)的處理能力有極高的要求,單個計算機(jī)的處理能力取決于CPU和內(nèi)存等,但硬件的發(fā)展速度和性能是有限的,而且升級硬件的性價比也是我們要考慮的,由此決定了CPU和內(nèi)存等硬件的性能將成為單機(jī)模式的瓶頸。
然而所有的功能及數(shù)據(jù)都部署在一臺計算機(jī)上面,那么系統(tǒng)能否正常運行就依賴于這臺計算機(jī)是否健壯,計算機(jī)一旦宕機(jī),那么整個系統(tǒng)將癱瘓,不可用。
歸納一下,單機(jī)模式的主要問題是:性能受限、升級困難、存在單點失效問題。
多兵模式:數(shù)據(jù)分布式
單兵模式是就像是一個士兵執(zhí)行多項任務(wù),當(dāng)任務(wù)越來越多的時候,一個士兵累死也完不成目標(biāo),那就多個士兵一起分做這些任務(wù)。
為解決單機(jī)模式的問題,并行計算得到了發(fā)展,進(jìn)而出現(xiàn)了數(shù)據(jù)并行(也叫作數(shù)據(jù)分布式)模式。
在這個模式下,數(shù)據(jù)并行強(qiáng)調(diào)對數(shù)據(jù)進(jìn)行拆分,并且應(yīng)用程序并行運行,也就是將相同應(yīng)用程序部署在多臺計算機(jī)上。要達(dá)到這個目的,我們必須首先把單機(jī)模式中的應(yīng)用程序和數(shù)據(jù)分離,然后再實現(xiàn)對數(shù)據(jù)的拆分。這里所說的任務(wù)就是提交的請求。
以鐵路售票系統(tǒng)為例,整個系統(tǒng)包含用戶管理模塊,火車票管理模塊,訂單模塊。
第一步,將應(yīng)用與數(shù)據(jù)分離,分別部署到不同的服務(wù)器上:
第二步,對數(shù)據(jù)進(jìn)行拆分,比如把同一類型的數(shù)據(jù)拆分到兩個甚至更多的數(shù)據(jù)庫中,這樣應(yīng)用服務(wù)器上的任務(wù)就可以針對不同數(shù)據(jù)并行執(zhí)行了。
對于鐵路售票系統(tǒng)來說,根據(jù)線路將用戶、火車票和訂單數(shù)據(jù)拆分到不同的數(shù)據(jù)庫中,部署到不同的服務(wù)器上,比如京藏線的數(shù)據(jù)放在數(shù)據(jù)庫服務(wù)器1上的數(shù)據(jù)庫中,滬深線的數(shù)據(jù)放在數(shù)據(jù)庫服務(wù)器2上的數(shù)據(jù)庫中。
圖片
這種模式的好處表現(xiàn)為以下兩點:
- 可以將大量的任務(wù)分門別類的分配給多臺應(yīng)用服務(wù)器,每個應(yīng)用服務(wù)器對應(yīng)的數(shù)據(jù)也是獨立的,提高了數(shù)據(jù)訪問效率。這樣一來,相同的時間內(nèi)可以讓大量的任務(wù)并行處理,相比于單機(jī)模式,相同的時間內(nèi)能完成更多的任務(wù)量。
- 計算機(jī)成本方面,因為多臺部署,每臺計算機(jī)分?jǐn)側(cè)蝿?wù)數(shù),實際每臺計算機(jī)處理的任務(wù)數(shù)不是很多,對計算機(jī)的配置要求不是很高,因此成本方面短期內(nèi)可能會略高于單機(jī)模式,但從長遠(yuǎn)來看,必然是低于單機(jī)模式的。
這種模式的缺點表現(xiàn)為以下兩點:
- 數(shù)據(jù)分布式模式的運維復(fù)雜度相比于單機(jī)模式高很多:
首先每臺應(yīng)用服務(wù)器分?jǐn)側(cè)蝿?wù)數(shù),那么哪些任務(wù)由哪臺應(yīng)用服務(wù)器處理這個問題需要有方案解決,一般是通過負(fù)載均衡器分發(fā)任務(wù),那是實現(xiàn)負(fù)載均衡器無疑提高了系統(tǒng)的復(fù)雜性。
其次隨著業(yè)務(wù)發(fā)展,分?jǐn)偟矫颗_應(yīng)用服務(wù)器的任務(wù)數(shù)變的很大的時候,應(yīng)用服務(wù)器頻繁對數(shù)據(jù)庫進(jìn)行訪問,很容易達(dá)到數(shù)據(jù)庫io瓶頸,此時就需要有方案解決數(shù)據(jù)庫io問題,一般采用的是數(shù)據(jù)庫讀寫分離,在進(jìn)行讀寫分離的時候又要特別注意主庫和從庫的數(shù)據(jù)一致性問題,這無疑提高了整個系統(tǒng)的復(fù)雜性。
再就是業(yè)務(wù)中往往會使得一批數(shù)據(jù)成為熱點數(shù)據(jù),此時會導(dǎo)致數(shù)據(jù)庫訪問頻繁,即便是讀寫分離也無法抗住這瞬間爆發(fā)的請求量,這個時候不得不引入緩存機(jī)制,將數(shù)據(jù)緩存到內(nèi)存,但是內(nèi)存是有限的,這就要求緩存機(jī)制必須具備緩存失效,緩存預(yù)熱等功能,這無疑增加了系統(tǒng)的復(fù)雜性。
不難看出數(shù)據(jù)分布式模式本來就是任務(wù)數(shù)增多后的產(chǎn)物,那系統(tǒng)的復(fù)雜性也理所應(yīng)當(dāng)會升高,這無可厚非,好在目前市場上對以上的問題都有成熟的解決方案。
2.數(shù)據(jù)分布式模式實現(xiàn)了多請求并行處理,但是并沒有從根本上解決單個請求的性能問題,比方說一個請求在單機(jī)模式下需要幾天甚至更長的時間來完成,數(shù)據(jù)分布式模式下并沒有減少這個請求的完成時間。
由此可見,數(shù)據(jù)并行模式的主要問題是:對提升單個任務(wù)的執(zhí)行性能及降低時延無效。
多兵種模式:任務(wù)分布式
多兵模式將大量的任務(wù)進(jìn)行分?jǐn)偺幚?,每個大兵將任務(wù)從頭到尾處理完成,這樣保證了整體任務(wù)的處理效率,但是卻無法提高單個任務(wù)的處理效率。假設(shè)多兵模式是將同個兵種10名士兵組成一個團(tuán)體來完成任務(wù),那么多兵種模式就是將多個兵種的士兵一共10名組成一個團(tuán)體來完成任務(wù),在這個團(tuán)體中可能每個兵種有一個或者兩個或者三個士兵,在執(zhí)行任務(wù)的時候多個不同兵種的士兵共同完成一個任務(wù)。多兵種模式就是將任務(wù)進(jìn)行拆分,提高單個任務(wù)的效率
任務(wù)分布式指的是,將單個復(fù)雜的任務(wù)拆分為多個子任務(wù),從而使得多個子任務(wù)可以在不同的計算機(jī)上并行執(zhí)行。 任務(wù)分布式模式強(qiáng)調(diào)的是對任務(wù)進(jìn)行拆分。就是將一個復(fù)雜的業(yè)務(wù)中的一條任務(wù)拆分成幾個子任務(wù),這些子任務(wù)中有個是需要串行執(zhí)行,有的則可以并行執(zhí)行,而那些可以并行執(zhí)行的子任務(wù)就是提升整個任務(wù)效率的關(guān)鍵。
我們?nèi)砸澡F路售票系統(tǒng)為例,當(dāng)購買火車票的時候,整個購買業(yè)務(wù)流程為:查詢用戶,查詢火車票,下單購買。任務(wù)拆分前,這個業(yè)務(wù)流程是串行的,耗時為這三個操作的時間和,任務(wù)分布式模式下的做法是將用戶管理、火車票管理、訂單管理拆分成多個子系統(tǒng)分別運行在不同的計算機(jī)或服務(wù)器上。這樣一來,查詢用戶和查詢火車票的子任務(wù)是可以同時進(jìn)行的,總耗時不再是兩者之和,而是兩者中最大的那個耗時,如下圖所示:
圖片
上面說的火車票的例子比較很籠統(tǒng)的,我們再拿一個電商的項目來說明下:
比如我們要買一個商品,商品頁面做了什么呢?商品頁面需要展示商品列表,推薦列表,商品類別展示,商家信息等等,在單機(jī)模式下,這些信息都將是一臺計算機(jī)完成查詢的,那么這些操作將是串行的,無疑查詢時間是很長的,你或許會說利用多線程可以將不同的查詢并行操作,這樣也是可以減少耗時,但是你要知道不管有多少個線程并行,單臺計算機(jī)上的多線程并行其實都是cpu交替運行(這里不考慮多cpu多核),說白了無非是在充分壓榨cpu的基礎(chǔ)上依然保持串行查詢。任務(wù)分布式模式下就會將推薦系統(tǒng)分離出來單獨部署在一臺服務(wù)器,將商品系統(tǒng)分離出來單獨部署一臺服務(wù)器,商家系統(tǒng)分離出來單獨部署一臺服務(wù)器,這樣在查詢商品列表的時候,商品系統(tǒng)可以利用多線程的方式并行調(diào)用推薦系統(tǒng)和商家系統(tǒng)分別查詢推薦列表和商家信息。這樣才能真正的實現(xiàn)并行查詢。
任務(wù)分布式的思想其實是任務(wù)拆分,但是拆分后的任務(wù)并不要求一定可以保持并行,對于一個復(fù)雜的任務(wù),如果拆分出來的任務(wù)都必須保持串行才符合業(yè)務(wù),那么拆分依然是有意義的,因為將一個大的系統(tǒng)拆分成多個小的系統(tǒng)后,當(dāng)某個小功能需要升級時,只需要升級那個對應(yīng)的小的子系統(tǒng)即可,避免了牽一發(fā)而動全身,而且代碼分開維護(hù)也會降低開發(fā)成本,這也是分而治之的上乘思想。
**多兵種模式在提供了更好的性能、擴(kuò)展性、可維護(hù)性的同時,也帶來了設(shè)計上的復(fù)雜性問題 **
分布式是什么?
說了半天分布式發(fā)展歷程,那到底什么是分布式呢?
顧名思義,其實就是分開部署的方式,所謂分開是指龐大的數(shù)據(jù)體系分成小的可以獨立的數(shù)據(jù)體系,復(fù)雜的系統(tǒng)拆分成功能單一的小的子系統(tǒng),拆分后的獨立體系各自部署在獨立的計算機(jī)上運行。換個說法就是將相同或相關(guān)的程序運行在多臺計算機(jī)上,從而實現(xiàn)特定目標(biāo)的一種計算方式。
從這個定義來看,數(shù)據(jù)并行、任務(wù)并行其實都可以算作是分布式的一種形態(tài)。從這些計算方式的演變中不難看出,產(chǎn)生分布式的最主要驅(qū)動力量,是我們對于性能、可用性及可擴(kuò)展性的不懈追求。
實現(xiàn)分布式涉及到哪些內(nèi)容呢?
我們上面只是對概念的闡述,其實實現(xiàn)分布式還是比較復(fù)雜的,會涉及到很多技術(shù),但是仔細(xì)總結(jié)還是有章可循的,下圖基本可以概括分布式技術(shù)全部了吧。
圖片
這張圖是按照業(yè)務(wù)的架構(gòu)層次線,自底向上按照資源、通信、數(shù)據(jù)與計算的維度,梳理出了4個橫向技術(shù)層次:
- 分布式資源池化
- 分布式通信
- 分布式數(shù)據(jù)存儲與管理
- 分布式計算
這樣的劃分符合業(yè)務(wù)架構(gòu)設(shè)計的一般規(guī)律,即“在一定資源上,進(jìn)行一定通信,通過一定計算,完成一定數(shù)據(jù)的加工和處理,從而對外提供特定的服務(wù)”。
其實上面的這句話是分布式技術(shù)的基礎(chǔ):既然是分布式系統(tǒng),那么計算機(jī)(應(yīng)用程序)之間一定要通信,每個計算機(jī)(應(yīng)用程序)一定會有數(shù)據(jù)存儲,也一定會有業(yè)務(wù)邏輯處理(計算),還有不同的業(yè)務(wù)子系統(tǒng)對計算機(jī)配置的以來程度也不一樣。
那么,通信是哪臺計算機(jī)(應(yīng)用程序)對哪臺計算機(jī)(應(yīng)用程序)通信,存儲是如何存儲,如果是多臺計算機(jī)(應(yīng)用程序)可以提供計算,那么由哪臺計算機(jī)(應(yīng)用程序)最終提供計算,如果多個計算機(jī)(應(yīng)用程序)同時修改共享資源,那么如何保證不會出現(xiàn)數(shù)據(jù)一致性問題,如果計算機(jī)(應(yīng)用程序)宕機(jī),又該如何處理,這些問題的需要一個組織者,這個組織者進(jìn)行協(xié)同,調(diào)度,追蹤這些計算機(jī)(應(yīng)用程序),保證系統(tǒng)的高可用,數(shù)據(jù)一致性,同時還要兼顧性能和擴(kuò)展性。
本文題目:分布式技術(shù):從原理到應(yīng)用全面解析分布式技術(shù)的魅力與未來之分布式起源
文章源于:http://www.dlmjj.cn/article/ccesepg.html


咨詢
建站咨詢
