当使用 C++ 驱动程序创建用于与 Cassandra 交互的 API 时,必须为 C++ 程序提供一个逗号分隔的列表,其中包含驱动程序可以用作数据库联系点 (cass_cluster_set_contact_points) 的节点的 IP 地址.我想了解这个接触点的作用,以及它是否扮演与协调器节点不同的角色,即接触点和协调器节点是一回事。
此外,当我们正在执行时,比如说,一个多线程程序,用于执行多个查询,是为每个查询选择协调器节点/接触点,还是只是在开始时选择,然后该节点被固定为整个程序执行过程中的协调节点。
最佳答案
联系端点只是作为驱动程序发现集群的一种方式。您实际上只需要提供两个或三个,驱动程序将通过八卦找出剩余的端点。
连接时,最好使用 TokenAwareLoadBalancingPolicy
。这将导致分区键上的任何查询过滤绕过对协调器节点的需要,并直接路由到负责所需数据的节点。
如果查询不是在分区键上过滤,或者如果它是多键查询,则无法确定确切的节点。届时,您的备份负载平衡策略(TokenAwareLoadBalancingPolicy
将备份策略作为参数)将用于确定协调器节点。如果我没记错的话,DCAwareRoundRobinLoadBalancingPolicy
是默认值。
总而言之,连接端点仅用于集群发现。协调器节点是在查询时根据负载平衡策略中使用的算法选择的。
关于c++ - Cassandra 中协调器节点和 C++ 驱动程序的联系点之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48748296/