前言
消息队列是用来传递消息的中间件,有以下特性:
与业务无关 : 只做消息分发
FIFO : 先投递先到达
容灾 : 节点的动态增删和消息的持久化
性能 : 吞吐量提升,系统内部通信效率提高
消息队列的作用
业务解耦
最终一致性: 通常用于分布式事务
广播: 如果没有消息队列每一个新的业务方介入都需要联调一次接口,使用消息队列只需要关心消息是否送达到消息队列,新接入的接口订阅相关的消息自己做处理就可以了;
错峰与流控 : 上下游对于事情的处理是不同的,比如 WEB 前端每秒承受上千万的请求都是可以的但是数据库的处理却非常有限;迫于成本的压力我们不能要求数据库的机器数量与前端资源一样;这样的问题同样存在于系统与系统之间,比如短信系统的速度卡在网关上边它与前端的并发量不是一个数量级的,用户玩几秒种收到短信也是可以的;针对于这样的场景如果没有消息队列也能实现但是系统的复杂度非常的高;
常见的消息队列
kafka、RabbitMQ等