消息队列

73 阅读2分钟

消息队列本质是一个队列,但要满足高并发,高吞吐,高可用

概念解释

  • 官方说法是,MQ(全称Message Queue)是一种进程间通信或同一进程的不同线程间的通信方式,队列就是一个消息容器
  • 现实使用中,我们将消息队列称之为中间件,从它的名字就可以看出,消息队列不存储消息内容的本身,它只是消息的搬运工

异步通信:MQ的引入,更新用户积分、通知商家、更新用户标签这些步骤不再是串行的了,而是变成了异步执行,这减少了订单支付的整体耗时,提升了订单系统的吞吐量

RPC和MQ的区别 MQ特点

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

MQ适用场景

1、消息的发送者和消费者需要解耦(发送者和消费者都不再直接交互,而是通过中间件间接交互,实现了解耦)

2、发送者并不明确谁是消费者(也是因为发送者和消费者不进行直接交互)

3、发送者并不关心谁来消费信息(理由同上)

4、各个消费者可以从不同的角度入手处理消息

5、消费者的处理结果也不返回给发送者

6、消息的发送和处理是异步的

7、消息的关注者不止一个

MQ使用总结 也就是计算结果不要求立即返回给消息的发送者时,应该使用MQ,例如日志服务、业务监控服务

RPC特点

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

RPC适用场景

1、客户端必须明确要调用哪个服务器

2、调用需要立即得到返回结果

3、架构简单

RPC使用总结

如果服务的调用需要在短期内返回结果时,并且同一个请求的关注者只有一个,这个时候就应该使用RPC

各种消息队列:

kafka:分布式的,分区的,多副本的日志提交服务,在高吞吐场景下发挥出色
RocketMQ:低延迟,强一致,高性能,高可靠,万亿级容量和灵活的可拓展性,在一些实时场景中运用较广
Pulsar:下一代云原生分布式消息流平台,集消息,存储,轻量化函数式为一体,采用存算分离的架构设计
BMQ:和Pulsar架构类似,存算分离,初期定位是承接高吞吐的离线业务场景,逐步替换掉对应的kafka集群。