我浏览了cassandra中使用vnodes的每个节点的令牌范围?。在这个实现中,我们获取所有主机并获取这些主机中的令牌范围,以获取所有节点上的所有令牌范围。
但是,在我的情况下,我使用以下代码:
public static synchronized List<Object[]> getTokenRangesAcrossNodes(
final String node, final Integer port, final String userName, final String password) {
if (cluster == null) {
connect(node, port, userName, password);
}
Metadata metadata = cluster.getMetadata();
return unwrapTokenRanges(new ArrayList<>(metadata.getTokenRanges()));
}
在上面 connect()
功能 node
具有所有逗号分隔的cassandra主机字符串,我使用cluster.builder().addcontactpoints()创建会话。
我的问题是:
做 metadata.getTokenRanges()
提供所有主机上的所有令牌范围?还是需要获取所有主机并获取每个主机的令牌范围?
在所有节点上获取令牌范围是否与给定节点的令牌范围不同 keyspace
?
Cassandra版本:3*
1条答案
按热度按时间iswrvxsc1#
每个主机通过gettokens()公开其主令牌。
gettokenranges()返回定义环中数据分布的标记范围。
您还可以选择使用metadata.gettokenranges(string keyspace,host host),它返回在给定主机上为特定键空间复制的令牌范围。
检查以下链接:
元数据
host.gettokens()
metadata.gettokenranges(字符串键空间,主机)
metadata.gettokenranges()
这个例子也许会有帮助。