博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
消息队列 RPC之间的区别与联系
阅读量:5233 次
发布时间:2019-06-14

本文共 1024 字,大约阅读时间需要 3 分钟。

我了解一下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是对象级、函数级通信

转载于:https://www.cnblogs.com/lizhensheng/p/11117407.html

你可能感兴趣的文章
cookies相关概念
查看>>
CAN总线波形中ACK位电平为什么会偏高?
查看>>
MyBatis课程2
查看>>
桥接模式-Bridge(Java实现)
查看>>
svn客户端清空账号信息的两种方法
查看>>
springboot添加servlet的两种方法
查看>>
java的Array和List相互转换
查看>>
layui父页面执行子页面方法
查看>>
如何破解域管理员密码
查看>>
Windows Server 2008 R2忘记管理员密码后的解决方法
查看>>
IE11兼容IE8的设置
查看>>
windows server 2008 R2 怎么集成USB3.0驱动
查看>>
Foxmail:导入联系人
查看>>
vue:axios二次封装,接口统一存放
查看>>
vue中router与route的区别
查看>>
js 时间对象方法
查看>>
网络请求返回HTTP状态码(404,400,500)
查看>>
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
查看>>
Mac下使用crontab来实现定时任务
查看>>
303. Range Sum Query - Immutable
查看>>