Cassandra 如何选择协调节点和复制节点?

how Cassandra chooses the coordinator node and the replication nodes?

Cassandra客户端如何选择协调节点? coordinator节点是否存储了客户端在复制之前发送的数据?

协调器节点通常由考虑 "network distance" 的算法选择。任何节点都可以充当协调器,并且首先将请求发送到您的驱动程序知道的节点。但是一旦它连接并了解您的集群的拓扑结构,它可能会变成 "closer" 协调器。

如果协调器最终成为负责数据令牌范围的节点之一,则协调器仅在本地(写入时)存储数据。

协调器由驱动程序根据您设置的策略选择。常见策略有 DCAwareRoundRobinPolicy 和 TokenAware Policy。

对于 DCAwareRoundRobinPolicy,驱动程序根据其循环策略选择协调器节点。在此处查看更多信息:http://docs.datastax.com/en/drivers/java/2.1/com/datastax/driver/core/policies/DCAwareRoundRobinPolicy.html

对于 TokenAwarePolicy,它选择一个具有被查询数据的协调器节点 - 以减少 "hops" 和延迟。更多信息:http://docs.datastax.com/en/drivers/java/2.1/com/datastax/driver/core/policies/TokenAwarePolicy.html

最佳做法是包装政策,以便在出现问题时有主要和次要政策。上面的链接提供了更多信息。