消息队列 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是对象级、函数级通信


posted @ 2019-07-01 23:03  哈骑士  阅读(2825)  评论(0编辑  收藏  举报