登录 注册
当前位置:主页 > 资源下载 > 20 > 羊群效应和可扩展性在监视点的应用-intouch2017培训资料

羊群效应和可扩展性在监视点的应用-intouch2017培训资料

  • 更新:2024-08-21 17:30:14
  • 大小:4.44MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:算法与数据结构 - 大数据
  • 格式:PDF

资源介绍

4.8 监视点的羊群效应和可扩展性 有一个问题需要注意,当变化发生时,ZooKeeper会触发一个特定 的znode节点的变化导致的所有监视点的集合。如果有1000个客户端通 过exists操作监视这个znode节点,那么当znode节点创建后就会发送1000 个通知,因而被监视的znode节点的一个变化会产生一个尖峰的通知, 该尖峰可能带来影响,例如,在尖峰时刻提交的操作延迟。可能的话, 我们建议在使用ZooKeeper时,避免在一个特定节点设置大量的监视 点,最好是每次在特定的znode节点上,只有少量的客户端设置监视 点,理想情况下最多只设置一个。 解决该问题的方法并不适用于所有的情况,但在以下情况下可能很 有用。假设有n个客户端争相获取一个锁(例如,主节点锁)。为了获 取锁,一个进程试着创建/lock节点,如果znode节点存在了,客户端就 会监视这个znode节点的删除事件。当/lock被删除时,所有监视/lock节 点的客户端收到通知。另一个不同的方法,让客户端创建一个有序的节 点/lock/lock-,回忆之前讨论的有序节点,ZooKeeper在这个znode节点 上自动添加一个序列号,成为/lock/lock-xxx,其中xxx为序列号。我们 可以使用这个序列号来确定哪个客户端获得锁,通过判断/lock下的所有 创建的子节点的最小序列号。在该方案中,客户端通过/getChildren方法 来获取所有/lock下的子节点,并判断自己创建的节点是否是最小的序列