有勇气的牛排博客

MQ(消息队列)与RPC的区别与使用场景

有勇气的牛排 712 服务器/中间件 2022-12-19 14:21:43

1 消息队列讲解

1.1 定义

MQ(Message Queue)消息队列,即符合“先进先出”的逻辑。将所要传输的数据/消息放到队列中,实现消息传递。

生产者将消息放到队列,然后由消费者处理。消费者可以到置顶的队列拉取消息,或者订阅响应的队列,由MQ服务端推送消息。

1.2 消息队列的作用

消息队列中间件是分布式系统中重要的组件,主要解决应用解耦、异步消息、流量消峰等问题,实现了高性能、高可用、高伸缩和最终一致性架构。

1.2.1 解耦

定义:一个业务需要多个模块共同实现,或者一条消息由多个系统处理,只需要主业务完成后,发送一条MQ,然后其余模块负责消费MQ消息,即可实现业务,降低模块间的耦合。

1.2.2 异步

主业务执行结束后,充数业务通过MQ,异步执行,减少业务的响应时间,提高用户体验。

1.2.3 削峰

在高并发情况下,业务异步处理。

1.3 消息队列的缺点

1、系统可用性降低:依赖服务越多,服务越容易垮掉,需要考虑MQ瘫痪的情况。

2、系统复杂性提高:需要考虑消息丢失。消息重复消费。消息传递的顺序性。

3、一望无垠一致性:主业务和从属业务一致性的处理。

2 RPC讲解

2.1 rpc是什么?

RPC(Remote Procedure Call)远程过程调用协议,是一种通过网络从远程计算机上请求的服务,而不需要了解底层网络技术的协议。

通俗理解:实现像调用本地方法一样,调用远程的进程。

3 消息队列MQ与RPC对比

3.1 MQ

区别:面向数据、生产者与消费者、有缓冲节点、异步、系统级/模块级通信

选型:RabbitMQ、ActiveMQ/Apollo、ZeroMQ、memcacheQ、Redis、MSMQ、kafka/jafka

场景:
1、消息的发送者和消费者要解耦的情况
2、发送者并不明确谁是消费者
3、发送者并不关心谁在消费信息
4、各个消费者可以从不同的角度入手处理信息
5、消费者的处理结果不返回给发送者
6、消息的发送是异步的
7、消息的关注者不止一个

3.2 RPC

区别:面试动作、请求响应模式、同步、对象级/函数级通信

场景:
1、客户端调用哪个服务器比较明确
2、调用需要立即得到返回结果
3、架构简单

参考地址:
https://www.cnblogs.com/unreal/p/6631977.html


留言

专栏
文章
加入群聊