自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

6種微服務(wù)RPC框架,你知道幾個(gè)?

開發(fā) 架構(gòu)
開源 RPC 框架有哪些呢?一類是跟某種特定語言平臺綁定的,另一類是與語言無關(guān)即跨語言平臺的。

 開源 RPC 框架有哪些呢?

[[274345]]

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

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

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

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

  • gRPC:Google 于 2015 年對外開源的跨語言 RPC 框架,支持多種語言。
  • Thrift:最初是由 Facebook 開發(fā)的內(nèi)部系統(tǒng)跨語言的 RPC 框架,2007 年貢獻(xiàn)給了 Apache 基金,成為 Apache 開源項(xiàng)目之一,支持多種語言。

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

如果涉及多個(gè)語言平臺之間的相互調(diào)用,就應(yīng)該選擇跨語言平臺的 RPC 框架。

RPC 框架,它們具體有何區(qū)別?

1. Dubbo

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

 

6種微服務(wù)RPC框架,你知道幾個(gè)?

 

從圖中你能看到,Dubbo 的架構(gòu)主要包含四個(gè)角色,其中 Consumer 是服務(wù)消費(fèi)者,Provider 是服務(wù)提供者,Registry 是注冊中心,Monitor 是監(jiān)控系統(tǒng)。

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

2. Motan

Motan 是國內(nèi)另外一個(gè)比較有名的開源的 RPC 框架,同樣也只支持 Java 語言實(shí)現(xiàn),它的架構(gòu)可以用下面這張圖描述。

6種微服務(wù)RPC框架,你知道幾個(gè)?

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

register:用來和注冊中心交互,包括注冊服務(wù)、訂閱服務(wù)、服務(wù)變更通知、服務(wù)心跳發(fā)送等功能。

protocol:用來進(jìn)行 RPC 服務(wù)的描述和 RPC 服務(wù)的配置管理,這一層還可以添加不同功能的 filter 用來完成統(tǒng)計(jì)、并發(fā)限制等功能。

serialize:將 RPC 請求中的參數(shù)、結(jié)果等對象進(jìn)行序列化與反序列化

transport:用來進(jìn)行遠(yuǎn)程通信,默認(rèn)使用 Netty NIO 的 TCP 長鏈接方式。

cluster:請求時(shí)會根據(jù)不同的高可用與負(fù)載均衡策略選擇一個(gè)可用的 Server 發(fā)起遠(yuǎn)程調(diào)用。

3. Tars

Tars 是騰訊根據(jù)內(nèi)部多年使用微服務(wù)架構(gòu)的實(shí)踐,總結(jié)而成的開源項(xiàng)目,僅支持 C++ 語言,它的架構(gòu)圖如下。

6種微服務(wù)RPC框架,你知道幾個(gè)?

Tars 的架構(gòu)交互主要包括以下幾個(gè)流程:

服務(wù)發(fā)布流程:在 web 系統(tǒng)上傳 server 的發(fā)布包到 patch,上傳成功后,在 web 上提交發(fā)布 server 請求,由 registry 服務(wù)傳達(dá)到 node,然后 node 拉取 server 的發(fā)布包到本地,拉起 server 服務(wù)。

管理命令流程:web 系統(tǒng)上的可以提交管理 server 服務(wù)命令請求,由 registry 服務(wù)傳達(dá)到 node 服務(wù),然后由 node 向 server 發(fā)送管理命令。

心跳上報(bào)流程:server 服務(wù)運(yùn)行后,會定期上報(bào)心跳到 node,node 然后把服務(wù)心跳信息上報(bào)到 registry 服務(wù),由 registry 進(jìn)行統(tǒng)一管理。

信息上報(bào)流程:server 服務(wù)運(yùn)行后,會定期上報(bào)統(tǒng)計(jì)信息到 stat,打印遠(yuǎn)程日志到 log,定期上報(bào)屬性信息到 prop、上報(bào)異常信息到 notify、從 config 拉取服務(wù)配置信息。

client 訪問 server 流程:client 可以通過 server 的對象名 Obj 間接訪問 server,client 會從 registry 上拉取 server 的路由信息(如 IP、Port 信息),然后根據(jù)具體的業(yè)務(wù)特性(同步或者異步,TCP 或者 UDP 方式)訪問 server(當(dāng)然 client 也可以通過 IP/Port 直接訪問 server)。

4. Spring Cloud

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

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

6種微服務(wù)RPC框架,你知道幾個(gè)?

由此可見,Spring Cloud 微服務(wù)架構(gòu)是由多個(gè)組件一起組成的,各個(gè)組件的交互流程如下。

請求統(tǒng)一通過 API 網(wǎng)關(guān) Zuul 來訪問內(nèi)部服務(wù),先經(jīng)過 Token 進(jìn)行安全認(rèn)證。

通過安全認(rèn)證后,網(wǎng)關(guān) Zuul 從注冊中心 Eureka 獲取可用服務(wù)節(jié)點(diǎn)列表。

從可用服務(wù)節(jié)點(diǎn)中選取一個(gè)可用節(jié)點(diǎn),然后把請求分發(fā)到這個(gè)節(jié)點(diǎn)。

整個(gè)請求過程中,Hystrix 組件負(fù)責(zé)處理服務(wù)超時(shí)熔斷,Turbine 組件負(fù)責(zé)監(jiān)控服務(wù)間的調(diào)用和熔斷相關(guān)指標(biāo),Sleuth 組件負(fù)責(zé)調(diào)用鏈監(jiān)控,ELK 負(fù)責(zé)日志分析。

5. gRPC

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

6種微服務(wù)RPC框架,你知道幾個(gè)?

它的主要特性包括三個(gè)方面。

通信協(xié)議采用了 HTTP/2,因?yàn)?HTTP/2 提供了連接復(fù)用、雙向流、服務(wù)器推送、請求優(yōu)先級、首部壓縮等機(jī)制

IDL 使用了ProtoBuf,ProtoBuf 是由 Google 開發(fā)的一種數(shù)據(jù)序列化協(xié)議,它的壓縮和傳輸效率極高,語法也簡單

多語言支持,能夠基于多種語言自動生成對應(yīng)語言的客戶端和服務(wù)端的代碼。

6. Thrift

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

6種微服務(wù)RPC框架,你知道幾個(gè)?

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

支持多種序列化格式:如 Binary、Compact、JSON、Multiplexed 等。

支持多種通信方式:如 Socket、Framed、File、Memory、zlib 等。

服務(wù)端支持多種處理方式:如 Simple 、Thread Pool、Non-Blocking 等。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-03-04 15:48:05

微服務(wù)語言開源

2019-07-12 08:45:07

開源微服務(wù)框架

2020-01-09 09:56:47

Java集合框架

2020-11-27 10:50:06

微服務(wù)架構(gòu)框架

2020-06-29 11:55:28

微服務(wù)架構(gòu)框架

2017-02-21 13:16:49

微服務(wù)RPC技術(shù)

2025-03-26 00:35:25

2024-12-19 10:48:12

2024-05-09 08:19:09

OOMJVM內(nèi)存

2024-02-21 07:24:21

微服務(wù)單體架構(gòu)MVC

2020-04-10 13:04:19

微服務(wù)架構(gòu)RPC

2022-11-11 17:09:55

微服務(wù)RPC

2021-08-13 22:42:14

微服務(wù)架構(gòu)開發(fā)

2018-10-28 18:09:22

微服務(wù)Microservic架構(gòu)

2022-07-08 11:19:29

微服務(wù)Java框架

2019-09-18 16:14:16

編碼方法重構(gòu)

2019-10-17 16:02:44

高并發(fā)緩存瀏覽器

2018-04-03 15:38:07

Java單例模式模式設(shè)計(jì)

2016-09-22 16:06:21

微服務(wù)架構(gòu)RPC框架

2021-02-27 17:13:21

前端代碼邏輯
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號