跨系统消息传递
高并发流量削峰
数据分发和异步处理
大数据分析
分布式事务
优点:解耦、削峰、异步
缺点:增加系统复杂度、降低系统可用性、数据一致性
存Redis
存数据库,重复插入报错、先查后存
复杂:生产全局ID存Redis,消费后删除(重复消费)
生产者消息丢失
开启confirm机制,失败重发
消息队列消息丢失
消息元数据持久化 + 消息队列持久化
消费者消息丢失
手动应答,数据处理成功后返回 ACK
修复消费者
创建大一些的临时队列
创建转发服务,将积压数据转发到临时队列
创建临时消费者消费临时队列
积压数据处理完毕后,恢复原始架构
新建程序将丢失数据查出,批量重导,发送到消息队列
生产者开启ACK
消息队列持久化消息,镜像集群模式
消费者手动ACK
Kafaka: 适用于大型项目,设置集群,不支持事务
RabbitMq:适用于中小型项目,兼容性很好,spring 团队开发
RocketMQ:阿里团队开发