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

时间:2018-02-12 14:03:34

标签: c++ cassandra cassandra-3.0

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

同样,当我们执行多线程程序时,为了执行多个查询,是为每个查询选择的协调器节点/联系点,还是刚刚在开始时选择,然后该节点被修复为整个程序执行过程中的协调节点。

2 个答案:

答案 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