我是分布式系统的新手,我正在阅读“简单的 Paxos”。它引起了很多喋喋不休,我正在考虑性能影响。
假设您正在构建一个全球分布的数据库,其中有几个位于不同位置的小型集群。尽量减少跨站点通信的数量似乎很重要。
您绝对需要使用共识的决定是什么?我唯一想到的肯定是决定是否从网络中添加或删除一个节点(或一组节点?)。这似乎是矢量时钟工作所必需的。另一个我不太确定的是决定写入同一位置的顺序,但这应该由通过 Paxos 选举的领导者来完成吗?
避免让系统中的所有节点一起做出决策会很好。每个本地集群中的几个节点是否可以参与跨集群决策,并且所有本地节点都使用本地 Paxos 进行通信以确定跨站点问题的本地答案?假设网络未饱和,延迟将是相同的,但跨站点网络流量会轻得多。
假设您可以沿行拆分数据库的表,并将每个行子集分配给节点子集。使用 Paxos 在系统中的所有机器上选择一组节点来包含每个数据子集,然后只在这些节点之间为处理该数据子集的所有操作运行 Paxos,这是否正常?
还有一个包罗万象:人们是否正在采取其他与设计相关的或算法优化来解决这个问题?