Cassandra 种子节点和连接到节点的客户端

标签 cassandra

我对 Cassandra 种子节点以及客户端如何连接到集群感到有些困惑。我似乎无法在文档中找到这一点信息。

客户端是否仅包含种子节点的列表,并且每个节点都委派一个新主机供客户端连接?种子节点真的只用于节点到节点的发现,而不是客户端的特殊节点吗?

每个客户端是否应该使用 DC 中的一小部分随机节点进行连接?

或者,每个客户端都应该使用 DC 中的所有节点吗?

最佳答案

种子节点有两个目的。

  • 它们充当新节点向集群宣布自己的地方。所以,如果没有至少一个事件种子节点,则没有新节点可以加入集群 因为他们不知道如何联系非种子节点来获取集群状态。
  • 种子节点充当八卦热点。由于节点比非种子更频繁地使用种子进行八卦,因此种子往往具有更多的当前信息,因此整个集群具有更多的当前信息。这就是原因你不应该让所有节点成为种子 .同样,这也是为什么给定数据中心中的所有节点都应该在其 cassandra.yaml 文件中具有相同的种子节点列表的原因。通常,每个数据中心 3 个种子节点是理想的。

  • cassandra 客户端联系点只是向客户端提供集群拓扑,之后客户端可以连接到集群中的任何节点。因此,它们类似于种子节点,并且对种子和客户端联系人使用相同的节点是有意义的。但是,您可以安全地配置任意数量的 cassandra 客户端联系点 .唯一的其他考虑因素是客户端联系的第一个节点设置其数据中心亲和性,因此您可能希望让您的联系点更喜欢给定的数据中心。

    有关联系点的更多详细信息,请参阅此问题:Cassandra Java driver: how many contact points is reasonable?

    关于Cassandra 种子节点和连接到节点的客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10407072/

    相关文章:

    cassandra - 具有 cassandra 集群时的 Nodetool 输出

    database - Cassandra CQL3 : Change primary key

    java - 斯卡拉- Cassandra : cluster read fails with error "Can' t use this Cluster instance because it was previously closed"

    cassandra - Cassandra 中的双范围查询

    cassandra - Cassandra 3.0多节点集群回收磁盘空间的最佳实践

    java - 如何使用Spring Boot远程建立与Cassandra的连接?

    java - 关于 Cassandra Bootstrap 的问题

    Cassandra 从 2.2.1 升级到 3.0.0 失败并出现 NullPointerException

    Cassandra : Cannot replace address with a node that is already bootstrapped

    java - Cassandra:页面存在多长时间?