NodeJS 如果我在50多个pod中使用Raft Consensus Algorithm,我会遇到哪些主要问题?

camsedfj  于 5个月前  发布在  Node.js
关注(0)|答案(1)|浏览(66)

我一直在研究筏共识算法的一个问题,我试图解决,我已经决定,筏确实是要走的路。
然而,由于我正在工作的环境的性质,一次至少有20个pod,使用autoscale它可以一路增加到100+。为了简单起见,我们假设50+ pod。
所以,由于领导者选择机制是相当“灵活”的,拥有比互联网上的例子(3 - 5 - 7等)更多的pod自然让我认为在20-50-100 pod环境中这样做是棘手/危险的。
我找不到任何关于在如此大规模下使用Raft的风险的信息。我知道etcd和K8S在内部使用Raft,所以也许这不会像我想的那样是一个问题。所以我的问题是,在有许多pod的大规模环境中使用Raft是否有任何潜在的主要缺点?
顺便说一下,我将在一个带有NodeJS微服务的K8S环境中使用它。根据服务发现的可用性,我将使用简单的TCP连接或使用中间Redis pub-sub进行通信。
谢谢你,谢谢

uqjltbpv

uqjltbpv1#

我不认为Raft在这两个用例上会有效率:

  • 由于有许多节点进出,重新配置集群将产生大量噪音。这是由于进程需要大多数服务器可用。例如,如果有100个节点,则需要50+1来提交下一次迭代;即使此迭代是重新配置(如在筏论文中所述)
  • 我不知道为什么有人会需要具有10个节点的Raft集群,除了扩展最终一致读取的非常特定的情况之外。具有10个节点意味着相同的信息存储在每个节点上,这可能相当浪费空间。

我可以推荐看看Pasifica方法吗?这就是Kafka的工作方式-非常可扩展和时间证明的系统。
PacificA背后的想法很简单:将控制平面与控制平面解耦。10个节点位于数据平面,3-5-或-7是控制平面。更多详细描述请访问:https://kafka.apache.org/documentation/#design_replicatedlog
作为一个侧节点,当一个人需要一个超过7个节点的集群时,PacificA通常是一个很好的选择。

相关问题