复制延迟案例-一致前缀读

Posted JavaEdge.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复制延迟案例-一致前缀读相关的知识,希望对你有一定的参考价值。

该案例违反因果律。 想象先生和夫人之间的对话:

Mr
Mrs,你能看到多远未来?

Mrs
通常约10s,Mr.

这两句之间有因果关系:夫人听到先生的问题并回答该问题。想象第三者老王在通过从节点听对话。 夫人说的内容是从一个延迟很低的从节点读取,但先生所说的内容,从节点的延迟要大的多,如图-5,于是该观察者会听到:

Mrs
通常约十秒钟,Mr

Mr
Mrs,你能看到多远未来?

对观察者来说,看起来好像夫人在先生发问前就回答了问题。

防止这种异常,需要新类型的保证:一致前缀读(consistent prefix reads),若一系列写入按某个顺序发生,那么任何人读取这些写入时,也会看见它们以同样的顺序出现。

这是分片数据库中的特殊问题。若数据库总以相同顺序写入,则读总会看到一致的序列,不会发生这种异常。许多分布式数据库中,不同分片独立运行,因此不存在全局写入顺序。这就导致,当用户从DB读数据时,可能会看到DB某些部分处于较旧状态,某些处于较新状态。

解决方案

确保任何具有因果顺序关系的写人都交给一个分片来完成,但该方案实际的实现效率大打折扣 。

以上是关于复制延迟案例-一致前缀读的主要内容,如果未能解决你的问题,请参考以下文章

复制延迟案例-单调读

复制延迟案例-读己之写

msyql的备份和复制和atlas

redis主从复制数据延迟解决方案

Redis高可用

MySQL主从延迟复制实践及生产故障案例恢复实践