介绍Rabbitmg用于解决分布式事务必须掌握的5个核心概念
一款分布式消息中间件,基于erlang语言开发, 具备语言级别的高并发处理能力。和Spring框架是同一家公司。 支持持久化、高可用
分布式事务是一个业务问题,不能脱离具体的场景。
● 基于数据库XA/ JTA协议的方式 需要数据库厂商支持; JAVA组件有atomikos等 ● 异步校对数据的方式 支付宝、微信支付主动查询支付状态、对账单的形式; ● 基于可靠消息(MQ)的解决方案 异步场景;通用性较强;拓展性较高 ● TCC编程式解决方案 严选、阿里、蚂蚁金服自己封装的DTX
本文目标:针对所有人群,学会基于可靠消息来解决分布式事务问题。 分布式事务的解决方案,业务针对性很强,重要的是思路,而不是照搬
误以为这样的接口调用写法,就不会有分布式事务问题
上述两种情况,都会导致数据不一致的问题
通过MQ解决分布式事务的5个步骤, 以及分布式事务处理中要注意的地方
外卖下订单后,可以慢慢等待运单中心数据生成,并非强制要求同时性
最终使多方数据达到一致。
➢ 为了确保数据一定成功发送到MQ。 ➢ 在同一事务中,增加一个记录表的操作, 记录每一条发往MQ的数据以及它的发送状态
于是我们在订单系统中增加一个本地信息表
于是在代码实践中,不再通过HTTP接口调用运单系统接口,而是使用MQ
生成订单时,也保存本地信息表
-确保在SB中开启Confirm机制
兜底方案:定时检查消息表,超时没发送成功,再次重发
于是需要以下特性:
➢ 幂等性 防止重复消息数据的处理,一次用户操作,只对应一次数据处理
➢ 开启手动ACK模式
由消费者控制消息的重发/清除/丢弃
消费者处理失败,需要MQ再次重发给消费者。 出现异常一般会重试几次,由消费者自身记录重试次数,并进行次数控制(不会永远重试!)
消费者处理失败,直接丢弃或者转移到死信队列(DLQ) 重试次数过多、消息内容格式错误等情况,通过线上预警机制通知运维人员
口优点
口缺点
尽量避免分布式事务; 尽量将非核心事务做成异步;
CAP理论 BASE理论 2PC协议 3PC协议 Paxos算法. Raft一致性协议
原网址: 访问
创建于: 2021-08-18 18:58:12
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论