搬迁对Elasticsearch集群的影响是什么

介绍

本篇内容主要讲解“搬迁对Elasticsearch集群的影响是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“搬迁对Elasticsearch集群的影响是什么”吧!

shard-started RPC会抢占较多的大师处理时间

分片移动结束后,目标节点会向主人发起一个shard-started中华人民共和国,该RPC具有次高优先级:紧急,掌握对该RPC的处理比较慢,尤其是在集群分片数量到几万的级别,从而可能导致一些较低优先级的RPC长时间来不及执行,例如put-mapping,进而导致对业务的明显影响。

由于平衡,分配过滤,迫使意识等任意原因产生的shard-started RPC都会存在这个问题,例如扩容集群的时候,如果把平衡并发开的比较大,对主人的处理能力造成明显影响。因此对于分片数较多的集群,当你想要加大调整和恢复并发的时候要考虑到对主人的影响。

移动一个主分片,对写入流程的影响

当一个主分片被调整或者手工移动的时候,可以想象必然存在一个时间段该主分片无法写入。

Elasticsearch对主分片的迁移也是直接移动,不会先将主分片资格让给其他副分片,再进行移动,即便如此,也会存在一个时间点进行切换,无法响应写入。

这个时间段从RPC的时序来看的话,如下图所示,红色标记的区域为阻塞写入流程的时间段。在该时间段内,客户端的写入请求会被阻塞无返回,直到这部分处理完成。

搬迁对Elasticsearch集群的影响是什么

?

以手工移动为例,当一个主分片从node-idea移动到node1时,主要有以下几个阶段完成:

<李>

首先会通过发布新的集群状态,将该分片标记为搬迁状态,更新routing_table和routing_nodes

<李>

数据节点收到集群状态后,开始执行恢复流程,该流程自目标节点发送start_recovery开始,至源阶段返回start_recovery反应结束。

<李>

恢复完成后,目标发送shards-started RPC给主节点,主节点再次下发集群状态,将该分片标记为开始状态。

阻塞客户端大部分写入的阶段,就在源节点执行确定阶段时,准备发送切换RPC时开始,直到收到新主人的集群状态,将该分片标记为开始,每个节点应用集群状态的时间点略有差异,所以每个节点停止阻塞写入的时间点也会有微小差异。

切换的RPC的作用是告知目标节点该分片可以切换主分片状态,对切换RPC的处理都是一些计算操作,其中涉及到几个锁,一般会很快完成。

整个主分片的搬迁过程对写入的影响是很复杂的处理过程,我将他们划分为几个阶段,下面是详细过程。

阻塞过程详细原理

在分片的整个搬迁过程中,对目标节点的请求都会被转发到节源点,直到目标节点应用主下了发的分片变为开始的集群状态。

<编辑>正常写入阶段

起初,写入请求到达源节点,像往常一样正常写入到主分片中,直到复制阶段。

<编辑>复制阶段

此阶段将收到的写请求复制给目标节点。他从收到prepare_translog的反应之后开始,直到切换阶段开始之前。

<强> 1。将目标分片加入到复制组

收到prepare_translog响应之后,复苏的phase1阶段已结束,段文件发送完毕,节目标点的发动机已启动。通过碎片。initiateTracking将目标分片加入到复制组,后续的写入操作都会复制给目标节点。

 <代码> prepareEngineStep。whenComplete (prepareEngineTime→{
,,runUnderPrimaryPermit (()→shard.initiateTracking (request.targetAllocationId ()),
,,,,,,,,shardId +“;“启动跟踪;+ request.targetAllocationId()、碎片、cancellableThreads记录器);
,最后Translog。快照phase2Snapshot=shard.getHistoryOperations (“peer-recovery"、historySource startingSeqNo);
});

复制组信息在ReplicationTracker的replicationGroup成员中维护。

<强> 2。在写入过程中,将写请求复制给目标

在写入流程的performOnPrimary # doRun()函数的finishRequest方法中,最终调用ReplicationOperation # handlePrimaryResult函数的performOnReplicas方法将指数发送给目标节点。

<编辑>切换阻塞阶段

切换阶段是为了完成主分片状态的转移,该阶段对收到的写入请求放到队列中,待主分片状态转移完成后继续执行,最多阻塞30分钟。期间节对目标点的写入也会被转发的源节点执行。此阶段从源节点收到确定的反应之后开始,直到下一阶段。

搬迁对Elasticsearch集群的影响是什么