通讯方式

RPC

消息队列

优点

舒适感非常好,直接远程调用,无需关注通讯协议等等细节



(除了这个,我还真不知道RPC还有什么优点)

1、解耦



2、冗余



3、可扩展



4、可恢复



5、交易缓冲



6、消息投递保证



7、异步通信(支持同步)



8、提高系统吞吐、健壮性

缺点

1、对开发人员素质要求高



2、同步调用(当然是可以做到异步调用的,但大多应用都是同步的),



会造成延迟问题



3、对于分布式系统,难实现分布式事务



4、耦合度高



5、扩展难度大



6、排查业务问题难度高

1、安全控制复杂



2、稳定性要求非常高


实在搞不明白,现在炒的很火的微服务对RPC技术情有独钟,难道仅仅是因为开发舒适感爽么?对于分布式系统,在我看来就更不能采用RPC技术了,人云亦云:“远程调用相当于本地调用”,稍微想想就不应该这么认为了,这两种方式是有本质的区别的。这话是用来夸大RPC的调用性能有多么好的,可惜的是再怎么好,也是远程调用,既是远程调用就避不开网络延迟的问题,消息队列不是也存在这样的问题么?试想:一个服务涉及到4个调用A、B、C、D,对于RPC应用来说,其中有一环处理出问题,整个业务链路都得必须重新走一遍,但如果用消息队列,就不一样了,那一环出问题,就重做那一环就好了,不展开说明了,上述表格已经清晰明了!