详解RPC远程调用和消息队列MQ的区别
什么是RPC RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。 RPC服务框架有哪些 知名度较高的有Thrift(FB的)、dubbo(阿里的) RPC的一般需要经历4个步骤: 1、建立通信 首先要解决通讯的问题:即A机器想要调用B机器,首先得建立起通信连接,主要是通过在客户端和服务器之间建立TCP连接。 2、服务寻址 要解决寻址的问题,A服务器上如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称是什么。 3、网络传输 1)序列化 当A服务器上的应用发起一个RPC调用时,调用方法和参数数据都需要先进行序列化。 2)反序列化 当B服务器接收到A服务器的请求之后,又需要对接收到的参数等信息进行反序列化操作。 4、服务调用 B服务器进行本地调用(通过代理Proxy)之后得到了返回值,此时还需要再把返回值发送回A服务器,同样也需要经过序列化操作,然后再经过网络传输将二进制数据发送回A服务器。 通常,一次完整的PRC调用需要经历如上4个步骤。 MQ(消息队列) 消息队列(MQ)是一种能实现生产者到消费者单向通信的通信模型,一般来说是指实现这个模型的中间件。 典型的特点: 1、解耦 2、可靠投递 3、广播 4、最终一致性 5、流量削峰 6、消息投递保证 7、异步通信(支持同步) 8、提高系统吞吐、健壮性