美文网首页
一致性--顺序保证

一致性--顺序保证

作者: MontyOak | 来源:发表于2018-07-15 11:00 被阅读25次

分布式系统中的事件发生顺序是一个非常重要的概念。有些有因果关系的事件发生本身就包含顺序:数据只能先createupdate;必须先有问题才能有回答。参考happen before的概念。符合因果关系的数据叫做因果一致性(causal consistency).
因果顺序并不是全局顺序,它只包含了有因果关系的事件发生顺序,对于并发事件是无法比较顺序的。从这个角度看,线性化是一种比因果一致更强的保证:前者可以判断任意两个事件的先后发生顺序,而后者只能判断有因果关系事件的发生顺序不能判断并发事件的发生顺序。因果顺序保证是在不牺牲系统性能下的最强一致性保证了。
在实际情况下,因果一致并不是很容易保证。客户端往往读取大量数据,写入少量数据,并不知道写入数据依赖哪些之前读取的数据,这些业务逻辑对于数据存储而言并不透明。由此,引入了版本号的概念,通常而言,版本号是一个单调增长(注意,在分布式发号器实现中不一定要去递增)的数字序列。版本号保证了全局顺序。关于分布式发号器,可以阅读一下美团的一个开源实现

接下来有一个全局顺序广播( total order broadcast)的概念。在分布式系统中,常做为配置中心使用的ZooKeeper,etcd等都实现了全局顺序广播。全局顺序广播有两个重要的前提:消息可靠投放和消息顺序到达。这种只追加的记录方式类似日志的数据结构。基于全局顺序广播保证的全局有序可以实现线性化数据存储。
您可以通过附加消息、读取日志并在消息返回给您时执行实际的读取操作来对日志进行排序。因此,消息在日志中的位置定义了读取发生的时间点。这也是etcd里quorum读取的原理。
如果日志允许您以一种线性方式获取最新日志消息的位置,您可以查询该位置,等待到该位置的所有条目交付给您,然后执行读取。这是zookeeper里sync的原理。

相关文章

  • zookeper

    zookeeper是一个分布式、可靠的、一致性协议,CAP理论保证了可用性,减少了一致性 --保证更改的顺序一致性...

  • 一致性--顺序保证

    分布式系统中的事件发生顺序是一个非常重要的概念。有些有因果关系的事件发生本身就包含顺序:数据只能先create再u...

  • 大数据生态圈里的一致性算法

    大数据生态圈中,保证一致性的方式举不胜举 Hadoop 用 Zookeeper(Zab,Paxos + 事务顺序)...

  • Zookeeper的zxid

    zxid,也就是事务id, 为了保证事务的顺序一致性,zookeeper 采用了递增的事 务 id 号(zxid...

  • session一致性保证

    目录 一致性保证 一致性保证 保证session一致性的架构设计常见方法: session同步法:多台web-se...

  • [Sheepdog] 恢复日志记录

    日志 介绍 该机制旨在帮助磁盘数据崩溃后仍能保证一致性,并提高写入性能。Sheepdog日志仅是顺序方式记录所有的...

  • kafka顺序保证

    kafka顺序保证 理想情况: Kafka 可以保证同 一个分区里的消息是有序的。 也就是说,如果生产者按照一定的...

  • 顺序一致性和线程一致性

    顺序一致性(Sequence Consistency) 顺序一致性指的是,同一个处理器上的不同操作(operati...

  • 浅谈MySQL如何保证ACID

    MySQL如何保证一致性 数据库通过原子性(A)、隔离性(I)、持久性(D)来保证一致性(C)。其中一致性是目的,...

  • volatile

    从顺序一致性,到volatile 顺序一致性 嗯?程序不是按我写的顺序执行的吗 那只是理性中的模型而已。在多线程的...

网友评论

      本文标题:一致性--顺序保证

      本文链接:https://www.haomeiwen.com/subject/zndupftx.html