跟我学代码架构设计模式之--MQ和RPC的本质区别

有人说RPC是用来做同步通信的,MQ是用来做异步通讯的,这个认为观点不太准确。

观点如下:

1 RPC在协议设计上和传输层通信上完全可以设计为异步非阻塞的高性能通讯模式,甚至完全可以采用和MQ使用相同协议和传输层设计来实现RPC调用。

2 MQ也可以实现同步的请求响应模式的通讯。

所以,用同步和异步通信方式来区分MQ和RPC是不准确的。

那么,MQ的真正价值在哪里呢?

答案是:解耦!

1 MQ作为消息中间件,只负责消息的稳定可靠传输,不处理业务逻辑,具体的业务逻辑在消费者进程内实现。

2 MQ作为消息中间件,实现了点对点通讯和发布订阅模式的两种通讯方式,实际上是作为“事件或者消息总线”的角色存在的,通过消息总线,隔离了生产者进程和消费者进程的直接通讯,生产者感知不到消费者的存在,消费者也感知不到生产者的存在,它们之间通过MQ这个总线作为中介,以消息或者说事件的方式做到了两方的业务解耦!此外,由于解耦,对于点对点通讯方式,对生产者隔离了消费者的IP地址,可以方便的实现多消费者的负载均衡功能!

3 RPC相比与MQ,不仅是实现了消息层面的通信,还直接实现了作为服务端的业务逻辑,客户端在调用多个RPC服务的时候,负载均衡逻辑必须在客户端实现,即,没有解耦的功能!

(完)

你可能感兴趣的:(架构设计)