Cassandra中C 驱动程序的协调器节点和接触点之间的差异



使用C 驱动程序创建用于与Cassandra交互的API时,必须为C 程序提供一个逗号分隔列表,其中包含驱动程序可以用作该节点的IP地址联系点(CASS_CLUSTER_SET_CONTACT_POINTS(到数据库。我想了解这个接触点的作用,如果它的作用与协调器节点的作用不同,即是触点点和协调员节点和同一件事。

同样,当我们执行一个多线程程序(用于执行多个查询(时,是为每个查询选择的协调器节点/联系点,或者只是在开始时选择,然后该节点被固定为整个程序的执行过程中的协调器节点。

触点端点只是作为驾驶员发现群集的一种方式。您实际上只需要提供两个或三个,驾驶员就会通过八卦弄清楚其余终点。

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

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

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

程序中提到的联系点由群集连接设置使用。八卦将根据这些IP地址获取整个群集连接设置。八卦将维护节点的IP地址和其他属性,它将始终查看设置中是否有更改,并在配置更改时每次更新。

如果写或读取请求发生在IP1上,将群集连接到主机为IP1,IP2&IP3,然后IP1是此特定操作的协调员。它是处理操作的代理,并将操作重定向到相应的节点,例如群集中但不在联系人列表中的IP4,基于不同的属性,如何设置群集和诸如TokenawareLoAdbalancypolicy的策略。您可以查看DataStax的这篇文章:https://docs.datastax.com/en/archived/cassandra/1.2/cassandra/architecture/architecturecleclientrequestsabout_c.html

最新更新