首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点工具跨数据中心副本的修复

节点工具跨数据中心副本的修复
EN

Stack Overflow用户
提问于 2014-08-02 18:21:02
回答 1查看 1.9K关注 0票数 2

只想了解在一个多数据中心安装卡桑德拉2的“节点工具修复”的性能。

我们计划在每个数据中心都有2-4个副本的关键空间。我们可能有几十个数据中心。根据情况的不同,写入是用本地仲裁/每个仲裁一致性完成的,而读取通常是用LOCAL_QUORUM一致性完成的。问题:

  1. 节点工具修复的复杂性是否与所有数据中心的副本数量呈线性增长?
  2. 还是节点修复复杂度与当前数据中心中的副本数量和数据中心数量的组合呈线性增长?模糊地说,该模型可能会将数据同步到当前数据中心中的每个节点,但是在其他数据中心的副本中,可以在每个类仲裁操作中同步数据。
  3. 要扩展集群,最好是在现有的数据中心中添加更多的节点,还是假设整个副本的数量不变的情况下添加新的数据中心?我在节点工具修复性能的上下文中问这个问题。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-04 05:09:40

要了解节点工具修复如何影响集群或集群大小如何影响修复,我们需要了解修复过程中发生的事情。有两个阶段需要修复,第一个阶段是建立一个Merkle树的数据。第二种方法是让副本实际比较它们的树之间的差异,然后根据需要将它们彼此流到一起。

这个第一阶段可以集中在磁盘io上,因为它将触及运行修复的节点上磁盘上的几乎所有数据。避免接触完整磁盘的一个简单方法是使用-pr标志。当使用-pr时,它将磁盘大小/RF,而不是修复必须接触的磁盘大小数据。在节点上运行修复也会向存储这些范围的副本的所有节点发送一条消息,以构建merkle树。这可能是一个问题,因为所有的副本都将同时进行,可能会使所有副本都对数据的这一部分做出缓慢的响应。

决定修复操作如何影响其他数据中心的因素是复制放置策略的使用。由于您需要跨数据中心(EACH_QOURUM案例)的一致性,所以您必须使用跨dc复制策略,比如在您的案例中使用网络拓扑策略。对于修复来说,这意味着在运行修复时不能将自己限制在本地dc上,因为您有一些EACH_QUORUM一致性的情况。为了避免修复影响所有数据中心中的所有副本,您应该:(1)使用动态告密者包装复制策略,并正确配置不良阈值( b)在运行修复时使用-snapshot选项。这将做的是获取您的数据的快照(快照只是到现有马厩的硬链接,利用马厩不可变的事实,从而使快照非常便宜),然后从快照中进行顺序修复。这意味着,对于任何给定的副本集,每次只有一个副本将执行验证压缩,从而允许动态告密者通过其他副本维护应用程序的性能。

现在我们可以回答你的问题了。

  1. 节点工具修复的复杂性是否与所有数据中心的副本数量呈线性增长?您可以通过使用动态告密者包装复制策略来限制这一点,并在修复过程中传递-snapshot选项。
  2. 还是节点修复复杂度与当前数据中心中的副本数量和数据中心数量的组合呈线性增长?模糊地说,该模型可能会将数据同步到当前数据中心中的每个节点,但是在其他数据中心的副本中,可以在每个类仲裁操作中同步数据。如果使用上述方法,随着副本数量的增加,复杂性将随着运行时间的增加而增加。这是因为上述方法一次将对一个副本进行顺序修复。
  3. 要扩展集群,最好是在现有的数据中心中添加更多的节点,还是假设整个副本的数量不变的情况下添加新的数据中心?我在节点工具修复性能的上下文中问这个问题。从节点工具修复的角度来看,如果您采用上述方法,这并没有任何不同。因为它取决于复制的总数量。

此外,使用nodetool进行修复的目标是使删除不再返回。对常规维修频率的严格要求是gc_grace_seconds值。在很少删除或覆盖数据的系统中,可以提高gc_grace的值,但对磁盘空间的影响最小。这为使用nodetool实用程序调度修复操作提供了更宽的间隔。避免频繁维修的建议方法之一是通过设计实现记录的不可变性。这对您来说可能很重要,因为您需要在数十个数据中心上运行,否则操作将是痛苦的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25098083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档