代码之家  ›  专栏  ›  技术社区  ›  Vishal Sharma

Cassandra中协调器节点和C++驱动程序的接触点之间的区别?

  •  1
  • Vishal Sharma  · 技术社区  · 6 年前

    当使用C++驱动程序创建与Cassandra交互的API时,C++程序必须提供一个逗号分隔的列表,其中包含驱动程序可以用作数据库联系点(cass\u cluster\u set\u contact\u points)的节点的IP地址。我想了解这个联络点的作用,以及它是否扮演着与协调人节点不同的角色,即联络点和协调人节点是同一件事。

    此外,当我们执行一个多线程程序来执行多个查询时,是为每个查询选择了协调节点/联系点,还是刚开始时选择了协调节点/联系点,然后该节点在整个程序执行过程中固定为协调节点。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Aaron    6 年前

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

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

    如果查询未对分区键进行筛选,或者是多键查询,则无法确定确切的节点。此时,您的备份负载平衡策略(即 TokenawarReloadBalancingPolicy 将备份策略作为参数)将用于确定协调器节点。如果我没记错的话 DCAwareRoundRobinLoadBalancingPolicy 是默认值。

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

        2
  •  0
  •   Chakri Stark    6 年前

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

    如果在ip1上发生写入或读取请求,并且集群以ip1、ip2和;ip3,则ip1是此特定操作的协调器。它充当代理来处理操作,并根据不同的属性、集群的设置方式和TokenawarReloadBalancingPolicy等策略,将操作重定向到相应的节点,例如ip4,它位于集群中,但不在联系人列表中。您可以通过datastax查看本文: https://docs.datastax.com/en/archived/cassandra/1.2/cassandra/architecture/architectureClientRequestsAbout_c.html