当使用C ++驱动程序创建用于与Cassandra交互的API时,必须为C ++程序提供逗号分隔列表,其中包含驱动程序可用作数据库的联系点(cass_cluster_set_contact_points)的节点的IP地址。我想了解这个联络点的作用,如果它扮演的角色不同于协调者节点,即联络点和协调者节点是同一个东西。
同样,当我们执行多线程程序时,为了执行多个查询,是为每个查询选择的协调器节点/联系点,还是刚刚在开始时选择,然后该节点被修复为整个程序执行过程中的协调节点。
答案 0 :(得分:3)
联系端点只是您的驱动程序发现群集的一种方式。你真的只需要提供两个或三个,驱动程序将通过八卦来找出剩余的端点。
连接时,最好使用TokenAwareLoadBalancingPolicy
。这将导致对分区键的任何查询过滤绕过对协调器节点的需要,并直接路由到负责所需数据的节点。
如果查询未对分区键进行过滤,或者它是多键查询,则无法确定精确节点。此时,您的备份负载平衡策略(TokenAwareLoadBalancingPolicy
将备份策略作为参数)将用于确定协调器节点。如果我没记错,DCAwareRoundRobinLoadBalancingPolicy
是默认值。
总之,连接端点仅用于群集发现。根据负载平衡策略中使用的算法,在查询时选择协调器节点。
答案 1 :(得分:0)
程序中提到的联系点由群集连接设置使用。八卦将根据这些IP地址获取整个群集连接设置。八卦将维护节点的IP地址和其他属性,它将始终查看设置是否有变化,并且每次配置更改时都会更新。
如果在ip1上发生写入或读取请求,则群集连接到主机为ip1,ip2& ip3,然后ip1是此特定操作的协调员。它充当代理来处理操作,并将操作重定向到相应的节点,例如集群中但不在联系人列表中的ip4,基于不同的属性,集群的设置方式以及TokenAwareLoadBalancingPolicy等策略。您可以通过datastax查看本文:https://docs.datastax.com/en/archived/cassandra/1.2/cassandra/architecture/architectureClientRequestsAbout_c.html