cassandra集群,1表,如何计划前进

时间:2014-03-14 17:24:40

标签: cassandra

我打算创建一个只使用1个cassandra表的应用程序。复制因子可能是2或3.我可能最初使用2个cassandra服务器,然后根据需要继续添加服务器。但我不确定是否需要预先计划任何内容,以便在添加更多服务器时统一分发表。我需要注意哪些最佳实践或事项?我读到了令牌http://www.datastax.com/docs/1.1/initialize/token_generation,但我不确定我需要做什么。

我认为密钥必须在集群中统一分配,所以:

  1. 如何发生这种情况,即当我添加第二台服务器并说第一台服务器已经有100万个密钥

  2. 我是否需要预先计划密钥空间或表格?

1 个答案:

答案 0 :(得分:1)

我可以提出两点建议。

首先,在设计架构时,选择一个好的分区键(主键中的第一列)。你需要确保一些事情:

  1. 有足够的值可以将其分配给任意数量的节点。例如,性别将是一个错误的分区键,因为您只有两个值,因此只能将它分配给两个节点。

  2. 跨不同分区键值的分布或多或少是均匀的。例如,国家/地区可能不是最好的,因为您很可能只在几个独特的国家/地区拥有大部分行。

  3. 其次,为了便于部署新节点,请考虑将集群设置为使用虚拟节点(vnodes)。如果您这样做,则在扩展群集时可以跳过几个步骤。

    要配置虚拟节点,请将num_tokens中的cassandra.yaml设置为大于1.这将决定您的节点将拥有多少个虚拟节点。建议值为256。

    稍后,当您添加新节点时,您需要确保新节点add_bootstrap中的cassandra.yaml为真。然后像往常一样配置网络参数以匹配您的群集,最后启动您的节点。它应该自动引导并开始传输适当的数据。确定所有内容后,您可以在其他节点上运行清理(nodetool clean),以确保清除他们不再负责的冗余数据。

    有关更详细的文档,请参阅http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_add_node_to_cluster_t.html