c++ - Cassandra 中协调器节点和 C++ 驱动程序的联系点之间的区别?

标签 c++ cassandra cassandra-3.0

当使用 C++ 驱动程序创建用于与 Cassandra 交互的 API 时,必须为 C++ 程序提供一个逗号分隔的列表,其中包含驱动程序可以用作数据库联系点 (cass_cluster_set_contact_points) 的节点的 IP 地址.我想了解这个接触点的作用,以及它是否扮演与协调器节点不同的角色,即接触点和协调器节点是一回事。

此外,当我们正在执行时,比如说,一个多线程程序,用于执行多个查询,是为每个查询选择协调器节点/接触点,还是只是在开始时选择,然后该节点被固定为整个程序执行过程中的协调节点。

最佳答案

联系端点只是作为驱动程序发现集群的一种方式。您实际上只需要提供两个或三个,驱动程序将通过八卦找出剩余的端点。

连接时,最好使用 TokenAwareLoadBalancingPolicy。这将导致分区键上的任何查询过滤绕过对协调器节点的需要,并直接路由到负责所需数据的节点。

如果查询不是在分区键上过滤,或者如果它是多键查询,则无法确定确切的节点。届时,您的备份负载平衡策略(TokenAwareLoadBalancingPolicy 将备份策略作为参数)将用于确定协调器节点。如果我没记错的话,DCAwareRoundRobinLoadBalancingPolicy 是默认值。

总而言之,连接端点仅用于集群发现。协调器节点是在查询时根据负载平衡策略中使用的算法选择的。

关于c++ - Cassandra 中协调器节点和 C++ 驱动程序的联系点之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48748296/

相关文章:

Cassandra 集群 - 特定节点 - 特定表高丢弃突变

cassandra - 如何从 Cassandra 的种子列表中删除节点而不丢失数据?

nosql - 连续测量 Cassandra 插入速度

logging - 设置 cassandra.logdir 的最佳方法是什么

c++ - 有没有办法在初始化列表中调用成员函数?

c++ - 我如何对类型进行 static_assert?

cassandra - cassandra中的主要压缩

cassandra - Apache Cassandra 从 2.1 升级 3.X

c++ - 在命名空间内定义函数还是限定函数?

c++ - 定点组合器和显式结果类型