消息隊列 RPC之間的區別與聯系


我了解一下protocol buffer ThriftRPC框架 ActiveMQRabbitMQ消息代理框架, 有點弄不清它們的應用場景 它們之間的聯系與區別。 大家 指點迷津! 謝謝!

 

總的來說,消息代理和RPC框架就像ReadFileEx和ReadFile的區別

 

就是個消息池,不固化消息形式,你用什么協議取,消息池就返回給你什么樣的數據形式,這樣不同系統間就可以無縫通信了

 

MQ 是生產者消費者模式。

RPC 是請求響應模式。

MQ 是面向數據的。

RPC 是面向動作的。

 

 

protocol buffer 只是一個序列化方式,並不是 RPC

 

 

rpc讓你遠程調用象本地調用,一般是同步的,例如,你讀一個文件,象調用本地的函數,就是時間久點。

消息代理框架一般是異步的,一個線程send,另外一個線程recv

pb只是協議包裝,thrift才是真正的rpc框架

 

 

protool buffer 是一種序列化方式,google開源的gPRC則是一個基於Protocol Buffers序列化的RPC框架,Thrift也是個RPC框架 ,這兩個都是跨平台RPC框架 

RPC一般用於同步場景

ActiveMQRabbitMQ是流行的消息隊列(消息中間件),消息隊列一般用於異步場景

 

protocol buffer 是二進制序列化方式,類似json(文本),題主說的應該是grpc

 

主要的區別就是消息隊列適用於異步場景,而rpc是遠程同步調用

 

就像你去餐廳吃飯,

消息隊列:不急不急,來了先放碗里,我和朋友聊着,有空在吃~

rpc:快點啊!我等了好久了- -

 

 

最大的區別是,rpc沒有broker, 而消息隊列是需要管理消息的存儲的,rpc沒有存儲,只有通信

 

 

不管是消息隊列還是rpc調用都是 分布式下面的 通信方式。

消息隊列最容易理解的方式就是生產者消費者模式,使兩個應用解耦。mq等框架就是對這的具體實現。

rpc中主要有兩點,一是消息的傳輸格式(文本或二進制),二是消息傳輸方式(httptcp)。有的框架是對前者實現,如probuffer,有的是對后面實現,如netty,還有的就是一個整體實現,如thrift

不管怎樣,他們都是為了實現通信。

 

 

消息隊列是系統級、模塊級的通信。RPC是對象級、函數級通信



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM