多案分库分表带来的问题-分布式事务

比如在一个贷款的流程里面,合同系统登记了数据,放款系统也必须生成放款记录,如果两个动作不是同时成功或者同时失败,就会出现数据一致性的问题。如果在一个数据库里面,我们可以用本地事务来控制,但是在不同的数据库里面就不行了。所以分布式环境里面的事务,我们也需要通过一些方案来解决。

复习一下。分布式系统的基础是CAP 理论。

1.C (一致性) Consistency:对某个指定的客户端来说,读操作能返回最新的写操作。对于数据分布在不同节点上的数据来说,如果在某个节点更新了数据,那么在其他节点如果都能读取到这个最新的数据,那么就称为强一致,如果有某个节点没有读取到,那就是分布式不一致。

2.A (可用性) Availability:非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。可用性的两个关键一个是合理的时间,一个是合理的响应。

合理的时间指的是请求不能无限被阻塞,应该在合理的时间给出返回。合理的响应指的是系统应该明确返回结果并且结果是正确的

3.P (分区容错性) Partition tolerance:当出现网络分区后,系统能够继续工作。打个比方,这里集群有多台机器,有台机器网络出现了问题,但是这个集群仍然可以正工作。

CAP 三者是不能共有的,只能同时满足其中两点。基于AP,我们又有了BASE 理论。

基本可用(Basically Available):分布式系统在出现故障时,允许损失部分可用功能,保证核心功能可用。

软状态(Soft state):允许系统中存在中间状态,这个状态不影响系统可用性,这里指的是CAP 中的不一致。

最终一致(Eventually consistent):最终一致是指经过一段时间后,所有节点数据都将会达到一致。

分布式事务有几种常见的解决方案:

1、全局事务(比如XA 两阶段提交;应用、事务管理器(TM)、资源管理器(DB)),例如Atomikos

2、基于可靠消息服务的分布式事务

3、柔性事务TCC(Try-Confirm-Cancel)tcc-transaction

4、最大努力通知,通过消息中间件向其他系统发送消息(重复投递+定期校对)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值