消息代理 與 RPC框架 有什麼區別和聯繫?
12-26
我了解一下protocol buffer ,ThriftRPC框架 和 ActiveMQ,RabbitMQ消息代理框架, 有點弄不清它們的應用場景 和 它們之間的聯繫與區別。 望 大家 指點迷津! 謝謝!
總的來說,消息代理和RPC框架就像ReadFileEx和ReadFile的區別
就是個消息池,不固化消息形式,你用什麼協議取,消息池就返回給你什麼樣的數據形式,這樣不同系統間就可以無縫通信了
MQ 是生產者消費者模式。
RPC 是請求響應模式。
MQ 是面向數據的。
RPC 是面向動作的。
rpc讓你遠程調用象本地調用,一般是同步的,例如,你讀一個文件,象調用本地的函數,就是時間久點。
消息代理框架一般是非同步的,一個線程send,另外一個線程recv
pb只是協議包裝,thrift才是真正的rpc框架
protool buffer 是一種序列化方式,google開源的gPRC則是一個基於Protocol Buffers序列化的RPC框架,Thrift也是個RPC框架 ,這兩個都是跨平台RPC框架
RPC一般用於同步場景
ActiveMQ,RabbitMQ是流行的消息隊列(消息中間件),消息隊列一般用於非同步場景
最大的區別是,rpc沒有broker, 而消息隊列是需要管理消息的存儲的,rpc沒有存儲,只有通信。
protocol buffer 是二進位序列化方式,類似json(文本)
,題主說的應該是grpc吧
主要的區別就是消息隊列適用於非同步場景,而rpc是遠程同步調用
就像你去餐廳吃飯,消息隊列:不急不急,來了先放碗里,我和朋友聊著,有空在吃~
rpc:快點啊!我等了好久了- -
不管是消息隊列還是rpc調用都是 分散式下面的 通信方式。
消息隊列最容易理解的方式就是生產者消費者模式,使兩個應用解耦。mq等框架就是對這的具體實現。
rpc中主要有兩點,一是消息的傳輸格式(文本或二進位),二是消息傳輸方式(http或tcp)。有的框架是對前者實現,如probuffer,有的是對後面實現,如netty,還有的就是一個整體實現,如thrift。
不管怎樣,他們都是為了實現通信。
消息隊列是系統級、模塊級的通信。RPC是對象級、函數級通信。
推薦閱讀:
※Chrome 有哪些鮮為人知的用法?
※都有哪些較好用的項目管理軟體?
※大家怎麼看待易語言這種語言的發展前景?
※最流氓的軟體可以流氓到什麼程度?
※Mike軟體如何學習?
TAG:軟體 | 計算機 | 計算機科學 | 消息隊列 | 遠程過程調用協議RPCRemoteProcedureCallProtocol |