cassandra gossip 协议和 phi_threshold 是如何工作的?
Posted
技术标签:
【中文标题】cassandra gossip 协议和 phi_threshold 是如何工作的?【英文标题】:How does cassandra gossip protocol and phi_threshold works? 【发布时间】:2017-02-13 01:03:01 【问题描述】:当前设置,cassandra 2.2.5,gossip 默认为 1 秒,phi 阈值为 8。我面临的问题是提示中的尖峰。提示上升的原因之一是节点被标记为关闭(八卦尚未传达 phi 阈值)。
我读过一篇文章,它说 phi 阈值 8 对应于 18 秒,这里或那里将是几秒钟。现在我需要了解是什么原因,是什么阻止了八卦交流 18 秒。八卦沟通需要满足哪些清单?
【问题讨论】:
【参考方案1】:回复:“cassandra gossip 协议和 phi_threshold 是如何工作的?”:Phi 是 approximated,如:phi = (tnow - tLast) / mean
和一个节点 is marked down when phi > phi_threshold / 0.434
。对于您的设置(假设平均值为 1 [因为节点通常每隔 1 秒接收一次心跳]),如果我们在 8 / 0.434 = 18.42
秒内没有收到任何心跳,则该节点将被标记为关闭。
记录算法的论文可以在here找到。
Re:“八卦交流需要满足哪些清单?”:对我来说有几件事:
网络:gossip 消息被丢弃或 gossip 端口 (7000/7001) 被阻塞; 节点本身:节点忙/无响应(即执行 GC,执行一些繁重的负载操作),因此它们无法发送任何/太多八卦消息。【讨论】:
可以配置 Gossip 使用不同的端口吗? 这是storage_port
配置值。对我来说,在更改值之前在防火墙中打开 7000 端口会更有意义。
我们有 7000 个打开,我担心的是由于存储端口拥塞,八卦消息没有被传达,它导致相信其他节点该节点已关闭,因此产生了很多提示。所以我在想,如果 gossip 可以在其他端口上工作,它会更简单。
我怀疑更改端口会产生很大的不同,它会是相同的流量。或者我可能误解了你所说的拥塞是什么意思。另外,当您说hints goes up
时,那是哪个指标? TotalHintsInProgress
?
是的,端口 7000 用于任何 C* 节点间通信(八卦、数据流、协调......)。更改 storage_port
的值将不会导致此其他端口上仅发生 gossip 流量,它仅意味着现在此其他端口上发生所有 C* 节点间通信流量。以上是关于cassandra gossip 协议和 phi_threshold 是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章