詳解RPC遠端呼叫和訊息佇列MQ的區別

2022-09-20 09:54:10 字數 1243 閱讀 2558

知名度較高的有thrift(fb的)、dubbo(阿里的)、grpc(google)等

1、建立通訊

首先要解決通訊的問題:即a機器想要呼叫b機器,首先得建立起通訊連線,主要是通過在客戶端和伺服器之間建立tcp連線。

2、服務定址

要解決定址的問題,a伺服器上如何連線到b伺服器(如主機或ip位址)以及特定的埠,方法的名稱是什麼。

3、網路傳輸

1)序列化

2)反序列化

當b伺服器接收到a伺服器的請求之後,又需要對接收到的引數等資訊進行反序列化操作。

4、服務呼叫

b伺服器進行本地呼叫(通過**proxy)之後得到了返回值,此時還需要再把返回值傳送回a伺服器,同樣也需要經過序列化操作,然後再經過網路傳輸將二進位制資料傳送回a伺服器。

通常,一次完整的prc呼叫需要經歷如上4個步驟。

mq訊息中介軟體比較:

rocketmq、kafka、rabbitmq的架構設計與選型

典型的特點:

1、解耦

2、可靠投遞

3、廣播

4、最終一致性

5、流量削峰

6、訊息投遞保證

7、非同步通訊(支援同步)

8、提高系統吞吐、健壯性

典型的使用場景:秒殺業務中利用mq來實現流量削峰,以及應用解耦使用。

1.在架構上,rpc和mq的差異點是,message有乙個中間結點message queue,可以把訊息儲存。

2.同步呼叫:對於要立即等待返回處理結果的場景,rpc是首選。

3.mq 的使用,一方面是基於效能的考慮,比如服務端不能快速的響應客戶端(或客戶端也不要求實時響應),需要在佇列裡快取。

另外一方面,它更側重資料的傳輸,因此方式更加多樣化,除了點對點外,還有訂閱發布等功能。

4.而且隨著業務增長,有的處理端處理量會成為瓶頸,會進行同步呼叫改造為非同步呼叫,這個時候可以考慮使用mq。

詳解RPC遠端呼叫和訊息佇列MQ的區別

rpc remote procedure call 遠端過程呼叫,主要解決遠端通訊間的問題,不需要了解底層網路的通訊機制。知名度較高的有thrift fb的 dubbo 阿里的 1 建立通訊 首先要解決通訊的問題 即a機器想要呼叫b機器,首先得建立起通訊連線,主要是通過在客戶端和伺服器之間建立tcp...

RPC和RMI遠端呼叫

遠端呼叫使得呼叫遠端伺服器的物件 方法的方式就和呼叫本地物件 方法的方式差不多,因為我們通過網路程式設計把這些都隱藏起來了。遠端呼叫是分布式系統的基礎。遠端呼叫一般分為兩種,遠端過程呼叫 rpc 和遠端方法呼叫 rmi rpc屬於函式級別的遠端呼叫,其多是通過http傳輸資料,資料形式有xml js...

RPC遠端呼叫和重試冪等

1 在同步rpc遠端呼叫中,如果呼叫介面失敗或者超市,這時候客戶端都會採用重試機制,這就導致可能存在伺服器服務處理重複消費 2 介面產生重複消費的原因 1 表單重複提交 2 rpc呼叫介面過程中產生重試 3 說下rpc呼叫介面如何保證冪等性 token 訊息中介軟體如何保證明燈性 全域性唯一id 當...