清華架構師整理分散式系統檔案:從實現原理到系統實現,收藏吧

2020-09-30 15:01:03

微服務、雲原生、Kubernetes、Service Mesh是分散式領域的熱點技術,它們並不是憑空出現的,一定繼承了某些「前輩」的優點。我們不僅要了解這些技術,還要深入理解其發展脈絡、原理等,才能遊刃有餘地將其用於現有的專案開發或老系統改造中。

而這些技術有一個共同的特點,就是全網都在大談分散式,其實主要就是因為資料量的爆發增長,我們的網站等應用承擔了他本不應該承受的壓力,這個時候,中國古人的訓誡就起了很大的作用:眾人拾柴火焰高,團結就是力量,所以,將壓力分散到多個不同的點上就可以解決這個問題,分散式由此產生

我們現在看一下分散式系統到底是怎麼回事?

分散式系統

分散式系統是其元件分佈在連網的計算機上,元件之間通過傳遞訊息進行通訊和動作協調的系統。該定義引出了分散式系統的下列重要特徵:元件的並行性、缺乏全域性時鐘、元件故障的獨立性。

我們看一下現代分散式系統的幾個例子,包括Web搜尋、多人線上遊戲和金融交易系統,也考察今天推動分散式系統發展的關鍵趨勢:現代網路的泛在特性,移動和無處不在計算的出現,分散式多媒體系統不斷增加的重要性,以及把分散式系統看成一-種實用系統的趨勢。接著本章強調資源共用是構造分散式系統的主要動機。資源可以被伺服器管理,由客戶存取,或者它們被封裝成物件,由其他客戶物件存取。

構造分散式系統的挑戰是處理其元件的異構性、開放性(允許增加或替換元件)、安全性、可伸縮性(使用者的負載或數量增加時能正常執行的能力)、故障處理、元件的並行性、透明性和提供服務品質的問題。最後,以Web作為一個大規模分散式系統的例子進行了討論,並介紹了它的主要特徵。

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

需要這份檔案的,關注+轉發後,私信「資料」即可檢視獲取方式

微服務、雲原生、Kubernetes、Service Mesh

基於上面分散式系統的設計原則,在現實開發環境中,產生了以下的這些技術,包括微服務、雲原生、Kubernetes、Service Mesh等,我們接著看

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

直接進入正題

RPC

每個分散式系統都離不開多程序的通訊問題,包括本機上多程序之間的IPC通訊和基於網路的遠端通訊技術,後者是分散式系統架構中的核心和關鍵基礎技術之一,就遠端通訊而言,拋開各種專用系統的遠端通訊協定如NFS、FTP、SNMP、SMTP、POP3不說,各種通用的遠端通訊技術也在不斷髮展和變化,比如從最古老的RPC遠端通訊技術到曾經風靡一時的SOAP(Web Service)協定,再到後面紅極一時的HTTP REST。如今,由於行動網際網路和巨量資料時代的興起,支援多語言與高效能傳輸的各種RPC架構再次成為熱點技術。

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

記憶體

除了CPU,記憶體大概是最重要的計算資源了。基本成為分散式系統標配的快取中介軟體、高效能的資料處理系統及當前流行的巨量資料平臺,都離不開對計算機記憶體的深入理解與巧妙使用。在本章中我們將探索這個讓人感到既熟悉又複雜的領域。

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

分散式儲存

分散式檔案系統是大型分散式系統中非常重要的基礎設施.Hadoop中最重要的技術不是MapReduce,而是 HDFS。除了HDFS,Spark還可以與老牌分散式檔案系統GlusterFS結合使用。OpenStack中最重要且能獨立運營的子系統是分散式物件儲存系統Swift。Docker及 Kubernetes容器技術依然需要通過分散式檔案系統實現批次處理任務中的共用儲存問題。更不用說,無數電商系統都需要一個分散式檔案系統來儲存海量照片。因此,掌握分散式儲存相關的知識和技能,對於一名分散式系統架構師來說非常重要。

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

分散式計算

不管是網路、記憶體還是儲存的分散式,它們的最終目標都是實現計算的分散式:資料在各個計算機節點上流動,同時各個計算機節點都能以某種方式存取共用資料,最終分散式計算後的輸出結果被持久化儲存和輸出。分散式計算作為分散式系統裡最重要的一個能力和目標,也是巨量資料系統的關鍵技術之一。經過多年的發展與演進,目前業界已經存在很多成熟的分散式計算開源程式設計框架和平臺。作為架構師,我們應該儘可能地瞭解和掌握這些框架和平臺。

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

訊息中介軟體

在前面的章節中,我們學習了構建一個分散式系統所必需的各種基本知識和技能,比如分散式系統的基礎理論、網路程式設計技術、RPC架構、記憶體計算、分散式檔案系統、分散式計算框架等,但僅僅掌握這些內容還是遠遠不夠的,我們還需要學習和掌握分散式系統中常用的一些中介軟體,這些中介軟體主要用於分散式系統中常見的一些業務場景:資料全文檢索、紀錄檔和訊息處理、資料庫的分片、網站的負載均衡等。由於篇幅有限,本章只對全文檢索與訊息佇列這兩個用途廣泛又相對複雜的中介軟體進行全面介紹。

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

微服務架構

微服務架構是當前很熱門的一個概念,是技術發展的必然結果。微服務架構也不是一個縹緲、空洞的術語,它的核心理念與架構原則是實實在在的,雖然微服務架構沒有公認的技術標準和規範草案,但業界已經有一些很有影響力的開源微服務架構平臺,架構師可以根據公司的技術實力並結合專案的特點來選擇某個合適的微服務架構平臺,穩妥地實施專案的微服務化改造或開發程序。

2020不會分散式怎麼可以,來看清華架構師整理的最全分散式

 

好了,關於分散式,我就介紹到這裡把,從原理到實踐都有了,有需要這兩份檔案的朋友,點贊後,關注公眾號:Java架構師聯盟,即可檢視獲取方式