《数据密集型应用》读书笔记——线性一致性

线性一致性与可串行化

线性一致性

线性一致性(线性化)为分布式系统提供了数据单一副本的假象,也就是对外表现看起来就像只有1个数据副本,并且所有操作都是原子发生的。

可串行化

可串行化为事务的隔离性保证,特别是涉及多个对象读写的事务,可串行化保证了并行事务的执行和串行执行事务的结果一致

区别

线性一致性是针对单一对象的读写而言,可串行化是涉及多个对象读写的事务。

线性化与串行化不同,它不构成事务,因此不能完全保证并发写的安全性。

数据库可以同时提供串行化和线性化,如两阶段锁便是可以同时提供串行化与线性化,而序列化的快照隔离不是线性化的。

从理论上讲,隔离是假装没有并发。

线性一致性的使用场景

  • Leader 选举
  • 分布式锁
  • 实现唯一约束
  • 时序依赖

全序广播

全序广播要求每个消息被传递一次,并且在所有节点上的顺序一致。如果每一轮消息传递都采用共识算法,即能保证每个节点每一轮收到的消息一致,回顾共识算法的四个性质:

  • Uniform agreement

每个节点最终采纳的提议是一致的,最终所有节点上消息的顺序保证是一致的。

  • Integrity

每个节点只采纳提议一次,不会重复采纳,保证了消息不会重复处理。

  • Validity

被采纳的值必须是由某个节点提议的,保证消息是真实有效的。

  • Termination

每个节点最终都会采纳提议,保证消息传递的可靠性。

可以推导出,全序广播等价于多轮共识算法,基于全序广播可以实现线性一致性,因此基于多轮共识算法可以实现线性一致性。

其他

fencing 假设每次锁服务在授予锁或租约时,还会同时返回一个fencing令牌, 该令牌(数 字)每授授予一次就会递增(例如,由锁服务增加) 。然后,要求客户端每次向存储 系统发送写请求时,都必须包 含 所持有的 fencing令牌。fencing (栅栏,隔离之意)

写倾斜 可以将写倾斜视为一种更广义的更新丢失问题。即如果两个事务读取 相 同的 一 组对 象,然后更新其中 一部分:不同的事务可能更新不同的对象,则可能发生写倾斜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章