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

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

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

 

一類是跟某種特定語(yǔ)言平臺(tái)綁定的,另一類是與語(yǔ)言無(wú)關(guān)即跨語(yǔ)言平臺(tái)的。

跟語(yǔ)言平臺(tái)綁定的開(kāi)源 RPC 框架主要有下面幾種。

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

而跨語(yǔ)言平臺(tái)的開(kāi)源 RPC 框架主要有以下幾種。

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

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

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

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

1. Dubbo

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

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

 

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

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

2. Motan

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

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

 

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

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

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

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

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

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

3. Tars

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

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

 

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

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

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

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

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

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

4. Spring Cloud

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

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

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

 

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

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

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

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

整個(gè)請(qǐng)求過(guò)程中,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

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

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

 

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

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

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

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

6. Thrift

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

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

 

從這張圖上可以看出 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來(lái)源:簡(jiǎn)書(shū)

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

網(wǎng)友整理

注冊(cè)時(shí)間:

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

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

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

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

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

答題星2018-06-03

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

全階人生考試2018-06-03

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

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

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

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

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

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定