首页 > 解决方案 > 使用 Solr Cloud 的分片/副本数量的最佳实践

问题描述

我正在运行具有 3 个 solr 和 3 个 zookeeper 实例的 SolrCloud。为了容错,我现在每个 solr 节点有 3 个分片和 3 个副本。

所以:

numShards [3]
maxShardsPernode[3]
autoAddReplicas [false]
replicationFactor [3]
nrtReplicas[3]

这是推荐的吗?如果我已经有 3 个分片,为什么我还需要分布在 3 个实例中的 3 个该分片的副本?

标签: solrsolrcloud

解决方案


分片对于以下方面很重要:

  1. 它允许您水平拆分或缩放内容量。
  2. 它允许您跨分片(可能在多个节点上)分布操作,例如索引跟踪,从而提高性能/吞吐量。

复制:复制的目的既是为了确保高可用性,也是为了提高搜索查询性能,尽管主要目的通常是为了提高容错性。这是通过从不将副本分片存储在与其主分片相同的节点上来实现的。

复制的优点:

  1. 拆分读写负载和操作
  2. 搜索查询的负载分布
  3. 搜索的高可用性
  4. 可以创建任意数量的从属实例来扩展查询性能

建议将复制因子设置为至少 3,这样即使机架发生问题,一份副本始终是安全的。

solr 云拱诊断

假设您有 3 个名为 server1、server2 和 server3 的 solr 服务器实例。您已经为您的收藏创建了 3 个分片。每台服务器上都有一个分片,即 server1 上的 Shard1、服务器 2 上的 shard2 和 server3 上的 shard3。

让每个服务器上的每个分片都有 3 个副本。

因此,您的 server1 将拥有 shard1,其他 shard 的副本,如 shard 2 和 shard 3。其他服务器也是如此。

如果 2 台服务器出现故障,您仍然拥有一台服务器,其中包含您收集的所有数据。

这就是复制在实现高可用性方面的美妙之处。


推荐阅读