南昌网站开发机构wordpress和阿里云

张小明 2026/1/2 14:12:23
南昌网站开发机构,wordpress和阿里云,坪山附近公司做网站建设哪家技术好,wordpress drupal 比较文章目录引言生产端#xff1a;确保消息成功发出去存储端(Broker)#xff1a;确保消息持久化且不丢失消费端#xff1a;确保消息处理完再确认总结引言 大家好#xff01;我们使用消息队列中间件的时候#xff0c;一般都会涉及到消息丢失怎么兜底的问题。今天我们一起来探…文章目录引言生产端确保消息成功发出去存储端(Broker)确保消息持久化且不丢失消费端确保消息处理完再确认总结引言大家好我们使用消息队列中间件的时候一般都会涉及到消息丢失怎么兜底的问题。今天我们一起来探讨一下RocketMQ是如何帮我们解决这个问题的同时这也是面试常问的问题。作为一个后端开发人员你肯定知道在分布式系统中性能和数据一致性可靠性往往是需要权衡的。RocketMQ 想要实现“消息零丢失”必须在生产、存储、消费这三个阶段都进行严格的把控。生产端确保消息成功发出去在发送端主要通过确认机制和重试机制来保证。使用同步发送 (Sync Send)机制生产者发送消息后会阻塞等待 Broker 的响应。只有收到SEND_OK状态才算发送成功。处理如果收到FLUSH_DISK_TIMEOUT、FLUSH_SLAVE_TIMEOUT或者SLAVE_NOT_AVAILABLE虽然消息可能已经到了 Broker但持久化或同步可能存在风险。严格场景下需要根据业务决定是否重试。代码层不要使用sendOneway单向发送不关心结果也不要过度依赖sendAsync除非回调处理极其完善。失败重试 (Retry)RocketMQ 客户端默认自带重试机制。如果网络抖动导致发送失败Producer 会自动重试默认 2 次。你可以配置retryTimesWhenSendFailed。事务消息 (Transactional Message)场景解决“本地事务执行成功但消息发送失败”导致的数据不一致问题。机制利用 RocketMQ 的半消息Half Message机制实现类似 2PC两阶段提交的效果确保本地数据库更新和消息发送是原子操作。存储端(Broker)确保消息持久化且不丢失这是最关键的环节主要涉及刷盘策略和主从复制。刷盘策略同步刷盘 (SYNC_FLUSH)默认 (Async)消息写入内存 (PageCache) 即返回成功由 OS 决定何时写入磁盘。如果机器断电内存数据会丢失。零丢失配置将flushDiskType设置为SYNC_FLUSH。效果消息必须真正写入物理磁盘CommitLog后Broker 才会给 Producer 返回成功。代价写入吞吐量会大幅下降。复制策略同步复制 (SYNC_MASTER)默认 (Async)Master 收到消息即可后台异步同步给 Slave。如果 Master 宕机且磁盘损坏未同步的消息会丢失。零丢失配置将brokerRole设置为SYNC_MASTER。效果Master 收到消息后必须等待 Slave 也成功写入才会给 Producer 返回成功。代价增加了网络往返延时可用性略有降低Slave 挂了可能影响写入。高可用架构DLedger (Raft 协议)RocketMQ 4.5 引入了基于 Raft 协议的 DLedger 存储模式。它不仅解决了自动故障切换Failover还通过 Raft 的强一致性保证数据不丢失只要大多数节点存活数据就在。如果不启用Dledger或者同步刷盘性能下降我们需要保证异步刷盘和消息不丢失需要引入本地消息表模式或称为最大努力通知模式。本地消息表的核心思想是将本地数据库事务和消息发送绑定在一起以确保它们要么同时成功要么同时失败在这个模式下Broker 即使宕机消息也不会丢失原因在于保障机制消息的“生命”已经从 RocketMQ Broker 转移到了生产者的本地数据库中。只要本地事务提交成功消息就安全了。性能提升Broker 即使是ASYNC_FLUSH异步刷盘也只影响 Broker 侧的持久化风险不影响您的业务事务。您将消息记录到本地数据库这个操作是快速的本地事务对性能影响小。最终一致性引入一个独立的定时任务它会定时扫描本地消息表中状态为待发送或发送失败的记录并重新投递给 RocketMQ消费端确保消息处理完再确认消费者端主要防止“消息拿到了但在业务逻辑处理完之前程序挂了导致消息被认为已消费”。手动 ACK 机制 (At-Least-Once)RocketMQ 默认就是“先处理业务后 ACK”。关键点只有当你的业务逻辑比如写库、调用下游接口完全执行成功后才返回ConsumeConcurrentlyStatus.CONSUME_SUCCESS。异常处理如果业务抛出异常或者返回RECONSUME_LATERBroker 会接管该消息放入重试队列稍后再次投递。死信队列 (DLQ)如果消息重试了 16 次默认依然失败会被放入死信队列不会被丢弃。你需要建立监控机制人工介入处理死信队列中的消息。这里记得处理幂等性问题噢❤️如使用数据库唯一键、Redis 去重等这是实现消息可靠性的另一面硬币。总结好的我们从三个方面分层分析了RocketMQ是如何保证消息不丢失的。对于消息队列的这些消息问题我们一般都是要从这三方面去考量噢面试最好也是这样分层次给面试官回答这样印象分会大大增加❤️
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

常州做企业网站的公司适合ps做图的素材网站有哪些

3大技术突破重构工业异常检测智能化路径 【免费下载链接】AnomalyGPT 项目地址: https://gitcode.com/gh_mirrors/an/AnomalyGPT 传统工业质检长期面临人工阈值设定复杂、误检率居高不下的行业痛点。随着智能制造时代的到来,基于大视觉语言模型的AnomalyGPT…

张小明 2025/12/27 0:17:34 网站建设

wordpress网站建设公司公司的官方网站的作用

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统截图 基于Python的出行路线规划与推荐系统 数据分析可视化大屏系统_4s75623d 项目…

张小明 2025/12/31 10:53:37 网站建设

网站服务器制作包河网站建设

终极MCP测试指南:7天掌握协议全功能验证 【免费下载链接】servers Model Context Protocol Servers 项目地址: https://gitcode.com/GitHub_Trending/se/servers 你是否在为MCP协议的各种功能测试而烦恼?面对工具调用、资源管理、提示词模板等复杂…

张小明 2025/12/27 0:17:31 网站建设

仿 手机 网站模板html大型集团公司网站建设方案

C语言指针详解:内存操作的核心利器 一、引言:从数组到指针的自然过渡 在上一篇《C语言利用数组处理批量数据》中,我们深入学习了如何用数组高效组织和处理同类型数据。然而,你是否注意到这样一个现象? int arr[5] {…

张小明 2025/12/31 0:20:26 网站建设

网站开发需要的编程软件校园学生网站开发

理论知识网络的发展历程单机时代->局域网->广域网->移动互联网时代(国内的网络发展相对较慢,2000年前后,才真正的进入了网络时代)组建网络的核心设备路由器和交换机是组建网络的核心设备(交换机可以认为是对路由器的接口进行拓展)网络通信基础知识网络互联的目的是为了…

张小明 2025/12/26 12:02:17 网站建设

农业建设项目管理信息系统网站传媒公司注册经营范围

SQL Server数据库管理与维护全解析 在SQL Server数据库的管理和维护工作中,会遇到各种问题和挑战。下面我们将详细探讨数据库应急状态处理、备份恢复、对象管理等多个方面的内容。 数据库应急状态与备份恢复 数据库可能会出现逻辑不一致的情况,例如银行账户意外存入100万美…

张小明 2025/12/27 3:10:37 网站建设