加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 移动互联 > 正文

纯技术干货分享:分布式事务处理方式总结

发布时间:2019-07-30 20:16:45 所属栏目:移动互联 来源:IT技术分享
导读:在项目开发中,经常会需要处理分布式事务。例如数据库分库分表之后,原来在一个单库上的操作可能会跨越多个数据库。系统服务化拆分之后,原来的在一个系统上的操作可能会跨越多个系统。就连我们平时经常使用到的缓存(如redis、memcache等)也可能涉及分布式

TCC两阶段提交的实现需要注意如下事项:

  1. 事务中的任何一个参与者都要确保在try阶段操作成功,在第二阶段就一定能commit成功。
  2. 参与者在实现commit和cancel接口时要考虑幂等,对重复的commit/cancel请求要能够正确处理。
  3. 业务上要考虑对两阶段中间状态(一阶段已完成,二阶段未开始)的处理。一般可以通过一些特殊文案,比如显示当前被冻结的账户余额。
  4. 对于状态型数据,当多个事务共同操作同一个资源时,要确保资源隔离。例如账户余额,确保不同的事务操作的金额是隔离的,彼此互不影响。
  5. 由于网络丢包、乱序等因素的影响,可能会导致参与者接收到一阶段try请求后,永远收不到commit/cancel请求,导致参与者的资源一直被锁定,永远不会被释放,这种情况叫做事务悬挂。为了防止事务悬挂的发生,可以在第一阶段try成功后,指定一个最大等待时间。超过这个最大等待时间就自动释放被锁定的资源。

总结

传统的单机事务应满足A(原子性)、C(一致性)、I(隔离型)、D(持久性)四个特性,属于刚性事务。由于分布式系统具有多个节点的特点,要求完全满足ACID这四个规范会非常的困难。所以就诞生了柔性事务BASE理论(Basic availability、Soft state、Eventual consistency)。

相比于单机事务,分布式事务在A和D上仍能够严格保证,但在C和I上就要有一定程度的限制放宽(允许看到中间状态数据、最终一致性)。

【编辑推荐】

  1. 实用架构技术,阿里P7架构师教你如何设计解决方案
  2. 架构师的技术升级之路
  3. Gartner发布:十大无线技术发展趋势
  4. 网络安全主要有哪些关键技术?浅谈网络安全的几个主要技术
  5. 一个被 CEO 逼疯的技术负责人的检讨书
【责任编辑:张燕妮 TEL:(010)68476606】
点赞 0

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读