分布式消息队列(MQ)的应用场景
- 服务解耦
- 服务之间强依赖:同步dubbo调用、同步HTTP调用,比如spring cloud、GRPC。
- 服务之间弱依赖:消息中间件
- 削峰填谷
- 把流量的高峰和低谷的速率做一个平衡。MQ最早期就是做这么一件事情。
- 当下游服务处理不过来的时候,可以把缓存到一个地方,然后慢速去消费,这就是削峰。
- 即时性很高、流量很大的场景,比如秒杀大促。
- 大促不可能持续的时间很长,比如说双十一大促,可能持续半小时一小时,后面相对而言就比较平稳了,可以把大促开始的消息积压到囤积到MQ中,慢慢去做一个消费,这也是可以的。
- 异步化缓冲
- 有些业务逻辑可以做异步操作,只需要做到最终一致性即可,不需要做到实时强一致性。
分布式消息队列(MQ)应用思考点
高可用解决方案:HaProxy(High Available)、Keepalived
可靠性解决方案:replicate 分片副本(Kafka、Elasticsearch、Redis Cluster)
- 生产端可靠性投递
- 消费端幂等
- 高可用
- 低延迟
- 消息可靠性
- 堆积能力
- 扩展性