【发布时间】:2015-12-28 08:15:40
【问题描述】:
Cassandra 客户端如何选择协调节点? coordinator节点是否存储了复制前客户端发送的数据?
【问题讨论】:
Cassandra 客户端如何选择协调节点? coordinator节点是否存储了复制前客户端发送的数据?
【问题讨论】:
协调器由驱动程序根据您设置的策略选择。常见的策略是 DCAwareRoundRobinPolicy 和 TokenAware Policy。
对于 DCAwareRoundRobinPolicy,驱动程序根据其循环策略选择协调节点。在此处查看更多信息:http://docs.datastax.com/en/drivers/java/2.1/com/datastax/driver/core/policies/DCAwareRoundRobinPolicy.html
对于 TokenAwarePolicy,它选择一个具有被查询数据的协调节点 - 以减少“跳数”和延迟。更多信息:http://docs.datastax.com/en/drivers/java/2.1/com/datastax/driver/core/policies/TokenAwarePolicy.html
最佳做法是打包政策,以便在出现问题时有主要政策和次要政策。更多信息,请访问上面的链接。
【讨论】:
协调节点通常由考虑“网络距离”的算法选择。任何节点都可以充当协调者,首先请求将发送到您的驱动程序知道的节点。但是一旦它连接并理解了集群的拓扑结构,它可能会变成一个“更接近”的协调器。
如果协调器最终成为负责数据令牌范围的节点之一,则协调器仅在本地存储数据(在写入时)。
【讨论】: