首頁>技術>

從 RPC到服務治理框架

與一般的HTTP REST框架不同,一個可用的RPC架構不僅解決了遠端呼叫問題,也提供了用於服務註冊和服務發現的基礎設施,比如RMI (Java語言的RPC)裡的RMI Registry,如下圖所示。

在使用RMI時,我們所開發的“遠端物件”(Remote Object)都需要被註冊(Binding)到Registry裡,客戶端(Client〉則首先需要透過Registry 的介面查詢到遠端物件的訪問地址,然後才能發起對遠端物件的“遠端過程呼叫”,將這種模式表達為更抽象的模型,就是如下圖所示的服務註冊和服務發現的通用模型。

從RPC和COBRA發展而來的服務註冊與服務發現模型,被後來者奉為經典。如下所示是ZeroC Ice的實現架構圖,其中登錄檔實現了主從複製的特性,避免了單點故障。

服務註冊與服務發現的模型在 Web Service時代被提到了一個很高的境界,Web Service的核心架構一般如下圖所示。

在 Web Service 的技術架構中,用XML定義的程式語言中立的服務介面描述語言 WSDL其實來自COBRA中的IDL,基於Socket 的複雜RPC呼叫被簡單和容易掌握的HTTP上的SOAP呼叫所替換。此外,為了應對不同開發商的“互聯互不同”及“以自我為中心”的思想,IBM倡導了全球服務註冊中心(UDDI Registry)的理念,希望各個廠商都能將自己的 Web Service註冊到一起,全球聯網,服務無國界,這次嘗試以失敗告終,無數公司不得不重複開發並不很複雜的軟體系統。

後來出現了SOA這個新概念,雖然業界對SOA這個概念有各種“詮釋”,但“面向服務的架構”即以服務(Service)為中心的分散式架構深入人心,如下圖所示是一個理想化的大一統的SOA架構藍圖,我們看到服務註冊與服務釋出模型及RPC技術依然是SOA的技術核心。

服務註冊與服務釋出模型成為後來通用分散式系統架構的核心和關鍵技術基礎,也被賦予一個新概念——服務治理框架。服務治理框架這個概念與SOA在本質上屬於一類,它的一個典型代表是曾經熱門的開源專案——Dubbo。下面給出了Dubbo的原理概念圖,可以看出,相對於SOA架構,在 Dubbo的服務治理框架中最大的一個亮點是增加了服務監控這個必要的運維特性。

Dubbo同時提出了很多看起來比較吸引人的新特性,比如服務編排、服務降級、訪問規則控制,但實際上這並不是核心。作為一個分散式系統的重要基礎設施,穩定、高效能的RPC通訊及多語言支援才是其關鍵的核心指標。

14
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • maven編譯速度太慢?原來罪魁禍首是lombok