刚开始使用 Solandra,并试图了解 Solandra 分片的 2 级细节。
AFAIK Soalndra 创建配置的分片数量(作为“solandra.shards.at.once”属性),其中每个分片的大小最大为“solandra.maximum.docs.per.shard”。
在下一个级别,它开始在每个分片内创建插槽,这些插槽由“solandra.maximum.docs.per.shard”/“solandra.index.id.reserve.size”定义。
我从 SchemaInfo CF 的数据模型中了解到,在特定的分片内,有不同物理节点拥有的插槽,这是节点之间为获取这些插槽而发生的竞争。
我的问题是:
这是否意味着如果我请求在特定的 solr 节点上写入,例如 .
....solandra/abc/dataimport?command=full-import
此请求是否会分发到所有可能的节点等。这是分布式写入吗?因为在这种情况发生之前,其他节点将如何竞争特定分片内的插槽。理想情况下,用于编写文档或一组文档的代码将在单个物理 JVM 上执行。通过分片,我们尝试在单个物理节点上编写一些文档,但是如果它是基于不同物理节点拥有的插槽进行编写,那么我们实际上实现了什么,因为我们再次需要从不同的节点获取结果。我了解写入吞吐量已最大化。
我们可以考虑调整这些数字吗?“
solandra.maximum.docs.per.shard
”,“solandra.index.id.reserve.size","solandra.shards.at.once
”。如果我在单个 DC 6 节点设置中只有一个分片和复制因子为 5,我看到这个分片的端点包含 5 个根据复制因子的端点。但是第 6 个会发生什么。我通过nodetool看到左边第6个节点并没有真正得到任何数据。如果我在保持集群开启的同时将复制因子增加到 6,这会解决问题并进行修复等,还是有更好的方法。