sol如何处理高可用性?

How does solr handle high availability?

我不明白 solr 如何处理 solrCloud 中的高可用性。在其参考指南中指出它使用 CDCR 来处理 HA。但我认为这是一个代价高昂的策略。

谁能说出它实际处理 HA 的内容以及为什么它是最佳方式? 非常感谢。

CDCR 不是用于高可用性 (HA),而是用于灾难恢复 (DR),我认为您混淆了这两个术语。

HA 正在计划服务器宕机。 SolrCloud 通过使用多个副本来托管您的数据来提供 HA。在这种情况下,如果集合中的一个副本(服务器)出现故障,其他副本可以处理负载。 Solr 会自动将数据复制到集合中给定分片的所有副本。进行收集时请参阅 ReplicationFactor。

DR 正在计划整个站点不可用。这需要您在不同的数据中心拥有另一个 SolrCloud 环境,并且显然也需要您将数据发送到那里以保持两个环境同步。这就是 CDCR 应该做的,将所有更新发送到不同位置的另一个 SolrCloud 集群。

HA 有几个级别 - 您需要问问自己,我可以容忍什么样的故障?像这样的东西:

  1. 节点故障
  2. 多个节点故障
  3. 机架故障
  4. 数据中心故障
  5. 区域故障

SolrCloud 的基本集群设置为您提供了很容易涵盖#1-3 的工具。添加副本,在机架之间正确分配它们。

您可以获得#4,甚至#5,使用分布在多个数据中心的单个 SolrCloud 集群(#4 是 AWS 中的多可用区,#5 是 AWS 中的多区域),但是单个SolrCloud 集群没有任何位置感知,因此您需要了解集群内通信通常是跨数据中心的,因此数据中心之间确实需要低延迟,否则您的查询延迟将受到严重影响.

SolrCloud 的 CDCR 是一种连接两个或多个独立 SolrCloud 集群的方法,本质上是在集群之间创建 master/slave 关系。这给你 #4 或 #5 而没有跨集群流量延迟的惩罚。