c - 如何以编程方式确定 Cassandra 集群中的节点数量?

标签 c cassandra thrift cassandra-2.0

有没有一种方法可以在不先有上下文的情况下确定 Cassandra 集群中的节点数量?

我试图获取该数字,以确保用户不会给我太大的复制因子(即 10 个节点,只有 9 个节点。)

重要提示:此时,我拥有的唯一接口(interface)是 C 中的 thrift。

注意:我研究了使用describe_ring(),但不幸的是,该函数强制您拥有一个有效的上下文(因此它描述了该上下文的环,而不是描述了现有节点的数量) Cassandra 集群。)

最佳答案

您可以使用 Thrift 协议(protocol)查看系统表:system.peers。这里列出了所有其他节点及其信息,但不包括本地节点。通过统计system.peers中的节点数,总节点数为entries_count_in_peers + 1

下面是system.peers表的结构(CQL)

CREATE TABLE system.peers (
    peer inet PRIMARY KEY,
    data_center text,
    host_id uuid,
    preferred_ip inet,
    rack text,
    release_version text,
    rpc_address inet,
    schema_version uuid,
    tokens set<text>
)

每个节点有一个分区(Thrift 术语中的行键)

关于c - 如何以编程方式确定 Cassandra 集群中的节点数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34871464/

相关文章:

c - 读入数字直到遇到换行符

ubuntu - 使用 “./bin/cassandra -f” 启动 Cassandra 时出现问题

Hive 的 Perl Thrift 客户端?

java - Cassandra Accessor 和 "CQL"注入(inject)

php - 使用 Thrift 生成的文件中的 PSR-4 命名空间

c - 需要帮助从 c 文件中提取注释

c - 每次我从 C 中的输入文件读取 '\n' 时都无法循环函数

c - 另一个计数器给一个计数器赋值,防止计数器递增?

cassandra - 无法更新 Cassandra 中的复制因子

nosql - 添加节点后重新平衡数据