深入理解 relocating 对Elasticsearch集群的影响

2023-11-11

rebalance 用于将集群中的分片进行均衡,保持各个节点的分片数量大致相等,当集群扩容或缩容,掉一个节点的时候,这过程会自动完成。直观的感觉他应该是在后台默默干活的过程,最多占用带宽和磁盘 io 资源,应该感受不到他的存在,但实际情况是,他可能引起一些意想不到的问题。

这篇文章主要思考分片 relocating 对集群会有哪些影响(基于 v7.7),有下面几个。

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

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

由于 rebalance,allocation filtering,forced awareness等任意原因产生的 shard-started RPC 都会存在这个问题,例如扩容集群的时候,如果把 rebalance 并发开的比较大,对 master 的处理能力造成明显影响。因此对于分片数较多的集群,当你想要加大 rebalance 和 recovery 并发的时候要考虑到对 master 的影响。

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

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

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

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

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

  • 首先会通过发布新的集群状态,将该分片标记为 RELOCATING状态,更新 routing_table 和 routing_nodes
  • 数据节点收到集群状态后,开始执行 recovery 流程,该流程自 target 节点发送 start_recovery开始,至Source 阶段返回 start_recovery response 结束。
  • recovery 完成后,target发送 shards-started RPC 给 master 节点,master节点再次下发集群状态,将该分片标记为 STARTED 状态。

阻塞客户端 bulk 写入的阶段,就在 source 节点执行 finalize 阶段时,准备发送 handoff RPC 时开始,直到收到 master 新的集群状态,将该分片标记为 STARTED,每个节点应用集群状态的时间点略有差异,所以每个节点停止阻塞写入的时间点也会有微小差异。

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

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

阻塞过程详细原理

在分片的整个 relocating 过程中,对 target 节点的请求都会被转发到 source 节点,直到 target 节点应用了 master 下发的分片变为 STARTED 的集群状态。

正常写入阶段

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

复制阶段

此阶段将收到的写请求复制给 target 节点。他从收到 prepare_translog 的 response之后开始,直到 handoff 阶段开始之前。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入理解 relocating 对Elasticsearch集群的影响 的相关文章

随机推荐

  • CSMA/CA协议详解【计算机网络】

    读书笔记 2018年9月5日17 13 26 计算机网络 第六版 谢希仁 虽然CSMA CD协议已成功地应用于使用有线连接的局域网 但无线局域网能不能也使用CSMA CD协议呢 显然 这个协议的前一部分CSMA能够使用 在无线局域网中 在发
  • 解混淆/脱壳工具 - De4dot

    De4dot 参数详解 Options File options Deobfuscator options 语法例子 使用 查壳 dnspy 解混淆 运行软件 解混淆后查壳 解混淆后dnspy 参数详解 吾爱破解有比较详细的帖子 下载链接
  • 性能测试连载 (11)- jmeter 的线程数与压力模式

    咨询微信 uhz2008 需求 下面有3个场景 思考一下在jmeter里面如何设计 场景1 有一个项目 500用户同时登录 响应时间能达到多少 场景2 考勤打卡 最大吞吐量能达到多少 每秒最大能完成多少笔打卡业务 场景3 银行业务 如果需要
  • 新来的资深java不会lambda表达式,中级开发都笑拉了--lambda流这么难吗,教你怎么玩早学早吃香

    因为一个人就 全体 虽然没提名字但是说的意思和报身份证没区别 我自己看着都尴尬 标题就是事情的经过 和同事的聊天记录在最下面 前言 Lambda表达式是优化代码的工具 使得代码更简洁 易读 符合现代开发的趋势 以及推动函数式编程在Java开
  • Docker查看容器的初始启动命令参数的常见几种方式

    1 在使用docker容器的过程中 经常需要查看容器启动的命令来看当时启动容器时候所用的参数 如果时间不是很久或者通过history命令就可以很容易的想起或查看到命令 一旦时间过了很久或history被清空那么就无法获取命令 如下所示doc
  • embed mongodb 集成spring

    在property文件下添加 de flapdoodle mongodb embedded version 5 0 5 spring mongodb embedded storage oplog size 0 不指定数据库 会使用test
  • 集成算法

    集成算法 1 目的 2 Bagging 2 1 随机森林的定义 2 2 随机森林的构建 决策树的数量 2 3 随机森林的优缺点 优点 缺点 3 Boosting 4 Stacking 参考文档 1 目的 顾名思义 集成算法就是把多个算法的结
  • OLED 液晶屏显示模块(0.96寸)

    OLED模块例程 一 OLED 简介 OLED 即有机发光二极管 Organic Light Emitting Diode 又称为有机电激光显示 Organic Electroluminesence Display OELD 因为具备轻薄
  • 目标检测算法回顾之传统算法

    传统的目标检测算法 总体回顾 基于特征 基于分割 一般流程 经典算法 Harr Adaboost 流程 Harr特征 Adaboost算法 HOG SVM 概述 方法 HOG特征的优缺点 DPM DPM特征 DPM流程 DPM vs HOG
  • ER图详解及实例

    文章目录 ER图基本概念 ER图实例 ER图基本概念 ER图分为实体 属性 关系三个核心部分 在ER图中 实体是长方形 属性是椭圆形 关系为菱形 实体 entity 即数据模型中的数据对象 即数据表 用长方体来表示 每个实体都有自己的实体成
  • 超详细IDEA创建Maven项目

    文章目录 一 Maven概述 二 创建Maven项目 三 Maven项目简单介绍 3 1 标准化的项目结构 3 2 标准化的构建流程 3 3 方便的依赖管理 一 Maven概述 Maven是一个专门用于管理和构建Java项目的工具 我们之所
  • 大数据毕业设计 机器视觉图像拼接算法研究与实现 - python opencv

    文章目录 0 前言 一 拼接效果 二 算法介绍 1 拼接算法简介 1 1 基于区域相关拼接算法 1 2 基于特征相关拼接算法 1 3 拼接算法的基本流程 2 拼接算法原理 2 1 第一种 特征匹配 2 2 第二种 计算图像之间的变换结构 2
  • Topaz Video Enhance AI Mac版,视频无损放大工具

    Topaz Video Enhance AI Mac版是一款强大的视频无损放大工具 借助软件 您可以将您的素材从标清转换为高清 并获得令人难以置信的质量提升 该模具非常适合您想要用于现代用途的较旧素材
  • chatgpt赋能python:Python如何选取CSV某几列数据

    Python如何选取CSV某几列数据 在数据处理过程中 CSV是一种非常常见的数据文件类型 CSV文件中的数据由逗号分隔的值 Comma Separated Values 组成 处理CSV数据的任务之一是从CSV文件中选择特定的列数据 以进
  • 卡方检验简介

    Chi square test 卡方检验 是用于评价两类变量之间是否存在相关性的统计检验方法 医疗研究会产生大量不同类型的数据 最容易识别的是定量的数据 例如 直腿抬高 SLR 的受试者能够将腿抬高大于 0 度 这让我们可以计算两组的平均
  • IDEA常用快捷键

    一 查找类的快捷键 1 在项目中查找某个自定义类 Ctrl Shift r 2 在源码中查找某个类 Ctrl Shift n 二 大小写切换 Ctrl Shift u 三 查看类图 1 先找到那个类 一里面的快捷键 2 查看本类继承体系 C
  • 蓝宝石vega56刷64bios及降压超频全过程

    需要准备的工具有 刷bios的工具atiflash https www techpowerup com download ati atiflash 所需bios https www techpowerup com vgabios 20028
  • 批处理,%~d0 cd %~dp0 代表什么意思

    dp0 d 为Drive的缩写 即为驱动器 磁盘 p 为Path缩写 即为路径 目录 cd是转到这个目录 不过我觉得cd d dp0 还好些 选项语法 0 删除任何引号 扩充 0 f0 将 0 扩充到一个完全合格的路径名 f 是file 即
  • Java基础知识之笔记总结分享(超详细)

    给大家分享一篇我之前在学习java过程中的关于java基础部分的笔记 比较详细 内容也比较多 如有问题请指出以便修改 谢谢 篇幅较长建议收藏浏览 1 环境变量配置 JAVA HOME jdk路径 Path 要把jdk的bin目录路径 添加到
  • 深入理解 relocating 对Elasticsearch集群的影响

    rebalance 用于将集群中的分片进行均衡 保持各个节点的分片数量大致相等 当集群扩容或缩容 掉一个节点的时候 这过程会自动完成 直观的感觉他应该是在后台默默干活的过程 最多占用带宽和磁盘 io 资源 应该感受不到他的存在 但实际情况是