分布式事务
分布式事务
在《数据库导论》中我们讨论了数据库中著名的
而随着互联网快速发展,SOA,微服务,云原生等服务架构模式正在被大规模的使用,现在分布式系统一般由多个独立的子系统组成,多个子系统通过网络通信互相协作配合完成各个功能。而且这个过程中会涉及到事务的概念,即保证交易系统和支付系统的数据一致性,此处我们称这种跨系统的事务为分布式事务。具体而言,分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果
分布式事务同样需要满足原子性,一致性,隔离性等特征:
-
事务的原子性:事务操作跨不同节点,当多个节点某一节点操作失败时,需要保证多节点操作的要么不做,要么全做(All or Nothing)的原子性。在《一致性与共识》章节中我们也讨论过,共识算法的典型应用场景之一就是原子提交(atomic commit
) 。 -
事务的一致性:当发生网络传输故障或者节点故障,节点间数据复制通道中断,在进行事务操作时需要保证数据一致性,保证事务的任何操作都不会使得数据违反数据库定义的约束、触发器等规则。
-
事务的隔离性:事务隔离性的本质就是如何正确处理多个并发事务的读写冲突和写写冲突,因为在分布式事务控制中,可能会出现提交不同步的现象,这个时候就有可能出现“部分已经提交”的事务。此时并发应用访问数据如果没有加以控制,有可能出现“脏读”问题。
事务是为了保证数据的一致性,对于分布式的应用而言,不可能同时满足
Links
-
https://zhuanlan.zhihu.com/p/353781389 七种分布式事务的解决方案,一次讲给你听
-
https://mp.weixin.qq.com/s/vgohXl1LxYk3CyDI8WHxwA 还不理解“分布式事务”?这篇给你讲清楚!非常详细的解释,适合提取到详情中
-
https://cubox.pro/c/tUVYVt 聊一聊分布式事务