消息队列
Contents
作用
- 解耦
- 异步处理
- 负载均衡/削峰/限流
两种模式
- 点对点模式
- 消息队列
- 生产者
- 消费者
- 发布/订阅模式
- 角色主题
- 发布者
- 订阅者
常用消息队列
- RabbitMQ
- ActiveMQ
- RocketMQ
- Kafka
需要解决哪些问题?
- 高可用(也就是必须是分布式的,单机的无法高可用)
- 持久化
- 消费者如何得到消息
- push:当消息队列中有数据了,通知消费者
- pull:轮询
- 重复消费问题怎么解决?
- 如何避免重复
- 如何鉴别重复消息并幂等执行
- 版本号:类似tcp的sequence号,肯定可以避免重复执行(source+seq)
- 状态机:
- 全局唯一id
- 去重表
- source+序列号
- 如何保证绝对有序?
- RPC
- 服务端包括两个RPC,一个用来接收消息,一个用来确认消息收到
Author 段新朋
LastMod 2020-08-29