专栏名称: dbaplus社群
围绕Database、BigData、AlOps的企业级专业社群。资深大咖、技术干货,每天精品原创文章推送,每周线上技术分享,每月线下技术沙龙,每季度XCOPS\x26amp;DAMS行业大会。
TodayRss-海外RSS稳定源
目录
今天看啥  ›  专栏  ›  dbaplus社群

使用MQ的时候,怎么确保消息100%不丢失?

dbaplus社群  · 公众号  · 科技自媒体 互联网安全  · 2025-11-19 07:15
    

主要观点总结

本文主要介绍了在分布式系统中,如何保证消息从生产到消费的过程中100%不丢失的问题。文章详细阐述了消息丢失的三大风险环节以及对应的解决方案,包括生产端保障、存储端保障和消费端保障。文章还强调了本地消息表方案、副本机制、手动提交位移和幂等性设计的重要性。

关键观点总结

关键观点1: 消息丢失的三大风险环节

消息的生命周期分为生产、存储和消费三个阶段,每个阶段都潜藏着丢失的风险。生产环节可能因为网络问题或Broker宕机导致消息未接收;存储环节可能因为Broker未将消息持久化到磁盘或主从架构中的Master节点故障导致消息丢失;消费环节可能因为消费者服务挂掉且使用了自动提交位移导致消息永久丢失。

关键观点2: 生产端保障措施

通过配置acks=all和合理的重试次数确保消息被MQ集群完整接收。对于一致性要求极高的业务,引入本地消息表方案,将业务操作和发送消息封装在同一个本地事务中,确保业务和消息的原子性。

关键观点3: 存储端保障措施

通过配置多副本和高同步副本数量来确保高可用性和数据不丢失。设置min.insync.replicas来平衡性能和可靠性。关键的是确保unclean.leader.election为false,防止数据丢失。

关键观点4: 消费端保障措施

关闭自动提交位移,改为手动提交。在业务逻辑完全处理成功后进行位移提交。同时,做好消费端业务逻辑的幂等性设计,防止消息重复处理。


免责声明:本文内容摘要由平台算法生成,仅为信息导航参考,不代表原文立场或观点。 原文内容版权归原作者所有,如您为原作者并希望删除该摘要或链接,请通过 【版权申诉通道】联系我们处理。

原文地址:访问原文地址
总结与预览地址:访问总结与预览
文章地址: 访问文章快照