es里为什么node和shard不是一对一的关系

提问:

既然多个shard会被分配到同一个node上,那么为什么不把多个shard合并成一个然后存在当前node上呢,简而言之也就是让node和shard形成一对一的关系呢 ?非常好的问题,这正是理解Elasticsearch分片(shard)设计思想的关键点!

为什么不让一个 node 只存储一个 shard,实现一对一关系?

主要原因有以下几点:


1. 分片的数量 ≠ 节点的数量,弹性扩展和伸缩能力
  • 分片数固定(不可变),节点数可以动态变化
    一旦创建索引后,主分片数就不可更改(7.x后不能动态调整主分片数量)。但实际运行时,集群节点数量是可以动态增加或减少的。
  • 多shard 少node
    比如你有5个shard,只有3个node,它们怎么分?只能有node上有多个shard。
  • 扩容和负载均衡
    比如初期2个node,5个shard都只能堆在这2个node上。之后,水平扩容——加节点后,Elasticsearch会自动把这些shard搬过去并负载均衡,但分片数不会增加,如果一个node只能有一个shard,总shard数大于node数/小于node数,都无法自洽。
2. 粒度决定并发,分片越多并发能力越强
  • 多shard并发查询/索引
    访问或写入单个shard是有性能瓶颈的,尤其是大数据场景下。
    多个shard可以并发处理,提高带宽利用率和处理速度。
  • Node本身多核CPU,资源可以共享
    一个node比如16核,多个shard可以充分“吃满”资源,同一node不同shard任务并发处理。
3. 容灾与高可用策略灵活
  • 副本shard(replica shard)不能和主shard在同一个node上
    如果node与shard一对一,就是node挂=分片丢失,无法高可用。
  • 通过多shard和多副本分散在多个node上,可以灵活应对节点损坏,提升系统弹性和数据安全。
4. 管理和生命周期操作更灵活
  • 可以对单个shard做迁移、均衡、快照、恢复,细粒度管理,便于维护。
  • 滚动部署时更方便,可以无缝切换负载。
5. 节点数 >> 索引数量 or << 索引数量的情况
  • 一个集群同时有100个索引,每个索引5个shard,总共500个shard。node数量假如只有10个?只能每个node承载N个shard。
  • node数量远超过shard数,单node可能一个都没有/部分承载。

总结

Elasticsearch 设计分片(shard)机制,是为了实现弹性伸缩、负载均衡、并发性能提升和高可用容灾“多目标”,绝不是一一对应就能解决的。让shard数量远多于node数量,是分布式架构的基本思想之一

所以,不让shard和node一对一,而是允许多个shard分配在同一个node上,是为了支持弹性扩展、高并发、容灾、高利用率等多种需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/914488.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/914488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浅谈npm,cnpm,pnpm,npx,nvm,yarn之间的区别

首先做一个基本的分类 名称描述npm,cnpm,yarn,pnpm都是Javascript包管理器nvm是Node.js版本控制器npx命令行工具 I.npm,cnpm,yarn,pnpm npm (Node Package Manager) npm是Node.js默认的包管理器&#xff0c;随Node.js的安装会一起安装。使用npm可以安装&#xff0c;发布&…

滑动窗口-76.最小覆盖子串-力扣(LeetCode)

一、题目解析1.不符合要求则返回空串("")2.子串中重复字符的数量要不少于t中该字符的数量二、算法原理解法1&#xff1a;暴力枚举哈希表这里的暴力枚举也可以优化&#xff0c;即在包含t中元素处枚举&#xff0c;如在A、B和C处开始枚举&#xff0c;减少不必要的枚举 解…

从零构建搜索引擎 build demo search engine from scratch

从零构建搜索引擎 build demo search engine from scratch 我们每天都会使用搜索引擎&#xff1a;打开google等搜索引擎&#xff0c;输入关键词&#xff0c;检索出结果&#xff0c;这是一次搜索&#xff1b;当打开历史记录旁边的&#x1f50d;按钮&#xff0c;输入关键词&#…

pytorch小记(二十九):深入解析 PyTorch 中的 `torch.clip`(及其别名 `torch.clamp`)

pytorch小记&#xff08;二十九&#xff09;&#xff1a;深入解析 PyTorch 中的 torch.clip&#xff08;及其别名 torch.clamp&#xff09;深入解析 PyTorch 中的 torch.clip&#xff08;及其别名 torch.clamp&#xff09;一、函数签名二、简单示例三、广播支持四、与 Autograd…

快速分页wpf

/*没有在xaml设置上下文window.context是因为 命名空间一直对应不上 所以在xaml.cs 里面绑定*/ <Window x:Class"DataGrid.views.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft…

如何彻底禁用 Chrome 自动更新

如何彻底禁用 Chrome 自动更新 随着谷歌将 Chrome 浏览器版本升级至 138&#xff0c;它即将彻底抛弃对 Manifest V2 扩展的支持。许多用户希望将浏览器版本锁定在 138&#xff0c;以继续使用 uBlock Origin、Tampermonkey 等常用扩展。 本文总结了四种有效方法&#xff0c;帮助…

流批一体的“奥卡姆剃刀”:Apache Cloudberry 增量物化视图应用解析

引言&#xff1a;流批一体&#xff0c;理想与现实的鸿沟 在数据驱动的今天&#xff0c;“实时”二字仿佛拥有魔力&#xff0c;驱使着无数企业投身于流批一体架构的建设浪潮中。我们渴望实时洞察业务变化&#xff0c;实时响应用户需求。以 Apache Flink 为代表的流处理引擎&…

C# 入门教程(三):详解字段、属性、索引器及各类参数与扩展方法

文章目录一、字段、属性、索引器、常量1.字段2.属性2.1 什么是属性2.2 属性的声明2.3 属性与字段的关系3 索引器4. 常量二、传值 输出 引用 数组 具名 可选参数&#xff0c;扩展方法2.1 传值参数2.1.1 值类型 传参2.1.2 引用类型 传参2.2 引用参数2.2.1 引用参数-值类型 传参2.…

《美术教育研究》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答&#xff1a;问&#xff1a;《美术教育研究》是不是核心期刊&#xff1f;答&#xff1a;不是&#xff0c;是知网收录的第一批认定学术期刊。问&#xff1a;《美术教育研究》级别&#xff1f;答&#xff1a;省级。主管单位&#xff1a; 安徽出版集团有限责任公司 主办…

每日算法刷题Day47:7.13:leetcode 复习完滑动窗口一章,用时2h30min

思考: 遇到子数组/子字符串可以考虑能不能用滑动窗口&#xff0c; 定长:逆向思维,答案不定 最大长度/最小长度:一般求长度 越长越合法/越短越合法/恰好:一般求数量 主要思考窗口条件成立&#xff0c; 判断条件是符合窗口条件(最小长度/越长越合法还是不符合(最大长度/越短越合法…

电流驱动和电压驱动的区别

理解电流驱动和电压驱动的区别对电路设计至关重要&#xff0c;尤其在高速、高抗噪要求的场景&#xff08;如LVDS&#xff09;。以下是两者的核心对比&#xff1a;一、电压驱动 (Voltage Drive) 核心原理&#xff1a; 驱动器输出一个受控的电压&#xff08;与负载阻抗无关&#…

宿舍电费查询——以ZUA为例

宿舍电费查询——以ZUA为例0. 安装抓包环境手机端桌面端1. 登录1.1 开启抓包后进入缴费页面&#xff1a;1.2 分析请求1.3 编写登录代码2. 获取楼栋及房间ID2.1 获取楼栋ID2.2 编写获取楼栋ID代码2.3 获取房间ID2.4 编写获取房间ID代码3. 获取剩余电费&#xff1a;3.1 选择房间号…

vue中计算属性的介绍

Vue.js 中的计算属性是基于它的响应式系统来实现的&#xff0c;它可以根据 Vue 实例的数据状态来动态计算出新的属性值。在 Vue 组件中&#xff0c;计算属性常用于对数据进行处理和转换&#xff0c;以及动态生成一些需要的数据。一、使用方式1.定义计算属性&#xff1a; 在Vue组…

MFC UI控件CheckBox从专家到小白

文章目录CheckBox勾选框控件控件与变量绑定控件点击消息映射互斥CheckBox勾选框控件 控件与变量绑定 方案一&#xff1a; BOOL m_bEnable1; BOOL m_bEnable2; void A::DoDataExchange(CDataExchange* pDX) {DDX_Check(pDX, IDC_CK_1, m_bEnable1);DDX_Check(pDX, IDC_CK_2, …

阿尔卡特ACT 250 ATP 150 AND ATP 400 分子泵控制器TURBOMOLECULAR PUMP CONTROLLER ALCATEL

阿尔卡特ACT 250 ATP 150 AND ATP 400 分子泵控制器TURBOMOLECULAR PUMP CONTROLLER ALCATEL

python的小学课外综合管理系统

前端开发框架:vue.js 数据库 mysql 版本不限 后端语言框架支持&#xff1a; 1 java(SSM/springboot)-idea/eclipse 2.NodejsVue.js -vscode 3.python(flask/django)–pycharm/vscode 4.php(thinkphp/laravel)-hbuilderx 数据库工具&#xff1a;Navicat/SQLyog等都可以 摘要 随着…

实用技巧 Excel 与 XML互转

一 概述 在android多语言适配中&#xff0c;可能提供的是excel格式的多语言翻译&#xff0c;而且翻译数量非常庞大。那手动一个一个往xml里面添加效率非常低&#xff0c;这时候就需要把excel快速转为android可以直接用的资源文件string.xml二 转换流程2.1 第一步任意文件夹或者…

云原生技术与应用-Containerd容器技术详解

目录 一.Containerd概述 1.什么是containerd 2.Containerd的起源与背景 二.Containerd架构 1.Containerd架构概述 2.核心组件解析 三.安装配置Containerd 1.安装Containerd 2.配置Containerd 四.Containerd基本操作 1.镜像类操作 2.容器类操作 3.任务类操作 4.其他操作 一.…

LINUX714 自动挂载/nfs;物理卷

开机自动挂载 /etc/fstab vim /etc/fstab /dev/sdb2 /u2 ext4 defaults 0 0 mount -a [rootweb ~]# vim /etc/fstab [rootweb ~]# cat /etc/fstab# # /etc/fstab # Created by anaconda on Sat Apr 19 17:11:28 2025 # # Accessible filesystems, by reference, are maintai…

系统性学习C语言-第十六讲-深入理解指针(6)

系统性学习C语言-第十六讲-深入理解指针&#xff08;6&#xff09;1. sizeof 和 strlen 的对比1.1 sizeof 1.2 strlen 1.3 sizeof 和 strlen 的对比2. 数组和指针笔试题解析2.1 一维数组2.2 字符数组2.3 二维数组3. 指针运算笔试题解析3.1 题目1&#xff1a;3.2 题目…