日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

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

 

一類是跟某種特定語言平臺綁定的,另一類是與語言無關(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 框架中的一種;

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

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

1. Dubbo

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

這六種微服務(wù)RPC框架,你知道幾個?

 

從圖中你能看到,Dubbo 的架構(gòu)主要包含四個角色,其中 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)另外一個比較有名的開源的 RPC 框架,同樣也只支持 Java 語言實(shí)現(xiàn),它的架構(gòu)可以用下面這張圖描述。

這六種微服務(wù)RPC框架,你知道幾個?

 

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

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

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

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

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

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

3. Tars

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

這六種微服務(wù)RPC框架,你知道幾個?

 

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

服務(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ā)送管理命令。

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

信息上報流程:server 服務(wù)運(yùn)行后,會定期上報統(tǒng)計信息到 stat,打印遠(yuǎn)程日志到 log,定期上報屬性信息到 prop、上報異常信息到 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)圖可以用下面這張圖來描述。

這六種微服務(wù)RPC框架,你知道幾個?

 

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

請求統(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)中選取一個可用節(jié)點(diǎn),然后把請求分發(fā)到這個節(jié)點(diǎn)。

整個請求過程中,Hystrix 組件負(fù)責(zé)處理服務(wù)超時熔斷,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)的方法。

這六種微服務(wù)RPC框架,你知道幾個?

 

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

通信協(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)圖可以用下圖來描述。

這六種微服務(wù)RPC框架,你知道幾個?

 

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

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

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

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

作者:Java架構(gòu)師追風(fēng)鏈接:https://www.jianshu.com/p/650ccc81513f來源:簡書

分享到:
標(biāo)簽:框架 RPC
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定