diff --git a/docs/notes/分布式.md b/docs/notes/分布式.md index dc5c069d..b7e7db86 100644 --- a/docs/notes/分布式.md +++ b/docs/notes/分布式.md @@ -103,6 +103,11 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。 +分布式锁和分布式事务区别: + +- 锁问题的关键在于进程操作的互斥关系,例如多个进程同时修改账户的余额,如果没有互斥关系则会导致该账户的余额不正确。 +- 而事务问题的关键则在于事务涉及的一系列操作需要满足 ACID 特性,例如要满足原子性操作则需要这些操作要么都执行,要么都不执行。 + ## 2PC 两阶段提交(Two-phase Commit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真正执行事务。 diff --git a/notes/分布式.md b/notes/分布式.md index dc5c069d..b7e7db86 100644 --- a/notes/分布式.md +++ b/notes/分布式.md @@ -103,6 +103,11 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。 +分布式锁和分布式事务区别: + +- 锁问题的关键在于进程操作的互斥关系,例如多个进程同时修改账户的余额,如果没有互斥关系则会导致该账户的余额不正确。 +- 而事务问题的关键则在于事务涉及的一系列操作需要满足 ACID 特性,例如要满足原子性操作则需要这些操作要么都执行,要么都不执行。 + ## 2PC 两阶段提交(Two-phase Commit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真正执行事务。