亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

開源 RPC 框架有哪些呢?

一類是跟某種特定語言平臺綁定的,另一類是與語言無關即跨語言平臺的。

跟語言平臺綁定的開源 RPC 框架主要有下面幾種。

  • Dubbo:國內最早開源的 RPC 框架,由阿里巴巴公司開發并于 2011 年末對外開源,僅支持 JAVA 語言。
  • Motan:微博內部使用的 RPC 框架,于 2016 年對外開源,僅支持 Java 語言。
  • Tars:騰訊內部使用的 RPC 框架,于 2017 年對外開源,僅支持 C++ 語言。
  • Spring Cloud:國外 Pivotal 公司 2014 年對外開源的 RPC 框架,僅支持 Java 語言

而跨語言平臺的開源 RPC 框架主要有以下幾種。

  • gRPC:google 于 2015 年對外開源的跨語言 RPC 框架,支持多種語言。
  • Thrift:最初是由 Facebook 開發的內部系統跨語言的 RPC 框架,2007 年貢獻給了 Apache 基金,成為 Apache 開源項目之一,支持多種語言。

如果你的業務場景僅僅局限于一種語言的話,可以選擇跟語言綁定的 RPC 框架中的一種;

如果涉及多個語言平臺之間的相互調用,就應該選擇跨語言平臺的 RPC 框架。

 

RPC 框架,它們具體有何區別?

1. Dubbo

先來聊聊 Dubbo,Dubbo 可以說是國內開源最早的 RPC 框架了,目前只支持 Java 語言,它的架構可以用下面這張圖展示。

6種微服務RPC框架,你知道幾個?

 

 

從圖中你能看到,Dubbo 的架構主要包含四個角色,其中 Consumer 是服務消費者,Provider 是服務提供者,Registry 是注冊中心,Monitor 是監控系統。

具體的交互流程是 Consumer 一端通過注冊中心獲取到 Provider 節點后,通過 Dubbo 的客戶端 SDK 與 Provider 建立連接,并發起調用。Provider 一端通過 Dubbo 的服務端 SDK 接收到 Consumer 的請求,處理后再把結果返回給 Consumer。

2. Motan

Motan 是國內另外一個比較有名的開源的 RPC 框架,同樣也只支持 Java 語言實現,它的架構可以用下面這張圖描述。

6種微服務RPC框架,你知道幾個?

 

 

Motan 與 Dubbo 的架構類似,都需要在 Client 端(服務消費者)和 Server 端(服務提供者)引入 SDK,其中 Motan 框架主要包含下面幾個功能模塊。

  • register:用來和注冊中心交互,包括注冊服務、訂閱服務、服務變更通知、服務心跳發送等功能。
  • protocol:用來進行 RPC 服務的描述和 RPC 服務的配置管理,這一層還可以添加不同功能的 filter 用來完成統計、并發限制等功能。
  • serialize:將 RPC 請求中的參數、結果等對象進行序列化與反序列化
  • transport:用來進行遠程通信,默認使用 Netty NIO 的 TCP 長鏈接方式。
  • cluster:請求時會根據不同的高可用與負載均衡策略選擇一個可用的 Server 發起遠程調用。

3. Tars

Tars 是騰訊根據內部多年使用微服務架構的實踐,總結而成的開源項目,僅支持 C++ 語言,它的架構圖如下。

 

6種微服務RPC框架,你知道幾個?

 

 

Tars 的架構交互主要包括以下幾個流程:

  • 服務發布流程:在 web 系統上傳 server 的發布包到 patch,上傳成功后,在 web 上提交發布 server 請求,由 registry 服務傳達到 node,然后 node 拉取 server 的發布包到本地,拉起 server 服務。
  • 管理命令流程:web 系統上的可以提交管理 server 服務命令請求,由 registry 服務傳達到 node 服務,然后由 node 向 server 發送管理命令。
  • 心跳上報流程:server 服務運行后,會定期上報心跳到 node,node 然后把服務心跳信息上報到 registry 服務,由 registry 進行統一管理。
  • 信息上報流程:server 服務運行后,會定期上報統計信息到 stat,打印遠程日志到 log,定期上報屬性信息到 prop、上報異常信息到 notify、從 config 拉取服務配置信息。
  • client 訪問 server 流程:client 可以通過 server 的對象名 Obj 間接訪問 server,client 會從 registry 上拉取 server 的路由信息(如 IP、Port 信息),然后根據具體的業務特性(同步或者異步,TCP 或者 UDP 方式)訪問 server(當然 client 也可以通過 IP/Port 直接訪問 server)。

4. Spring Cloud

Spring Cloud 利用 Spring Boot 特性整合了開源行業中優秀的組件,整體對外提供了一套在微服務架構中服務治理的解決方案。

只支持 Java 語言平臺,它的架構圖可以用下面這張圖來描述。

 

6種微服務RPC框架,你知道幾個?

 

 

由此可見,Spring Cloud 微服務架構是由多個組件一起組成的,各個組件的交互流程如下。

  • 請求統一通過 API 網關 Zuul 來訪問內部服務,先經過 Token 進行安全認證。
  • 通過安全認證后,網關 Zuul 從注冊中心 Eureka 獲取可用服務節點列表。
  • 從可用服務節點中選取一個可用節點,然后把請求分發到這個節點。
  • 整個請求過程中,Hystrix 組件負責處理服務超時熔斷,Turbine 組件負責監控服務間的調用和熔斷相關指標,Sleuth 組件負責調用鏈監控,ELK 負責日志分析。

5. gRPC

先來看下 gRPC,它的原理是通過 IDL(Interface Definition Language)文件定義服務接口的參數和返回值類型,然后通過代碼生成程序生成服務端和客戶端的具體實現代碼,這樣在 gRPC 里,客戶端應用可以像調用本地對象一樣調用另一臺服務器上對應的方法。

 

6種微服務RPC框架,你知道幾個?

 

 

它的主要特性包括三個方面。

  • 通信協議采用了 HTTP/2,因為 HTTP/2 提供了連接復用、雙向流、服務器推送、請求優先級、首部壓縮等機制
  • IDL 使用了ProtoBuf,ProtoBuf 是由 Google 開發的一種數據序列化協議,它的壓縮和傳輸效率極高,語法也簡單
  • 多語言支持,能夠基于多種語言自動生成對應語言的客戶端和服務端的代碼。

6. Thrift

再來看下 Thrift,Thrift 是一種輕量級的跨語言 RPC 通信方案,支持多達 25 種編程語言。為了支持多種語言,跟 gRPC 一樣,Thrift 也有一套自己的接口定義語言 IDL,可以通過代碼生成器,生成各種編程語言的 Client 端和 Server 端的 SDK 代碼,這樣就保證了不同語言之間可以相互通信。它的架構圖可以用下圖來描述。

 

6種微服務RPC框架,你知道幾個?

 

 

從這張圖上可以看出 Thrift RPC 框架的特性。

  • 支持多種序列化格式:如 Binary、Compact、JSON、Multiplexed 等。
  • 支持多種通信方式:如 Socket、Framed、File、Memory、zlib 等。
  • 服務端支持多種處理方式:如 Simple 、Thread Pool、Non-Blocking 等。

分享到:
標簽:框架 RPC
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定