使用两个数据中心和本地仲裁写入Cassandra时的同步延迟

使用两个数据中心和本地仲裁写入Cassandra时的同步延迟,cassandra,Cassandra,这个问题的动机是从这个伟大的理论出发的。我最终从《卡桑德拉》的最终一致性中得到了一些关于它们含义的澄清。非常清楚地解释了提交日志会发生什么。现在,我想了解当您有两个数据中心并且使用本地仲裁的一致性时会发生什么。这是一个场景:我刚刚完成对数据中心1的写入,提交日志被刷新/同步到磁盘,另外两个副本也被同步。写入第二个数据中心将在何时进行? 我想其中一个实例会启动同步过程,但会有延迟。什么事耽搁了?此外,如果数据中心1在同步之前关闭,则数据中心2将不可用。但是,如果数据中心2中的数据中写入了同一行,会

这个问题的动机是从这个伟大的理论出发的。我最终从《卡桑德拉》的最终一致性中得到了一些关于它们含义的澄清。非常清楚地解释了提交日志会发生什么。现在,我想了解当您有两个数据中心并且使用本地仲裁的一致性时会发生什么。这是一个场景:我刚刚完成对数据中心1的写入,提交日志被刷新/同步到磁盘,另外两个副本也被同步。写入第二个数据中心将在何时进行? 我想其中一个实例会启动同步过程,但会有延迟。什么事耽搁了?此外,如果数据中心1在同步之前关闭,则数据中心2将不可用。但是,如果数据中心2中的数据中写入了同一行,会发生什么情况呢。这一行如何协调? 如果数据中心一号在同步过程中出现同样的问题?数据何时会保持一致,是否存在任何漏洞


谢谢

您必须认为,在您的情况下,到第二个数据中心的复制是以异步方式完成的。延迟通常以毫秒为单位。 如果一个数据中心宕机,那么您将同一行写入第二个数据中心,就像两次不同的写入一样,因此不同的时间戳和最后一次写入将获胜(当然是在不同数据的情况下)。在修复过程中,或读取修复过程中,或如果您将以一致性级别ALL读取,则会发生对账

这是Ryan Svihla的一篇非常好的文章,用不同的案例解释了主题:


我希望这有帮助

它并不是一个真正的异步复制-协调器节点同时写入所有复制副本,一致性级别只是定义了我们要等待多少个答案:我缺少的是何时开始写入第二个DC以及写入的时间。协调员是否刚刚写信给当地DC,并且是在将答案返回给客户之后还是之前完成的?它是写入的复制副本之一吗?它是异步完成的吗?@Fabio协调器在获得足够的响应以满足配置的一致性级别时,会立即将答案返回给客户端。因此,如果您在LOCAL_ONE上写入,它将等待,直到从本地数据中心的复制副本获得单个响应,但对所有其他复制副本的写入仍在发生。根据Alex Ott提供的图片,协调员将作为同一请求的一部分写入第二个DC,即使对客户端的响应已经发送,对吗?有一些同步操作,其他是异步的。使用CL local_QUORM向远程(从cordinator的角度来看)数据中心写入数据应视为异步,因为远程数据中心中的所有节点都不参与一致性级别,详细信息请参见: