你对分布式数据库中的一致性和反熵有理解吗?

首先

关于Apache Cassandra

Apache Cassandra被称为开源的分布式数据库管理系统。

与其他分布式数据库管理系统类似,我们可以使用多个通用服务器来构建一个数据库(为了开发等目的,也可以仅使用一个服务器来构建)。

在这里,我们省略了详细的解释,将介绍感兴趣的人们的角色交给官方网站和维基百科。

 

你对分布式数据库中的一致性和反熵有没有理解?

整合性的两个意义 de gè

Cassandra有一个缺点,就是有数据一致性的问题,这一点被广泛传言。而用来支持这个观点的根据之一就是CAP定理。

然而,这种混淆的指摘本身并不罕见,一方面也有关于CAP定理的一致性和ACID的一致性之间区别的信息在社会上流传。在这里,我们只想指出应该加以区分,具体细节留给这些信息来解释。

在下面,我将以不同的角度提供信息。

反熵

在Cassandra的术语中,有一个在其他数据库中很少听到的术语,那就是”反熵”。这个术语最初是在Dynamo中使用的,并且在Cassandra中,这个术语也被采用。

 

在Dynamo论文的“4.7处理永久性故障: 副本同步”一章中进行了讨论。

原本的意思.

大多数的人对熵有着直观的理解,似乎不需要解释,但为了避免误解(由于在这里,理解“反对”的意思可能比较困难,所以作为辅助线索)。

 

根据维基百科,熵的起源意义如下所述。

熵(英: entropy)是热力学和统计力学中定义的一种量的状态量。在热力学中,它被引入作为表示绝热条件下不可逆性的指标,而在统计力学中,它表示系统微观的“混乱度”。根据统计力学的结果,指出与从系统获取的信息有关,并开始在信息理论中应用。

在应用情报理论方面,有人这样说。

在信息论中,熵是用来衡量概率变量所包含信息量的度量标准,因此也被称为信息量。

熵可以解释为“(能量的)扩散状态、无秩序、混乱”。作为一个常听到的短语,我认为是指“熵增定律”。换句话说,如果任其不管,熵会自然增加。然而,需要注意的是,熵增仅是一个孤立系统的规律。在现实世界中,通常情况下,外界的干预(能量、物质)会阻止熵的无限增加。

在分散系统中,熵的含义是什么?

在分散系统中,Alex Petrov的《数据库内部》一书(O’Reilly的《详解数据库》)中设有一章(反熵和传播)讨论了熵的概念。

image.png

在集群内,将消息广播给所有其他进程是最简单的方法,对于节点数量较少的情况下能够很好地工作。但是,在大型集群中,由于节点数量过多,会带来很高的成本,并且可能会降低可靠性,因为太过依赖单个进程。每个单独的进程并不总是能够意识到网络中其他所有进程的存在。此外,广播进程和每个接收方的重叠运行时间是必需的,但在某些情况下可能很难实现。

为了缓解这些限制,我们假设有些更新可能会传播失败。协调器会尽最大努力向所有可用的参与者发送消息。然后,如果出现故障,反熵机制将使节点重新同步。这样,消息传递的责任由系统中的所有节点共享,并分为主要传递和周期同步的两个步骤。

注意:一般来说,“periodic” 可以翻译成 “定期的”,这可能是自然的翻译。但在这个上下文中,为了强调另外一个意思,我们选择不采用这个翻译。但并不意味着完全改变了原词的意思。我们根据掉尾句的用法,即“只有到句子末尾才能理解句意的句子”,判断这样翻译更为适当。

熵是系统无序的度量属性。在分散系统中,熵表示节点之间状态差异的程度。这一属性是不可取的,需要将其最小化,因此有许多方法可以处理熵。

通常情况下,反熵被用来将节点恢复到最新状态,当主要传送机制失败时。由于其他节点持续扩散信息,所以即使在某个时间点协调者发生故障,系统仍然能够正常运作。换句话说,反熵用于缩短收敛时间界限,在采用结果一致性的系统中应用。

熵修复,也就是反熵的过程,有以下阶段:

    • 書き込みリクエスト時

 

    • 読み込みリクエスト時

 

    マニュアル(通常のリクエストとは分離した操作、という意味で。システム的に自動化される場合も当然あります)

在DBaaS(数据库即服务)中,反熵操作虽然无需自觉,但在分布式数据库(属于一种类别,即CAP理论中的AP数据库,包括Cassandra)中,作为数据库工程师,我们必须明白它是必然存在的。

最后

之前,我写过以下的文章。

 

请问您对这些文章的标题“您是否理解?”这个问题,首先是针对自己的,但如果这篇文章对其他人有所帮助,那就太好了。

bannerAds