问题描述
我没有看到 RAFT 在实现分布式数据库方面的巨大优势。如果客户端只能写入领导者,那么领导者仍然会成为阻塞点——或单点故障。理想情况下,我想要一种方法,多个客户端可以写入多个数据库,然后数据库在它们之间进行同步。这将有助于扩大规模,因为没有单个数据库充当阻塞点。有没有办法做到这一点?
解决方法
Appache Kafka 引入了 KRaft 模式,避免了对 Zookeeper 的依赖作为改进。
即使在 Docker 的情况下,为了管理全局集群状态,Raft Consensus Algorithm 由管理器节点实现,而 Docker Engine 以 swarm 模式运行。
还有许多其他数据库使用 raft 算法。 HashiCorp 已经在使用它。
通常情况下,如果集群的leader由于某种原因崩溃或没有leader,则基于选举过程的随机节点将成为选举超时的候选节点。
Raft 是一种分布式共识协议,它满足在分布式系统中达成共识的关键要求。这将涉及多个服务器达成一致,决定值。简单来说,就像他们需要大多数服务器才能做出决定一样。这反过来又通过选举集群中的领导者来运作。
在推送模型的情况下,领导者负责跟踪集群中的复制过程。您还可以对代码进行更改,以便在跟随者处理自己的复制时使用 Pull 模型。
,在许多 raft 共识算法中,集群的领导者/控制器负责管理集群的健康状况,而在您的问题中,您建议它引入瓶颈,但事实并非如此,因为可能存在“领导者”到客户端将对其进行处理的数据存储中的每个数据段。如果我们以 kafka 为例,客户端正在针对主题分区的领导者工作,该领导者可以是集群内的任何代理,并且数据被复制到同步的追随者,它与领导者/控制器无关集群的