08、es 进一步了解___b_ES 核心概念__3)副本(Replicas)

本文详细介绍了 Elasticsearch 中的副本分片概念,强调其在主分片异常时确保数据查询和服务连续性的作用。副本分片与主分片不会位于同一节点,确保并发写入的并发性和数据一致性。当节点故障时,副本分片可晋升为主分片,保持集群的高可用性,但过多的副本会增加资源消耗和网络带宽使用。合理设置副本数量对于平衡性能和稳定性至关重要。

副本就是对分片的 Copy,每个主分片都有一个或多个副本分片,当主分片异常时,副本可以提供数据的查询等操作。

主分片和对应的副本分片是不会在同一个节点上的,所以副本分片数的最大值是 N-1(其中 N 为节点数)。

对文档的新建、索引和删除请求都是写操作,必须在主分片上面完成之后才能被复制到相关的副本分片。

ES 为了提高写入的能力这个过程是并发写的,同时为了解决并发写的过程中数据冲突的问题,ES 通过乐观锁的方式控制,每个文档都有一个 _version (版本)号,当文档被修改时版本号递增。

一旦所有的副本分片都报告写成功才会向协调节点报告成功,协调节点向客户端报告成功。
在这里插入图片描述

从上图可以看出为了达到高可用,Master 节点会避免将主分片和副本分片放在同一个节点上。

假设这时节点 Node1 服务宕机了或者网络不可用了,那么主节点上主分片 S0 也就不可用了。

幸运的是还存在另外两个节点能正常工作,这时 ES 会重新选举新的主节点,而且这两个节点上存在我们所需要的 S0 的所有数据。

我们会将 S0 的副本分片提升为主分片,这个提升主分片的过程是瞬间发生的。此时集群的状态将会为 Yellow。

为什么我们集群状态是 Yellow 而不是 Green 呢?虽然我们拥有所有的 2 个主分片,但是同时设置了每个主分片需要对应两份副本分片,而此时只存在一份副本分片。所以集群不能为 Green 的状态。

如果我们同样关闭了 Node2 ,我们的程序依然可以保持在不丢失任何数据的情况下运行,因为 Node3 为每一个分片都保留着一份副本。

如果我们重新启动 Node1 ,集群可以将缺失的副本分片再次进行分配,那么集群的状态又将恢复到原来的正常状态。

如果 Node1 依然拥有着之前的分片,它将尝试去重用它们,只不过这时 Node1 节点上的分片不再是主分片而是副本分片了,如果期间有更改的数据只需要从主分片上复制修改的数据文件即可。

小结:

将数据分片是为了提高可处理数据的容量和易于进行水平扩展,为分片做副本是为了提高集群的稳定性和提高并发量。
副本是乘法,越多消耗越大,但也越保险。分片是除法,分片越多,单分片数据就越少也越分散。
副本越多,集群的可用性就越高,但是由于每个分片都相当于一个 Lucene 的索引文件,会占用一定的文件句柄、内存及 CPU。
并且分片间的数据同步也会占用一定的网络带宽,所以索引的分片数和副本数也不是越多越好。

### 配置Anaconda作为PyCharm的虚拟环境 #### 创建Anaconda虚拟环境 通过命令行工具创建Anaconda虚拟环境是一项基础操作。具体可以通过以下命令实现: ```bash conda create -n <环境名> python=<版本号> ``` 例如,如果希望创建一个名为`my_env`的虚拟环境并指定Python版本为3.8,则执行如下命令[^1]: ```bash conda create -n my_env python=3.8 ``` #### 初始化与激活虚拟环境 在成功创建虚拟环境后,需对其进行初始化和激活。这一步通常需要借助Anaconda Powershell Prompt来完成。以下是具体的步骤描述: 1. 打开 **Anaconda Powershell Prompt**。 2. 输入 `conda activate <环境名>` 来激活对应的虚拟环境。例如,对于上述创建的`my_env`环境,输入以下命令即可激活它[^2]: ```bash conda activate my_env ``` #### 在PyCharm中配置已有的Anaconda虚拟环境 当虚拟环境准备就绪后,在PyCharm中将其设置为目标解释器的操作也较为简单。按照以下路径逐步完成配置过程: - 进入菜单栏中的 **File → Settings**; - 转至 **Project: <项目名称> → Python Interpreter** 页面; - 点击右上角的齿轮图标,随后选择 **Add...**; - 在弹出窗口中选取左侧列表里的 **Conda Environment** 选项卡; - 勾选 **Existing environment** 并浏览定位到之前创建好的Anaconda虚拟环境中所含的具体Python可执行文件位置(一般位于Anaconda安装目录下的`envs/<环境名>/bin/python` 或者 Windows系统上的相应路径)。完成后点击确认按钮保存更改[^1]。 #### 测试配置有效性 最后一步是对整个流程进行验证以确保一切正常运作。一旦上述所有设定均已完成无误,那么此时应该能够观察到原先默认存在的venv虚拟环境显示颜色变为橘黄状态——这意味着该旧有环境已被新设臵取代而不再处于活动状态;与此同时,在PyCharm内置终端里运行任何指令都将基于当前选定的新Anaconda虚拟环境下执行[^1]。 ```python import sys print(sys.executable) ``` 此段代码可用于打印当前正在使用的Python解释器绝对路径,从而进一步核实是否确实切换到了预期的目标虚拟环境之中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值