Zookeeper部署设计-学习笔记

Zookeeper部署设计

ZooKeeper的可靠性基于两个基本假设。

  1. 部署中只有少数服务器将发生故障。在这种情况下,故障意味着机器崩溃,或者是网络中的某些错误,这些错误将服务器与大多数服务器分开。
  2. 部署的计算机正常运行。正确操作意味着正确执行代码,使时钟正常工作以及使存储和网络组件一致运行。

以下各节包含ZooKeeper管理员要考虑的因素,以最大程度地使这些假设成立。其中一些是跨计算机的考虑因素,而其他则是部署中每台计算机都应考虑的事项。

跨机要求

为了使ZooKeeper服务处于活动状态,必须有大多数可以相互通信的非故障机器。要创建可以容忍F机故障的部署,您应该指望部署2xF + 1机。因此,由三台计算机组成的部署可以处理一个故障,而由五台计算机组成的部署可以处理两个故障。请注意,部署六台计算机只能处理两个故障,因为三台计算机不是多数。因此,ZooKeeper部署通常由奇数台计算机组成。

为了最大程度地容忍故障,您应该尝试使机器故障独立。例如,如果大多数计算机共享同一交换机,则该交换机的故障可能导致相关的故障并导致服务中断。共享电源电路,冷却系统等也是如此。

单机要求

如果ZooKeeper必须与其他应用程序竞争以访问诸如存储介质,CPU,网络或内存之类的资源,则其性能将显着下降。ZooKeeper具有很强的耐用性保证,这意味着它可以在允许负责更改的操作完成之前使用存储介质记录更改。然后,您应该意识到这种依赖性,如果要确保媒体不阻止ZooKeeper的操作,请格外小心。您可以采取以下措施来最大程度地减少这种退化:

  • ZooKeeper的事务日志必须位于专用设备上。(专用分区是不够的。)ZooKeeper会按顺序写入日志,而不进行查找。与其他进程共享日志设备可能导致查找和争用,进而导致数秒的延迟。
  • 不要将ZooKeeper放在可能引起交换的情况下。为了使ZooKeeper能够以任何及时的方式运行,完全不能允许它互换。因此,请确保分配给ZooKeeper的最大堆大小不大于ZooKeeper可用的实际内存量。

发布了6 篇原创文章 · 获赞 2 · 访问量 212

猜你喜欢

转载自blog.csdn.net/miss_74735/article/details/104849200