MQ如何解决消息的顺序问题和消息的重复问题

本文探讨了MQ在处理分布式系统中遇到的消息顺序和重复问题。针对顺序消息,提出了一对一关系的解决方案及其局限性,并阐述了阿里巴巴如何平衡顺序与高容错、高吞吐量的需求。对于消息重复问题,建议消费端实现幂等性处理,通过日志记录已处理消息ID来避免重复。MQ本身并不保证消息不重复,业务端需要自行处理重复消息的场景。
摘要由CSDN通过智能技术生成

作者:CHEN川

链接:http://www.jianshu.com/p/453c6e7ff81c

來源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

一、摘要

分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:

1、消息的顺序问题

2、消息的重复问题

二、关键特性以及其实现原理

2.1、顺序消息

要实现严格的顺序消息,简单且可行的办法就是:

保证生产者 - MQServer - 消费者是一对一对一的关系

这样的设计虽然简单易行,但也会存在一些很严重的问题,比如:

1、并行度就会成为消息系统的瓶颈(吞吐量不够)

2、更多的异常处理,比如:只要消费端出现问题,就会导致整个处理流程阻塞,我们不得不花费更多的精力来解决阻塞的问题。

但我们的最终目标是要集群的高容错性和高吞吐量。这似乎是一对不可调和的矛盾,那么阿里是如何解决的?

有些问题,看起来很重要,但实际上我们可以通过合理的设计或者将问题分解来规避。如果硬要把时间花在解决问题本身,实际上不仅效率低下,而且也是一种浪费。从这个角度来看消息的顺序问题,我们可以得出两个结论:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值