只想了解在一个多数据中心安装卡桑德拉2的“节点工具修复”的性能。
我们计划在每个数据中心都有2-4个副本的关键空间。我们可能有几十个数据中心。根据情况的不同,写入是用本地仲裁/每个仲裁一致性完成的,而读取通常是用LOCAL_QUORUM一致性完成的。问题:
发布于 2014-08-04 05:09:40
要了解节点工具修复如何影响集群或集群大小如何影响修复,我们需要了解修复过程中发生的事情。有两个阶段需要修复,第一个阶段是建立一个Merkle树的数据。第二种方法是让副本实际比较它们的树之间的差异,然后根据需要将它们彼此流到一起。
这个第一阶段可以集中在磁盘io上,因为它将触及运行修复的节点上磁盘上的几乎所有数据。避免接触完整磁盘的一个简单方法是使用-pr标志。当使用-pr时,它将磁盘大小/RF,而不是修复必须接触的磁盘大小数据。在节点上运行修复也会向存储这些范围的副本的所有节点发送一条消息,以构建merkle树。这可能是一个问题,因为所有的副本都将同时进行,可能会使所有副本都对数据的这一部分做出缓慢的响应。
决定修复操作如何影响其他数据中心的因素是复制放置策略的使用。由于您需要跨数据中心(EACH_QOURUM案例)的一致性,所以您必须使用跨dc复制策略,比如在您的案例中使用网络拓扑策略。对于修复来说,这意味着在运行修复时不能将自己限制在本地dc上,因为您有一些EACH_QUORUM一致性的情况。为了避免修复影响所有数据中心中的所有副本,您应该:(1)使用动态告密者包装复制策略,并正确配置不良阈值( b)在运行修复时使用-snapshot选项。这将做的是获取您的数据的快照(快照只是到现有马厩的硬链接,利用马厩不可变的事实,从而使快照非常便宜),然后从快照中进行顺序修复。这意味着,对于任何给定的副本集,每次只有一个副本将执行验证压缩,从而允许动态告密者通过其他副本维护应用程序的性能。
现在我们可以回答你的问题了。
此外,使用nodetool进行修复的目标是使删除不再返回。对常规维修频率的严格要求是gc_grace_seconds值。在很少删除或覆盖数据的系统中,可以提高gc_grace的值,但对磁盘空间的影响最小。这为使用nodetool实用程序调度修复操作提供了更宽的间隔。避免频繁维修的建议方法之一是通过设计实现记录的不可变性。这对您来说可能很重要,因为您需要在数十个数据中心上运行,否则操作将是痛苦的。
https://stackoverflow.com/questions/25098083
复制相似问题