返回

Facebook为何抛弃ZooKeeper改用自研配置管理系统?

见解分享

正文

在分布式系统中,配置管理是一项至关重要的任务。它涉及到对系统中的各种配置参数进行集中管理和分发,确保这些参数能够被所有相关组件正确地使用。配置管理系统需要具备高可用性、一致性和可扩展性,以满足分布式系统的高并发和高可靠性要求。

ZooKeeper是一个开源的分布式协调服务,被广泛用于分布式系统的配置管理。它提供了一个中央存储库,用于存储和管理配置参数。ZooKeeper使用ZooKeeper原子广播协议(ZooKeeper Atomic Broadcast, ZAB)来保证配置参数的一致性。ZAB协议是一种基于Paxos算法的分布式共识协议,能够保证在任何时刻,只有一个服务器对配置参数进行更新。

尽管ZooKeeper是一个优秀的分布式协调服务,但它也存在一些局限性。首先,ZooKeeper是一个集中式的系统,如果中央服务器发生故障,整个系统将会不可用。其次,ZooKeeper的扩展性有限,当系统规模不断扩大时,ZooKeeper的性能可能会成为瓶颈。

为了克服ZooKeeper的这些局限性,Facebook开发了自研的配置管理系统LAD(Location-Aware Distribution)。LAD是一个基于对等网络的分布式配置管理系统,它没有单点故障问题,并且具有良好的扩展性。

LAD使用一种称为位置感知分发(Location-Aware Distribution, LAD)的算法来管理配置参数。LAD算法将配置参数分散存储在不同的服务器上,并根据服务器的位置来决定哪台服务器负责处理哪些配置参数。这样可以有效地避免单点故障问题,并提高系统的扩展性。

LAD还使用了一种称为RAFT的一致性算法来保证配置参数的一致性。RAFT算法是一种基于多数派投票的分布式共识协议,能够保证在任何时刻,只有一台服务器对配置参数进行更新。

LAD已经在Facebook的生产环境中得到了广泛的应用,它被用于管理各种服务的配置参数,包括Cassandra、HBase和Kafka等。LAD的应用实践证明,它是一个高可用、一致性和可扩展的分布式配置管理系统。

总结

Facebook放弃ZooKeeper而选择自研配置管理系统LAD,主要是因为LAD具有以下优势:

  • 没有单点故障问题
  • 具有良好的扩展性
  • 使用RAFT一致性算法来保证配置参数的一致性

LAD已经在Facebook的生产环境中得到了广泛的应用,它被用于管理各种服务的配置参数,包括Cassandra、HBase和Kafka等。LAD的应用实践证明,它是一个高可用、一致性和可扩展的分布式配置管理系统。