数据库扩展与事件聚合技术详解
1. 多领导复制
多领导复制和无领导复制是用于扩展写入和数据库存储大小的技术。与单领导复制不同,它们需要处理竞态条件。
1.1 多领导复制原理
在多领导复制中,有多个节点被指定为领导者,写入操作可以在任何一个领导者上进行。每个领导者必须将其写入操作复制到所有其他节点。
1.2 一致性问题及解决方法
这种复制方式在操作顺序很重要的情况下会引入一致性和竞态条件。例如,当一个领导者正在更新某一行,而另一个领导者正在删除同一行时,最终结果应该是什么?使用时间戳来排序操作是行不通的,因为不同节点上的时钟无法完美同步。即使服务器时钟定期与同一源进行同步,它们之间也会有几毫秒甚至更大的差异。如果在小于这个差异的时间间隔内向不同服务器发出查询,就无法确定操作的顺序。
数据库一致性是指数据库事务将数据库从一个有效状态转换到另一个有效状态,保持数据库的不变性。常见的一致性理解包括:
1. 对多个副本执行相同的查询应返回相同的结果,即使这些副本位于不同的物理服务器上。
2. 影响相同行的不同物理服务器上的数据操作语言(DML)查询(如 INSERT、UPDATE 或 DELETE)应按发送顺序执行。
我们可以接受最终一致性,但特定用户可能需要接收对他们来说有效的数据状态。例如,用户 A 查询计数器的值,将计数器加 1,然后再次查询该计数器的值,用户 A 应该收到加 1 后的值。而其他查询该计数器的用户可能会得到加 1 之前的值,这称为写后读一致性。
1.3 竞态条件情况
DML 查询在不同物理服务器上影响相同行时可能会导致
数据库扩展与事件聚合技术
超级会员免费看
订阅专栏 解锁全文
2万+

被折叠的 条评论
为什么被折叠?



