我需要用一个新的数据中心扩展群集,该中心要在中国大陆的大防火墙后面。目前,我在美国和欧洲拥有数据中心-因此该群集已经符合Geographical Location Scenario的要求。
目前,我已经为Cassandra准备好了中文基础架构,但是过去几天的网络统计数据有些麻烦,我有点担心: 是否以及如何影响当前集群< / em> ,新的数据中心将完全可用吗?
我对此的实际疑问是:
nodetool rebuild
)的速度,因为以目前的速度,复制我们的当前数据将需要数周的时间。欢迎任何建议或评论,谢谢!
答案 0 :(得分:2)
Cassandra在复制期间如何处理巨大的数据包丢失? (有时高达40%)
通常,数据包丢失将导致大量读取修复。在某些情况下,它可能导致请求失败,具体取决于复制因素和一致性。另外,要准备好进行非常昂贵的维修,这将创建大量的小SSTables和大量的IO。
我建议对开发需求进行测试,以查看系统中的实际行为。有很多tools可以用来模拟不良网络。
当两个数据中心之间的网络连接真的很坏(仅几千位/秒,延迟如上所述)数小时后,它将如何影响群集?中国特区会否被视为已死?还是Cassandra仍会尝试使用有限的带宽?这会在非中文数据中心上引起任何问题吗?
这在很大程度上取决于有多糟以及运行何种一致性级别/复制因子。在某些情况下,这只会在群集之间造成相当长的延迟。但是,如果连接质量很差,则节点将开始将另一个标记为已关闭-那么您正在研究所有数据中心中的问题。您现有的数据中心将因请求超时而导致性能下降。反过来,这将导致请求在内存中保留的时间更长,从而导致GC。 (它还会在您的其他集群中引起许多其他问题)
可以调整和微调故障检测器的敏感度阈值,以适合您的用例。 phi_convict_threshold是可以降低将节点标记为关闭的可能性的设置。您可以找到有关here的更多信息。如果您发现由于节点无响应而未标记节点的最佳位置,则可以让Cassandra利用它所需要的工作。
是否有可能以某种方式强制执行我的非中文数据中心中只有一个与中文数据中心进行通信?还是我应该相信Cassandra会处理这个问题? (为避免可能损坏我所有的数据中心)
实际上并没有一种方法可以告诉Cassandra限制要与之对话的数据中心。您有点喜欢复制因子中包含的数据中心之间的通信。
有什么方法可以加快初始数据复制(nodetool重建)的速度,因为以目前的速度,复制当前数据将需要数周的时间。
我建议不要使用sstableloader解决方案,因为它的功能与重建非常相似,并且需要快照才能运行。如果网络是导致速度降低的原因,那么改变流方式并不会产生太大的变化。
我认为,要做的第一件事是测量系统瓶颈所在的位置。如果慢速网络确实是瓶颈,则可以同时添加更多节点以从更多源流式传输,但最终您仍然会受到慢速网络连接的阻碍。