我无法理解Cassandra中Snitch和Gossip之间的区别,甚至找不到讨论这一主题的资料,更不用说提供一个很好的答案了。在我看来,Snitch和Gossip都是节点间通信协议。那么为什么我们需要2个呢?
我知道Gossip可以帮助节点从引导节点中获取信息,但这并不能真正解释其中的区别,因为当节点启动时,它还需要了解数据中心和机架,而这应该是节点的领域。告密者。
闲话是一种协议,嗅探是一种利用它的组件。Snitch比八卦要多一点,它至少具有一些启发式功能,例如识别数据中心或机架,而八卦则像是获取此信息的便捷工具。八卦几乎所有正在做的事情是散布一些规则,以覆盖所有必要的节点并接收一些技术数据,如ip,health等。而Snitch则利用此信息来执行更多操作。其功能之一是通过分析接收到的ip来识别不同的数据中心。然后,此信息将由其他组件用于进一步的操作,例如副本位置等。因此,他们决定为该功能提供单独的名称以进行标识,而实际上这全都涉及对功能进行分层。
这是更详细的告密定义(但在scylla中):https : //github.com/scylladb/scylla/wiki/Snitches
Gossip 用于识别机器的状态(它们是否在集群中,向上/向下/加入/离开)。
告密者有助于将所有权映射到实际机器,并路由查询(给定集群中的这 10 个节点,这 10 个节点中哪一个拥有给定键的数据)。
不同的告密者可以帮助以不同的方式分配数据 - 简单的告密者只是将所有实例放入 datacenter1/rack1,并使用简单的分布式哈希表/朴素分区器放置。属性文件告密允许您创建一个包含所有实例的文件,并将实例映射到数据中心/机架,确保副本始终存在于不同的机架(和数据中心,如复制策略所定义)上。
gossiping-property-file-snitch 和 ec2 告密者有点像属性文件告密者,因为它们具有机架/拓扑感知能力,但它们读取本地实例拓扑信息(从文件或从 ec2 api),然后gossip 给其他节点,因此每个节点负责广播自己的拓扑信息(通过 gossip)。
| 归档时间: |
|
| 查看次数: |
1987 次 |
| 最近记录: |