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