分布式节点在没有单点故障的情况下同步数据

时间:2016-10-06 22:09:57

标签: real-time distributed-system

最近,我一直在阅读有关水平扩展服务器的方法。

大多数方法(如果不是全部)都需要中央服务器来同步数据(这里广泛使用Redis)。这意味着多个节点依赖于一个中央服务器,即一个故障点,以便在它们之间同步数据。

我知道我可以有多个Redis实例,这些节点可以连接到备份Redis服务器并保持同步数据以防万一主Redis服务器出现故障,但我不喜欢这个想法有" 2层" (服务器层和Redis层)实现这一点。是否有任何软件或方法可以让多个节点在它们之间同步,只在它们之间连接?

我的意思是,就像在同一台3台服务器上安装3台Redis服务器一样。如果一台服务器出现故障,它会随Redis服务器一起关闭,因此其他两台服务器机器连接到安装在自己机器上的后备Redis服务器,但是不是这个hackish thingy,而是拥有一块简单连接的软件。节点,同步数据等。

我一直在思考一个系统,但是出现了一个问题。可以扩展到具有多个Redis实例的问题"的事情。

想象一下,我在不同的数据中心有一个带有X Redis服务器的系统,并且在不同的数据中心也有X服务器。我不希望它们位于同一数据中心,以避免单点故障。现在,让我们说一半服务器失去与另一半的连接,不是因为机器故障,而是因为连接失败(ISP问题等)。奴隶会认为主Redis服务器已经死了,因为连接丢失了,他们无法重新连接,同样的部分服务器也失去了连接,他们会认为主Redis已经死了,并且连接并使用奴隶同步数据。

现在我们有一个主Redis服务器的场景,其中X服务器在它们之间同步数据,而一些从属Redis服务器与其他X服务器在它们之间同步数据。

有了这个,所有没有单点故障的分布式系统本身就是一个失败,因为仍然有一个单点故障,而不是让人们丢失数据,会使系统有不同的垃圾数据。

因为它将是实时数据,当连接在几分钟内恢复时,有一个"保存时间戳重新同步数据"不是解决方案。

你怎么看?任何解决方案?

0 个答案:

没有答案