当您将 OrderPreservingPartitioner 与列族键(例如表示 YYYYMMDD 的 int)一起使用时,您将在写入时获得热点,并且大部分负载将命中 cassandra 环中的一个/两个节点。如果您使用的是 RandomPartitioner,当使用不经常更改的 key (即 YYYYMMDD)时,cassandra 会分散负载吗?
简而言之,RandomPartitioner 是否将负载分散到少量不定期更改的离散键值上?
Partirioner 选择的是键空间还是集群级别设置?
注意:因此,如果您使用 md5 20110902,您将得到 59b7841383176e942495550ecc801a9e。如果我使用 key 20110902(即 59b7841383176e942495550ecc801a9e)重复加载数据,那将不会仅将数据分配给分配有 59b78413.... 的单个节点。 Cassandra 是否正在做其他事情来分散负载
最佳答案
不,如果您继续重复使用相同的键,RandomPartitioner 无法分散负载。它通过将不同的键分配给不同的节点来分散负载,但对相同键的插入将始终转到相同的节点。
Cassandra 确实通过复制因子分散了负载,例如,如果您使用 RF=3,则 key 可以存在于三个节点上。但是,如果您继续使用 key 20110902,则每次都是相同的三个节点。
简而言之,负载平衡发生在关键级别。为了分散负载,您需要选择不同的 key 。
关于nosql - 使用Cassandra的RandomPartitioner时的关键选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7443548/