solr - 使用 Solr Cloud 的分片/副本数量的最佳实践
问题描述
我正在运行具有 3 个 solr 和 3 个 zookeeper 实例的 SolrCloud。为了容错,我现在每个 solr 节点有 3 个分片和 3 个副本。
所以:
numShards [3]
maxShardsPernode[3]
autoAddReplicas [false]
replicationFactor [3]
nrtReplicas[3]
这是推荐的吗?如果我已经有 3 个分片,为什么我还需要分布在 3 个实例中的 3 个该分片的副本?
解决方案
分片对于以下方面很重要:
- 它允许您水平拆分或缩放内容量。
- 它允许您跨分片(可能在多个节点上)分布操作,例如索引跟踪,从而提高性能/吞吐量。
复制:复制的目的既是为了确保高可用性,也是为了提高搜索查询性能,尽管主要目的通常是为了提高容错性。这是通过从不将副本分片存储在与其主分片相同的节点上来实现的。
复制的优点:
- 拆分读写负载和操作
- 搜索查询的负载分布
- 搜索的高可用性
- 可以创建任意数量的从属实例来扩展查询性能
建议将复制因子设置为至少 3,这样即使机架发生问题,一份副本始终是安全的。
假设您有 3 个名为 server1、server2 和 server3 的 solr 服务器实例。您已经为您的收藏创建了 3 个分片。每台服务器上都有一个分片,即 server1 上的 Shard1、服务器 2 上的 shard2 和 server3 上的 shard3。
让每个服务器上的每个分片都有 3 个副本。
因此,您的 server1 将拥有 shard1,其他 shard 的副本,如 shard 2 和 shard 3。其他服务器也是如此。
如果 2 台服务器出现故障,您仍然拥有一台服务器,其中包含您收集的所有数据。
这就是复制在实现高可用性方面的美妙之处。
推荐阅读
- java - 我怎样才能在离子角度实现这个工具栏?
- gnuplot - GNUPlot:自动绘制标准输入的所有列,没有额外的逻辑/语义噪音
- html - CSS 网格布局 - 列不跨越
- javascript - Python Web-scraping,如何使用 Requests-HTML 库单击“下一步”
- c++ - 在 SFML 中表示二叉树时避免节点冲突
- flutter - 当我更改 Text 的字体大小时,CircleAvatar 边距也在发生变化,为什么会这样?
- php - 即使有时设置周界,Laravel 验证 URL 也会失败
- angular - 带有 Angular 提交的 Google 日历 API
- c - 二维结构数组->无法修复分段错误:(
- amazon-ec2 - 获取最新代码库拉入 aws ec2 实例后如何实时查看更改