当前位置: 首页 > article >正文

秒杀系统主库宕机不丢单方案-03-本地消息表

秒杀系统主库宕机不丢单方案本地消息表事务分离补偿机制方案概述本地消息表方案通过在应用层引入消息表机制将事务操作与消息发送分离实现最终一致性。该方案是秒杀系统主库宕机不丢单的兜底设计即使主库故障也能通过补偿机制恢复数据。核心原理1. 事务分离架构用户请求本地事务1: 订单创建本地事务2: 消息表记录异步发送消息从库消费消息从库事务处理2. 工作流程本地事务: 应用先完成订单创建等核心操作消息记录: 在同一事务中记录消息到本地消息表异步发送: 后台线程从消息表读取消息并发送到消息队列从库消费: 从库消费消息并执行相应操作补偿机制: 消息发送失败时通过定时任务重试3. 消息表设计CREATETABLElocal_message(idBIGINTAUTO_INCREMENTPRIMARYKEY,business_idVARCHAR(64)NOTNULL,-- 业务IDbusiness_typeVARCHAR(32)NOTNULL,-- 业务类型message_contentTEXTNOTNULL,-- 消息内容statusTINYINTNOTNULLDEFAULT0,-- 0:待发送 1:已发送 2:失败retry_countINTNOTNULLDEFAULT0,-- 重试次数max_retryINTNOTNULLDEFAULT3,-- 最大重试次数create_timeDATETIMENOTNULL,-- 创建时间update_timeDATETIMENOTNULL,-- 更新时间send_timeDATETIME,-- 发送时间UNIQUEKEYuk_business(business_id,business_type));实战配置1. 应用层实现ServicepublicclassOrderService{AutowiredprivateOrderDaoorderDao;AutowiredprivateMessageDaomessageDao;AutowiredprivateMessageSendermessageSender;TransactionalpublicvoidcreateOrder(Orderorder){// 1. 创建订单orderDao.insert(order);// 2. 记录消息LocalMessagemessagenewLocalMessage();message.setBusinessId(order.getId());message.setBusinessType(ORDER_CREATE);message.setMessageContent(JSON.toJSONString(order));messageDao.insert(message);}Scheduled(fixedDelay5000)publicvoidsendMessages(){ListLocalMessagemessagesmessageDao.selectUnsentMessages();for(LocalMessagemessage:messages){try{messageSender.send(message);message.setStatus(1);// 已发送}catch(Exceptione){message.setRetryCount(message.getRetryCount()1);if(message.getRetryCount()message.getMaxRetry()){message.setStatus(2);// 发送失败}}messageDao.update(message);}}}2. 消息消费者ComponentpublicclassOrderMessageConsumer{AutowiredprivateOrderDaoorderDao;RabbitListener(queuesorder_queue)publicvoidhandleOrderMessage(StringmessageContent){OrderorderJSON.parseObject(messageContent,Order.class);orderDao.insert(order);}}3. 补偿机制ServicepublicclassCompensationService{AutowiredprivateMessageDaomessageDao;Scheduled(fixedDelay30000)publicvoidcompensateFailedMessages(){ListLocalMessagefailedMessagesmessageDao.selectFailedMessages();for(LocalMessagemessage:failedMessages){if(message.getRetryCount()message.getMaxRetry()){try{messageSender.send(message);message.setStatus(1);message.setRetryCount(message.getRetryCount()1);}catch(Exceptione){// 继续保留失败状态等待下次重试}messageDao.update(message);}}}}优缺点分析优点最终一致性: 通过补偿机制确保数据最终一致解耦设计: 应用与消息系统解耦提高系统灵活性容灾能力强: 主库故障时消息表数据不会丢失扩展性好: 支持多种消息中间件缺点实现复杂: 需要额外的消息表和补偿逻辑数据延迟: 消息处理存在延迟不是强一致性重复消费: 需要处理消息重复问题适用场景高并发秒杀系统: 并发量在20000 QPS对数据一致性要求较高的业务: 如订单、支付已有消息队列基础设施: 如RabbitMQ、Kafka实战案例某电商巨头秒杀活动场景: 双11大促预计并发量50000 QPS配置:本地消息表方案RabbitMQ作为消息中间件3个从库消费消息补偿机制重试3次效果:零数据丢失成功保障订单不丢单平均响应时间120ms系统吞吐量45000 QPS消息补偿成功率99.5%最佳实践幂等设计: 确保消息消费的幂等性避免重复处理分片策略: 对消息表进行分片提高查询性能监控告警: 建立消息延迟和失败监控死信队列: 处理无法重试的消息幂等性处理示例ServicepublicclassOrderMessageConsumer{AutowiredprivateOrderDaoorderDao;RabbitListener(queuesorder_queue)publicvoidhandleOrderMessage(StringmessageContent){OrderorderJSON.parseObject(messageContent,Order.class);// 检查订单是否已存在OrderexistingOrderorderDao.selectById(order.getId());if(existingOrder!null){return;// 已处理直接返回}// 处理订单orderDao.insert(order);}}注意事项事务边界: 确保本地事务的原子性消息序列化: 选择合适的消息序列化方式重试策略: 合理设置重试次数和间隔性能监控: 监控消息处理性能和延迟总结本地消息表方案通过事务分离和补偿机制实现了秒杀系统主库宕机不丢单的兜底设计。该方案在最终一致性和系统可用性之间取得了平衡适用于高并发秒杀场景。建议结合幂等设计和监控机制确保系统的稳定性和可靠性。

相关文章:

秒杀系统主库宕机不丢单方案-03-本地消息表

秒杀系统主库宕机不丢单方案:本地消息表(事务分离补偿机制) 方案概述 本地消息表方案通过在应用层引入消息表机制,将事务操作与消息发送分离,实现最终一致性。该方案是秒杀系统主库宕机不丢单的兜底设计,即…...

Akagi技术深度解析:开源雀魂AI辅助工具完全实战指南

Akagi技术深度解析:开源雀魂AI辅助工具完全实战指南 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將,能夠使用自定義的AI模型實時分析對局並給出建議,內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi City, Amatsuk…...

秒杀系统主库宕机不丢单方案-02-半同步AFTER_SYNC

秒杀系统主库宕机不丢单方案:半同步AFTER_SYNC(主从确认再提交) 方案概述 半同步复制AFTER_SYNC方案是MySQL 5.7版本引入的高级复制机制,通过主从节点之间的确认机制确保数据不丢失。该方案在主库提交事务前,等待至少一…...

一站式AI应用开发:在PyTorch 2.8环境中集成Dify与Ollama部署大模型

一站式AI应用开发:在PyTorch 2.8环境中集成Dify与Ollama部署大模型 1. 企业级AI开发的新范式 想象一下这样的场景:你的开发团队需要在两周内上线一个智能客服系统,要求能理解专业术语、生成高质量回复,还要能与企业现有系统无缝…...

技术洞察:zyfun如何重构跨平台视频播放体验

技术洞察:zyfun如何重构跨平台视频播放体验 【免费下载链接】zyfun 跨平台桌面端视频资源播放器,免费高颜值. 项目地址: https://gitcode.com/gh_mirrors/zy/zyfun 在数字娱乐快速发展的今天,跨平台视频播放器面临着系统兼容性、性能优化和用户体…...

HsMod:炉石传说个性化增强工具 玩家的全方位游戏体验优化方案

HsMod:炉石传说个性化增强工具 玩家的全方位游戏体验优化方案 【免费下载链接】HsMod Hearthstone Modify Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod 你是否曾因炉石传说中繁琐的操作流程而感到沮丧?是否希望拥有…...

GNU Radio滤波器设计实战指南:从原理到高性能实现

GNU Radio滤波器设计实战指南:从原理到高性能实现 【免费下载链接】gnuradio GNU Radio – the Free and Open Software Radio Ecosystem 项目地址: https://gitcode.com/gh_mirrors/gn/gnuradio GNU Radio作为开源软件定义无线电生态系统,提供了…...

【数据结构】红黑树(Red-Black Tree)

前言在上一篇博客中,我们学习了 AVL 树,为了保持绝对的平衡,它在插入和删除时会疯狂地进行左旋和右旋。但在现代的Java集合框架中(如 TreeMap、TreeSet,以及 Java 8 之后的 HashMap),并没有选择…...

微信好友检测神器:一键识别谁删了你,轻松管理社交圈

微信好友检测神器:一键识别谁删了你,轻松管理社交圈 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFr…...

3步打造高效右键菜单:让Windows操作提速50%

3步打造高效右键菜单:让Windows操作提速50% 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 你是否也曾在右键点击文件时,面对长达20个选项…...

Qwen-Edit-2509多角度切换技术:如何用单张图片生成全视角内容?

Qwen-Edit-2509多角度切换技术:如何用单张图片生成全视角内容? 【免费下载链接】Qwen-Edit-2509-Multiple-angles 项目地址: https://ai.gitcode.com/hf_mirrors/dx8152/Qwen-Edit-2509-Multiple-angles 在视觉创作领域,你是否曾为拍…...

抑制素A抗体如何提升妊娠中期唐氏综合征筛查的效能?

一、为何抑制素A成为妊娠期的重要生物标志物?抑制素A是一种由α和βA亚基通过二硫键连接形成的异源二聚体糖蛋白。在非妊娠期,它主要由卵巢颗粒细胞分泌,作为反馈调节因子,选择性地抑制垂体前叶分泌卵泡刺激素。进入妊娠状态后&am…...

Vue2项目构建优化实战:时间戳防缓存与资源压缩的配置详解

1. 为什么Vue2项目需要构建优化 最近接手了一个老项目的维护工作,发现每次前端更新后总有用户反馈页面显示异常。排查后发现是浏览器缓存惹的祸——用户访问的仍然是旧版本的静态资源。这让我意识到构建优化的重要性,特别是对于需要频繁更新的业务系统。…...

数字记忆自主化:GetQzonehistory技术架构与数据保护实践指南

数字记忆自主化:GetQzonehistory技术架构与数据保护实践指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 一、技术演进视角下的数据脆弱性危机 数字存储技术的迭代速度与…...

Windows驱动存储深度管理:从问题诊断到系统优化的完整解决方案

Windows驱动存储深度管理:从问题诊断到系统优化的完整解决方案 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 问题发现:驱动管理中的隐形痛点与风险 系…...

Kandinsky-5.0-I2V-Lite-5s实战:基于Dify平台构建无代码视频生成应用

Kandinsky-5.0-I2V-Lite-5s实战:基于Dify平台构建无代码视频生成应用 1. 引言:让图片动起来的零门槛方案 最近遇到不少朋友在问:有没有什么简单的方法,能让静态图片变成动态视频?传统方案要么需要专业视频编辑技能&a…...

魔兽争霸3终极优化指南:如何解锁180fps帧率限制并解决现代硬件兼容性问题

魔兽争霸3终极优化指南:如何解锁180fps帧率限制并解决现代硬件兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸3作为经…...

从零到专业:League Director 让你的英雄联盟回放变成电影级大片

从零到专业:League Director 让你的英雄联盟回放变成电影级大片 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leaguedirector …...

YouTube视频一直转圈?加载卡顿原因分析与排查方法(2026)

在日常开发或使用在线视频平台时,常见一个问题:视频播放过程中出现持续加载、卡顿甚至无法播放的情况。这类问题并不一定由带宽不足引起,而往往与浏览器、网络链路以及设备性能等多方面因素有关。本文从技术角度出发,对视频加载流…...

ESP32 RMT硬件驱动RF遥控库:替代rc-switch的异步OOK方案

1. 项目概述RCSwitchRmt 是一款专为 ESP32 系列微控制器设计的射频(RF)OOK(On-Off Keying,开关键控)通信库,其核心目标是提供一种现代、异步、非阻塞的硬件驱动型替代方案,以取代广为人知但已显…...

PasteMD用户调研报告:2024年文档格式转换需求分析

PasteMD用户调研报告:2024年文档格式转换需求分析 1. 调研背景与核心发现 最近整理了500份来自不同行业用户的实际反馈,这些反馈不是问卷里的标准答案,而是真实工作场景中留下的痕迹——有深夜赶论文时的抱怨截图,有项目汇报前的…...

实现网页完整捕获:Full Page Screen Capture技术解析与应用指南

实现网页完整捕获:Full Page Screen Capture技术解析与应用指南 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chr…...

Qwen3.5-9B-AWQ-4bit企业应用落地:电商商品图智能解析与文字提取实战

Qwen3.5-9B-AWQ-4bit企业应用落地:电商商品图智能解析与文字提取实战 1. 电商场景下的图片理解挑战 在电商运营中,每天需要处理海量商品图片。传统的人工审核和标注方式面临三大痛点: 效率瓶颈:人工处理一张商品图平均需要3-5分…...

一键捕获完整网页:Full Page Screen Capture 高效解决方案

一键捕获完整网页:Full Page Screen Capture 高效解决方案 【免费下载链接】full-page-screen-capture-chrome-extension One-click full page screen captures in Google Chrome 项目地址: https://gitcode.com/gh_mirrors/fu/full-page-screen-capture-chrome-e…...

SeqGPT-560M效果展示:跨句指代消解能力——‘该公司’→‘北京智云科技有限公司’

SeqGPT-560M效果展示:跨句指代消解能力——‘该公司’→‘北京智云科技有限公司’ 今天,我想和你聊聊一个在信息抽取领域里特别“聪明”的能力——跨句指代消解。听起来有点专业,对吧?别担心,我用大白话给你解释。 想…...

三星 Infinite AI 葡萄酒冰箱:智能厨房新尝试能否突围?

AI 加持,葡萄酒管理新体验周一,三星推出了 Infinite AI 葡萄酒冰箱,目前仅在韩国有售。这款冰箱采用了“AI 葡萄酒管理器”,借助安装在顶部的“AI 视觉”摄像头,能检测用户放入或取出的酒瓶及位置,还能分析…...

3步突破Navicat试用期限制:让数据库管理工具持续为你服务

3步突破Navicat试用期限制:让数据库管理工具持续为你服务 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 作为数据库开发者的日常伴侣,Navicat以其直观的…...

Kandinsky-5.0-I2V-Lite-5s保姆级教程:从访问https://gpu-1pm4kagkou-7860.web.gpu.csdn.net/开始

Kandinsky-5.0-I2V-Lite-5s保姆级教程:从访问https://gpu-1pm4kagkou-7860.web.gpu.csdn.net/开始 1. 认识Kandinsky-5.0-I2V-Lite-5s Kandinsky-5.0-I2V-Lite-5s是一款轻量级的图生视频模型,它能将静态图片转化为动态视频。你只需要上传一张图片&…...

3分钟搞定100个Excel文件:极速多表格查询工具让数据搜索效率提升30倍

3分钟搞定100个Excel文件:极速多表格查询工具让数据搜索效率提升30倍 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 你是否经历过这样的绝望时刻?当领导要求从20个Excel报表中…...

效率提升秘籍:利用快马AI生成自动化脚本高效管理50台云桌面

效率提升秘籍:利用快马AI生成自动化脚本高效管理50台云桌面 手动配置和管理大量云桌面效率低下,尤其是当需要同时管理50台甚至更多云桌面时,重复性的操作不仅耗时耗力,还容易出错。最近我在InsCode(快马)平台上尝试了一个自动化运…...