论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
物联网
›
物联网
›
【分布式事件】怎么解决分布式场景下数据一致性题目 ...
【分布式事件】怎么解决分布式场景下数据一致性题目 ...
小秦哥
金牌会员
|
2024-7-21 00:27:39
|
显示全部楼层
|
阅读模式
楼主
主题
979
|
帖子
979
|
积分
2937
分布式事件的由来
拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户余额服务。原本收到充值回调后,可以将修改订单状态和扣减余额放在一个mysql事件中完成的,但是呢,由于服务拆分了,就面对着需要调和2个服务才气完成这个事件,所以我们怎么解决分布式场景下数据一致性题目呢?
当地事件、分布式事件
如果说当地事件是解决单个数据源上的数据操作的一致性题目的话,那么分布式事件则是为了解决跨越多个数据源上数据操作的一致性题目。
弱一致性
数据更新后,如果能容忍后续的访问只能访问到部分或者全部访问不到,则是弱一致性。
最终一致性
就属于弱一致性。
强一致性
系统中某个数据被更新后,后续任何对该数据的读取操作都能得到该更新后的值。在任意时刻,全部节点中的数据都是一致的。
2PC
XA是X/Open CAE Specification (Distributed Transaction Processing)模型中界说的TM(Transaction Manager)与RM(Resource Manager)之间进行通讯的接口。
在XA规范中,数据库充当RM脚色,应用需要充当TM的脚色,即生玉成局的txId,调用XAResource接口,把多个当地事件调和为全局统一的分布式事件。
二阶段提交是XA的标准实现。它将分布式事件的提交拆分为2个阶段:prepare和commit/rollback。
2PC模型中,在prepare阶段需要等待全部参与子事件的反馈,因此可能造成数据库资源锁定时间过长,不得当并发高以及子事件生命周长较长的业务场景 。两阶段提交这种解决方案属于捐躯了一部分可用性来换取的一致性。
优缺点:
优点:实现简单,使用数据库本身的事件实现
缺点:需要数据库本身支持事件
TCC(补偿事件)
TCC 其实就是接纳的补偿机制,其焦颔首脑是:针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作。TCC模型是把锁的粒度完全交给业务处理。它分为三个阶段:
1、Try 阶段主要是对业务系统做检测及资源预留
2、Confirm 阶段主要是对业务系统做确认提交,Try阶段执行乐成并开始执行 Confirm阶段时,默认 Confirm阶段是不会出错的。即:只要Try乐成,Confirm一定乐成。
3、Cancel 阶段主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源开释
优缺点:
优点:可支持非事件数据库(redis),由业务自己编码实现
缺点:代码侵入性强
事件消息(半消息)
事件消息作为一种异步确保型事件, 将两个事件分支通过MQ进行异步解耦,事件消息的计划流程同样鉴戒了两阶段提交理论,整体交互流程如下图所示:
1、事件发起方首先发送prepare消息到MQ。
2、在发送prepare消息乐成后执行当地事件。
3、根据当地事件执行效果返回commit或者是rollback。
4、如果消息是rollback,MQ将删除该prepare消息不进行下发,如果是commit消息,MQ将会把这个消息发送给consumer端。
5、如果执行当地事件过程中,执行端挂掉,或者超时,MQ将会不停的扣问其同组的其它producer来获取状态。
Consumer端的消耗乐成机制有MQ包管。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
小秦哥
金牌会员
这个人很懒什么都没写!
楼主热帖
Python教程(5)——Python的第一个程序 ...
Kubernetes(k8s)安装以及搭建k8s-Das ...
〖Python接口自动化测试实战篇⑤〗- 接 ...
网易云信实时视频直播在TCP数据传输层 ...
java递归简介说明
liunx速记
海量监控数据处理如何做,看华为云SRE ...
从 Stream 到 Kotlin 再到 SPL
【问题】为什么 System.Timers.Timer ...
那些年用过的机械键盘
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
前端开发
快速回复
返回顶部
返回列表