系统通讯之RPC VS 消息队列
2016-07-09 00:42
239 查看
文前声明:本人只是知识的搬运工,文中许多知识和观点大多数都是来自于网络或书本,因为没有记录的习惯学习研究完,便忘记名称了,如若还记得,在文后自会添加备注。
个人观点,对于这两种通讯方式我是支持消息队列的!
原由且听我分析:
实在搞不明白,现在炒的很火的微服务对RPC技术情有独钟,难道仅仅是因为开发舒适感爽么?对于分布式系统,在我看来就更不能采用RPC技术了,人云亦云:“远程调用相当于本地调用”,稍微想想就不应该这么认为了,这两种方式是有本质的区别的。这话是用来夸大RPC的调用性能有多么好的,可惜的是再怎么好,也是远程调用,既是远程调用就避不开网络延迟的问题,消息队列不是也存在这样的问题么?试想:一个服务涉及到4个调用A、B、C、D,对于RPC应用来说,其中有一环处理出问题,整个业务链路都得必须重新走一遍,但如果用消息队列,就不一样了,那一环出问题,就重做那一环就好了,不展开说明了,上述表格已经清晰明了!
个人观点,对于这两种通讯方式我是支持消息队列的!
原由且听我分析:
通讯方式 | RPC | 消息队列 |
优点 | 舒适感非常好,直接远程调用,无需关注通讯协议等等细节 (除了这个,我还真不知道RPC还有什么优点) | 1、解耦 2、冗余 3、可扩展 4、可恢复 5、交易缓冲 6、消息投递保证 7、异步通信(支持同步) 8、提高系统吞吐、健壮性 |
缺点 | 1、对开发人员素质要求高 2、同步调用(当然是可以做到异步调用的,但大多应用都是同步的), 会造成延迟问题 3、对于分布式系统,难实现分布式事务 4、耦合度高 5、扩展难度大 6、排查业务问题难度高 | 1、安全控制复杂 2、稳定性要求非常高 |
相关文章推荐
- 鞋码的尺寸
- Android开发环境搭建:离线安装ADT插件和安装SDK
- C程序(1)
- 解决“不是有效的win32应用程序”问题
- Animation 动画介绍和实现
- 读书笔记:《算法导论》,第1章:算法在计算中的作用
- AccessibilityService详解
- 一个小笔记(1):设置重启电脑、自动启动
- Two Sum II – Input array is sorted
- Git入门(三)——没有版本控制意识的程序员不是一个好的程序员
- 无题
- stampede上编译c和fortran混编程序multiple definition of `main'问题解决
- 1.1 Qt入门
- tcp短连接TIME_WAIT问题解决方法大全
- 步行导航地图认知特点文献摘要
- C语言-源程序编译执行流程
- Segment Tree Query I & II
- Redis - 排序
- 设置共享用户名密码
- python socket