天天看點

Java微服務RPC選型Dubbo還是SpringCloud?(中)

1.1.3 Spring Cloud

國外Pivotal公司2014年對外開源的RPC架構,僅支援Java,使用最廣。

是為了解決微服務架構中服務治理而提供的一系列功能的開發架構,它是完全基于Spring Boot進行開發的,Spring Cloud利用Spring Boot特性整合了開源行業中優秀的元件,整體對外提供了一套在微服務架構中服務治理的解決方案。

架構

Java微服務RPC選型Dubbo還是SpringCloud?(中)

互動流程

  • 請求統一通過API網關Zuul來通路内部服務,先經過Token進行安全認證
  • 通過安全認證後,網關Zuul從注冊中心Eureka擷取可用服務節點清單
  • 從可用服務節點中選取一個可用節點,然後把請求分發到這個節點
  • 整個請求過程中,Hystrix元件負責處理服務逾時熔斷,Turbine元件負責監控服務間的調用和熔斷相關名額,Sleuth元件負責調用鍊監控,ELK負責日志分析

選型

Spring Cloud不僅提供了基本的RPC架構功能,還提供了服務注冊元件、配置中心元件、負載均衡元件、斷路器元件、分布式消息追蹤元件等一系列元件,稱為“Spring Cloud全家桶”。如果你不想自己實作以上這些功能,那麼Spring Cloud基本可以滿足你的全部需求。而Dubbo、Motan基本上隻提供了最基礎的RPC架構的功能,其他微服務元件都需要自己去實作。

不過由于Spring Cloud的RPC通信采用了HTTP協定,相比Dubbo和Motan所采用的私有協定來說,在高并發的通信場景下,性能相對要差一些,是以對性能有苛刻要求的情況下,可以考慮Dubbo和Motan。

1.2 跨語言平台

1.2.1 gRPC

Google于2015年對外開源的跨語言RPC架構。

支援C++、Java、Python、Go、Ruby、PHP、Android Java、Objective-C。

原理

通過IDL(Interface Definition Language)檔案定義服務接口的參數和傳回值類型,然後通過代碼生成程式生成服務端和用戶端的具體實作代碼,這樣在gRPC裡,用戶端應用可以像調用本地對象一樣調用另一台伺服器上對應的方法。

Java微服務RPC選型Dubbo還是SpringCloud?(中)

特性

  • 通信協定采用HTTP2,因其提供了連接配接複用、雙向流、伺服器推送、請求優先級、首部壓縮等機制,是以在通信過程中可以節省帶寬、降低TCP連接配接次數、節省CPU,尤其對于移動端應用來說,可以幫助延長電池壽命
  • IDL使用了ProtoBuf,ProtoBuf是由Google開發的一種資料序列化協定,它的壓縮和傳輸效率極高,文法也簡單,是以被廣泛應用在資料存儲和通信協定上
  • 多語言支援,能夠基于多種語言自動生成對應語言的用戶端和服務端的代碼。