Distributed computing 避免在分布式系统中过度使用协商一致协议

Distributed computing 避免在分布式系统中过度使用协商一致协议,distributed-computing,paxos,Distributed Computing,Paxos,我是分布式系统的新手,我正在阅读“简单Paxos”。它会引起很多闲聊,我正在考虑性能影响 假设您正在构建一个全球分布的数据库,其中有几个位于不同位置的小型ish集群。将跨站点通信量降至最低似乎很重要 什么是你绝对需要使用共识的决定?我唯一能确定的是决定是否从网络中添加或删除一个节点(或一组节点?)。这似乎是矢量时钟工作所必需的。另一个我不太确定的问题是决定向同一位置写入的顺序,但这应该由通过Paxos选出的领导人来完成吗 最好避免让系统中的所有节点一起做出决策。每个本地集群上的几个节点是否可以参

我是分布式系统的新手,我正在阅读“简单Paxos”。它会引起很多闲聊,我正在考虑性能影响

假设您正在构建一个全球分布的数据库,其中有几个位于不同位置的小型ish集群。将跨站点通信量降至最低似乎很重要

  • 什么是你绝对需要使用共识的决定?我唯一能确定的是决定是否从网络中添加或删除一个节点(或一组节点?)。这似乎是矢量时钟工作所必需的。另一个我不太确定的问题是决定向同一位置写入的顺序,但这应该由通过Paxos选出的领导人来完成吗

  • 最好避免让系统中的所有节点一起做出决策。每个本地集群上的几个节点是否可以参与跨集群决策,并且所有本地节点都可以使用本地Paxos进行通信,以确定跨站点问题的本地答案?假设网络未饱和,延迟将是相同的,但跨站点网络流量将轻得多

  • 假设您可以沿行分割数据库的表,并将行的每个子集分配给节点的子集。在系统中的所有机器上使用Paxos选择一组节点来包含数据的每个子集,然后针对处理该数据子集的所有操作仅在这些节点之间运行Paxos,这正常吗


  • 还有一个要点:人们还有没有其他与设计相关的或算法优化来解决这个问题?

    好问题,好见解

    它会引起很多闲聊,我正在考虑性能影响

    假设您正在构建一个全球分布的数据库,其中有几个位于不同位置的小型ish集群。将跨站点通信量降至最低似乎很重要

    什么是你绝对需要使用共识的决定?我唯一能确定的是决定是否从网络中添加或删除一个节点(或一组节点?)。这似乎是矢量时钟工作所必需的。另一个我不太确定的问题是决定向同一位置写入的顺序,但这应该由通过Paxos选出的领导人来完成吗

    是的,我的团队在实践中也发现了性能问题。我们维护一个一致的数据库&分布式锁管理器;最初使用Paxos进行所有写入、一些读取和集群成员身份更新

    以下是我们所做的一些优化:

    • 节点尽可能将转换发送给杰出的提议者/学习者(通过Paxos选出),该提议者/学习者
      • 决定写入顺序,以及
      • 在等待前一个实例的响应时进行批处理转换。(但配料过多也会造成问题。)
    • 我们曾考虑过使用multi-paxos,但最终我们做了一些更酷的事情(见下文)
    通过这些优化,我们仍然在损害性能,所以我们将服务器分为三层。底层是帕克斯;它按你的建议做;即。仅决定中间层的节点成员资格。中间层是一个定制的内部高速链一致性协议,它为数据库进行一致性和排序。(顺便说一句,链共识可以看作是垂直的Paxos。)顶层现在只维护数据库/锁和客户端连接。这种设计带来了几个数量级的延迟和吞吐量改进


    最好避免让系统中的所有节点一起做出决策。每个本地集群上的几个节点是否可以参与跨集群决策,并且所有本地节点都可以使用本地Paxos进行通信,以确定跨站点问题的本地答案?假设网络未饱和,延迟将是相同的,但跨站点网络流量将轻得多

    假设您可以沿行分割数据库的表,并将行的每个子集分配给节点的子集。在系统中的所有机器上使用Paxos选择一组节点来包含数据的每个子集,然后针对处理该数据子集的所有操作仅在这些节点之间运行Paxos,这正常吗


    这两个人在一起让我想起了过去。如果你跳过关于时间的部分,它基本上是在全局范围内进行的,而Paxos是在碎片上进行的。(IIRC.

    太好了,这正是我想学的!扳手纸也很好读。顺便说一下,我很难找到关于“链共识协议”的信息-你有链接吗?(我读过关于垂直Paxos的文章,但我不想偶然错过一些东西。)可以使用zookeeper作为服务(就像Google使用chubby作为服务)来处理核心配置和最小共享元数据的一致性。正如您所建议的,它可以是集群成员身份,也可以是在松散的服务器联盟(而不是紧密的集群)中的哪个服务器上处理哪些业务密钥。有关标准模式的信息,请参阅,从中可以围绕强一致的核心锁定/一致性服务构建更松散的处理联盟。