gpt4 book ai didi

cassandra - DynamicSnitch 从空的新数据中心读取

转载 作者:行者123 更新时间:2023-12-04 04:34:30 24 4
gpt4 key购买 nike

当添加一个新的数据中心时,dynamicSnitch 会导致我们从新的 dc 中读取数据,而此时数据还不存在。

我们有一个在 3 个数据中心上运行的 cassandra (1.0.11) 集群,我们想添加第四个数据中心。集群配置了 PropertyFileSnitch 和 DynamicSnitch,并启用了 0.0 不良因子。相关的 key 空间复制因子是 DC1:2、DC2:2、DC3:2。我们的计划是将新数据中心添加到环中,将其添加到架构中并在所有节点上运行滚动修复 -pr,以便新节点获得所有需要的数据。
一旦我们开始这个过程,我们注意到新数据中心会收到来自其他数据中心的读取调用,因为它的负载较低,DynamicSnitch 决定从中读取会更好。问题是数据中心仍然没有数据并且没有返回任何结果。
我们尝试完全删除 DynamicSnitch,但是一旦我们这样做,每次单个服务器有一点负载时,我们都会遇到极端的性能下降。

有没有人遇到过这个问题?
有没有办法直接影响特定数据中心的分数,使其不会被 DynamicSnitch 选中?
有没有更好的方法在 cassandra 1.0.11 中添加数据中心?有没有人写过处理这些问题的告密者?

谢谢,
伊兹克。

最佳答案

您可以引导节点,而不是在没有引导的情况下添加到环然后进行修复。前者确保在它拥有所需的所有数据之前不会将读取路由到它。 (这就是为什么 Cassandra 默认为 auto_bootstrap: true 并且实际上禁用它是一个非常糟糕的主意,我们从示例 cassandra.yaml 中删除了它。)

这个问题,以及文档建议首先添加所有节点而不使用 bootstrap 的原因是,如果您为 DC4 配置了 N 个副本,Cassassandra 将尝试将该键空间的整个数据集复制到您添加的前 N ​​个节点,这可能有问题!

所以这里是我看到的选项:

  • 如果您的数据集足够小,请继续使用引导计划
  • 增加 ConsistencyLevel在您的读取上,以便他们始终接触具有数据的副本以及不具有数据的副本
  • 升级到 1.2 并使用 ConsistencyLevel.LOCAL_ONE在您的读取上,这将迫使它永远不会发出跨 DC 请求
  • 关于cassandra - DynamicSnitch 从空的新数据中心读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19981326/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com