elastic search 7.9.0 中的写入模型

本文介绍了Elasticsearch 7.9.0中的数据副本模型,即primary-backup model。在该模型中,每个文档位于分片上,分片有多个副本以确保数据同步。写入过程包括协调阶段、主分片阶段和副本分片阶段,主分片负责验证和执行操作,并将操作复制到同步集合中的副本分片。如果遇到主分片或副本分片失败的情况,系统会进行相应的故障恢复策略,如选择新的主分片或重建副本分片。
摘要由CSDN通过智能技术生成

官方解释

1、概述

es中的索引是被分成了分片,分片就是shard。文档是放在分片上的。每个分片有多个副本。这些副本也可以被理解为replication group。当文档新增和删除的时候,他们要保持和主shard的同步。这样读取数据的时候才能准确。

上面这个过程叫做数据副本模型,即 data replication model

es中的数据副本模型具体是基于primary-backup model。这种模型描述的是在replication group中,从一个索引的角度看,有一个分片是承担主分片的责任,其他的分片被叫做副本分片。主分片作为所有索引操作的主入口,负责校验和操作是正确的。一个操作在主分片上做完后,主分片在将该操作复制到其他副本分片上操作。

 

2、基本的写入模型

第1步 coordinating stage

指的是,每一个索引操作第一步都是先被replication group解析,一旦被group认可后,这个操作就到了该group的主分片上。这个阶段叫做coordinating stage

第2步 primary stage

指的是 操作主要在主分片上执行,主分片负责校验和进一步在副本分片上执行。但是并不强制要求所有的副本分片都执行完。相反,es管理了一个列表,可以理解为,主分片执行完成后,列表内的分片都执行完就可以了。这个列表是被master节点管理的,有自己的名字,叫做in-sync copies,我们叫它同步集合。

第3步 replica stage

指的是 列表中的每一个副本分片在本地执行对应的操作

这3步是有顺序的,可以这样理解,第3步中的副本分片没有对主分片返回,第2步不算完成,第2步没有完成,第1步就不算完成。因为一个索引的主分片也有多个的情况,比如5个主分片共同组成1个索引,这个时候第1步要等第2步的5个主分片都成功完成才算完成。

 

所以,我们总结一下写入主要做的事。

1、主分片校验来的请求,拒绝不合理的请求

2、在主分片执行,比如新增文档或者删除文档

3、将该操作在in-sync copies中的副本分片执行一遍。如果是多个副本,会采用并行的方式

4、同步集合中所有的副本分片执行完毕后,返回主分片

5、主分片向客户端提交ack确认

 

3、一些异常情况的处理

1、主分片失败,主分片所在node会把情况告知master节点,新增文档的操作会一直等,等1分钟后,master节点会从副本分片推荐一个副本分片当主分片,然后新增操作会转向新的主分片继续进行。这种情况一般是整个node失联,失联node上的分片是主分片

2、同步集合中的副本分片失败。也就是同步集合中的分片丢失了操作。这个情况下要怎么办呢?解决办法是主分片会发送请求到master节点,请求让有问题的副本分片移除同步集合,当master节点回复已移除,主分片会提交ack操作。主分片还会为了让集群保持一个健康状态,再重新构建一个副本分片。

3、一个索引没有副本分片或者副本分片都失联了

这样的场景确实有可能存在。做法就是主分片处理操作,而不需要任何外部的一些校验等。因为master节点知道这个主分片是唯一的健康的分片。

 

 

 

 

 

Elasticsearch7.9.0是一个开源的分布式搜索和分析引擎,用于构建高效、可扩展的实时搜索解决方案。要搭建Elasticsearch7.9.0集群,需要按照以下步骤进行操作: 1. 下载和安装Elasticsearch7.9.0:从官方网站上下载Elasticsearch7.9.0压缩包,并解压到合适的目录下。 2. 配置Elasticsearch集群参数:在每个节点上的elasticsearch.yml配置文件,设置集群名称、节点名称、绑定IP地址等参数。确保每个节点的配置文件相同,以便节点可以识别彼此。 3. 修改JVM配置:根据服务器的硬件配置和需求,修改jvm.options文件的内存分配参数,以确保Elasticsearch能够充分利用可用的系统资源。 4. 启动Elasticsearch节点:在每个节点的终端或命令行,切换到Elasticsearch的安装目录,并运行./bin/elasticsearch命令来启动节点。确保每个节点都能正常启动。 5. 集群发现和节点自动加入:在elasticsearch.yml配置文件,配置集群发现机制,如使用单播或多播,以及设置初始主节点。这将使得新的节点能够自动连接到现有的Elasticsearch集群。 6. 验证集群状态:使用curl或其他HTTP客户端发送请求到任意一个节点的IP地址和端口号,查看集群的状态信息。确保所有的节点都连接到集群,并且状态正常。 7. 索引和搜索数据:使用Elasticsearch的REST API或Java客户端,可以索引和搜索数据。通过创建索引、定义映射、增删改查操作可以实现灵活和高效的搜索和分析功能。 8. 监控集群健康和性能:使用Elasticsearch提供的监控工具或第三方插件,可以实时监控集群的健康状态、性能指标和查询性能。这有助于及时发现和解决潜在的问题。 总结:以上是搭建Elasticsearch7.9.0集群的基本步骤。搭建集群后,可以实现数据的高可用性、可扩展性和分布式计算,为企业提供全文搜索、日志分析等功能。通过合理的集群配置、优化和监控,可以提高集群的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值