我是分布式系统的新手,正在阅读有关“简单的Paxos”的信息。它引起了很多争议,我正在考虑性能方面的问题。
假设您正在建立一个全局分布的数据库,其中几个位于不同位置的小型集群。减少跨站点通信的数量似乎很重要。
总而言之:人们是否还进行了其他与设计相关或算法上的优化来解决这一问题?
最佳答案
好的问题,好的见解!
是的,性能也是我的团队在实践中遇到的问题。我们维护一致的数据库和分布式锁管理器;通常用于所有写入,某些读取和集群成员更新的Paxos。
以下是我们所做的一些优化:
通过这些优化,我们仍然会影响性能,因此我们将服务器分为三层。最底层是Paxos;它按照您的建议进行;即仅决定中间层的节点成员资格。中间层是内部自定义的高速链共识协议(protocol),该协议(protocol)对数据库进行共识和排序。 (顺便说一句,可以将Chain-consensus视为Vertical Paxos。)顶层现在仅维护数据库/锁和客户端连接。这种设计导致了几个数量级的延迟和吞吐量的提高。
这两个使我想起了Google Spanner paper。如果您跳过有关时间的部分,则实际上是在全局执行2PC,在分片上执行Paxos。 (IIRC。)
关于distributed-computing - paxos-避免在分布式系统中过度使用共识协议(protocol),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16307122/