设计网站建设合同书/二十条优化措施
作者:来自 Elastic Andrei Dan
在 Elastic Cloud Serverless 中,我们根据索引负载自动为数据流配置最佳分片数量,从而使用户无需摆弄分片。
传统上,用户会更改数据流的分片配置,以处理各种工作负载并充分利用可用资源。在 Elastic Cloud Serverless 中,我们引入了数据流的自动分片,使其能够根据索引负载自动管理和扩展。这篇文章探讨了自动分片的机制、其好处以及它对处理可变工作负载的用户的影响。自动分片的理念是积极增加分片数量并非常谨慎地减少分片数量,这样分片的增加不会因为工作负载在短时间内减少而过早地减少分片数量。
无服务器 Elasticsearch 中的数据流自动分片
想象一下,你有一个大披萨需要在聚会上与朋友们分享。如果你将披萨切成两片,供六个朋友食用,那么每片都需要供多人食用。这将造成瓶颈,一个人独占一整片,而其他人则在等待,导致共享过程缓慢。此外,并不是每个人都能同时享用披萨;你几乎可以听到那些等待的朋友的叹息声。如果更多的朋友意外出现,你将很难用两片披萨喂饱他们,并发现自己不得不当场手忙脚乱地重新塑形。
另一方面,如果你把披萨切成 36 片小块给同样的六个朋友,管理分享就变得很棘手。每个人都没有享受披萨,而是花更多的时间想办法拿到自己的小份。如果切片太小,披萨甚至可能会散开。
为了确保每个人都能高效地享用披萨,你应该把它切成与朋友数量相匹配的片数。如果你有六个朋友,把披萨切成 6 片或 12 片,每个人都可以拿到一片,而不用等很长时间。通过在切披萨时找到合适的平衡,你将让聚会顺利进行,让每个人都开心。
当你立即跟进解释时,你就知道这是一个很好的比喻;披萨代表数据,切片代表索引分片,朋友是集群中的 Elasticsearch 节点。
传统上,Elasticsearch 的用户必须预测他们的索引吞吐量并手动配置每个数据流(data stream)的分片数量。这种方法严重依赖于预测启发式方法,需要根据工作负载特征进行持续调整,同时还要平衡数据存储、搜索分析和应用程序性能。
零售等具有季节性流量的企业通常会处理数据需求激增的问题,而物联网应用程序可能会在特定时间经历负载的快速增加。开发和测试环境通常每周只运行几个小时,这使得固定分片配置效率低下。新应用程序可能难以准确估计工作负载需求,从而导致潜在的过度或不足配置。
我们在 Elastic Cloud Serverless 中引入了数据流的自动分片。Serverless 中的数据流根据索引负载自动管理和扩展 - 当朋友到达你的聚会或吃完时自动切片你的披萨。
自动分片的承诺
自动分片通过根据当前索引负载自动调整分片数量来解决这些挑战。这意味着用户无需手动调整配置,Elasticsearch 将根据实时数据流量动态管理项目中数据流的分片数量。
Elasticsearch 将每个索引的索引负载作为名为写入负载的指标的一部分进行跟踪,并将其作为索引部分下索引统计 API (index stats API)的一部分公开给本地和 ESS 部署。
write_load 表示索引文档时使用的平均写入线程数。
对于具有一个分片的索引,write_load 指标的最大可能值是可用的写入线程数(例如,所有写入线程都忙于在同一个分片中写入)。
对于具有多个分片的索引,写入负载的最大可能值是节点中可用的写入线程数乘以项目中的索引节点数。(例如,托管我们索引的分片的所有索引节点上的所有写入线程都忙于在属于我们索引的分片中写入,仅此而已)
为了了解 write_load 允许的值,让我们查看索引 logs,其中一个分片在一台分配了 2 个处理器的 Elasticsearch 机器上运行。写入线程池的大小将为 2 个线程。这意味着,如果此 Elasticsearch 节点专门且持续地写入相同的索引日志,我们将报告的索引日志的 write_load 将为 2.0(即 2 个写入线程完全用于写入索引日志)。
如果 logs 有 2 个主分片,并且我们现在在两个 Elasticsearch 节点上运行,每个节点分配有 2 个处理器,如果两个 Elasticsearch 节点上的所有写入线程都专门写入日志索引,我们将能够获得最大报告的 write_load 4.0。
无服务器自动扩展
我们刚刚研究了当我们增加分片和 Elasticsearch 节点的数量时,写入 write load 如何翻倍。Elastic Cloud Serverless 使用数据流自动分片和摄取自动扩展(ingest autoscaling)自动处理这两项操作。自动扩展是指根据当前需求动态调整资源(如内存、CPU 和磁盘)的过程。
在我们的无服务器架构中,我们从一台小型 2GB 内存服务器开始,并使用阶跃函数扩展方法来有效增加容量。我们逐步增加内存,然后通过添加服务器进行扩展。这个循环继续,在管理服务器数量的同时,逐步将每台服务器的内存增加到 64GB。
将自动扩展和自动分片联系起来
自动扩展和自动分片之间的联系对于优化性能至关重要。在计算数据流的最佳分片数量时,我们会考虑扩展设置中每个节点可用的最小和最大写入线程数。
- 对于小型项目,当数据流使用超过节点容量的一半(即超过一个索引线程)时,系统将从 1 个分片移动到 2 个分片。
- 对于中型项目,由于系统跨多个节点扩展,因此不会超过 3 个分片,以避免过多的开销。
- 一旦我们达到最大的节点大小,就会启用进一步的分片以适应更大的工作负载。
自动分片还可以使项目达到更高的摄取负载值,从而实现自动扩展以根据需要增加资源,防止系统在高索引工作负载期间保持低容量。
自动分片公式
为了确定所需的分片数量,我们使用以下公式:
此公式平衡了根据 write_load 增加分片的需求,同时限制了分片数量以防止过度分片。除以 2 反映了仅在超过节点容量的一半后才增加分片的策略。最小/最大写入线程表示自动缩放步骤函数中可用的最小和最大写入线程数(即最小 2GB 步骤上可用的写入线程数和最大服务器上可用的写入线程数)
让我们可视化公式的输出:
Y 轴表示分片数量。X 轴表示写入负载(write load)。我们从 1 个分片开始,当写入负载刚好超过 3.0 时,分片数量增加到 3 个。在写入负载达到 48.0 左右之前,我们会一直使用 3 个分片。
这涵盖了我们通过节点扩展但尚未达到 2 个或更多或最大服务器的时间,此时我们会解锁自动分片到 3 个以上的分片,数量与提取数据所需的数量相同。
虽然添加分片可以提高索引性能,但 Elasticsearch 集群中的过度分片可能会产生负面影响 - 想象一下只有 7 个朋友分享 56 片披萨。每个分片都有间接成本,包括维护和资源分配。我们的算法考虑并避免了过度分片的危险,直到我们达到最大的工作负载,此时添加超过 3 个分片会对索引性能和吞吐量产生重大影响。
使用滚动实现自动分片
自动分片的实现依赖于滚动(rollover)的概念。滚动操作会在数据流(data stream)中创建一个新索引,将其提升为写入索引,同时将前一个索引指定为常规后备索引,不再接受写入。这种转变可能基于特定条件发生,例如超过 50GB 的分片大小。我们负责为无服务器中的数据流配置最佳滚动条件(optimal rollover conditions)。
在无服务器(Serverless)中,除了与维护健康索引和分片相关的常规滚动条件外,我们还引入了一个新条件,用于评估当前写入负载是否需要增加分片数量。如果满足此条件,将触发滚动,并为新生成的数据流写入索引(write index)配置最佳分片数量。
对于缩减规模,系统将监控工作负载,不会仅仅为了减少分片而触发滚动。相反,它将等到常规滚动条件(如主分片大小)触发滚动。生成的写入索引将配置较少数量的分片。
分片调整的冷却期
为了确保分片调整期间的稳定性,我们实施了冷却期:
- 增加分片冷却时间:自上次调整以来,在增加分片数量之前,强制执行至少 4.5 分钟的等待时间。4.5 分钟的冷却时间可能看起来很奇怪,但选择这个间隔是为了确保我们每次在数据流生命周期(data stream lifecycle)检查数据流是否应该滚动时(目前每 5 分钟一次)可以增加分片数量,但频率不会超过 5 分钟,以涵盖内部 Elasticsearch 集群重新配置。
- 减少分片冷却时间:在减少分片之前,我们保持 3 天的最低等待时间,以确保决策基于持续的工作负载模式而不是暂时的波动。
结论
无服务器 Elasticsearch 中的数据流自动分片功能代表了有效管理数据流的重大进步。通过根据实时索引负载自动调整分片数量,此功能简化了操作并增强了可扩展性。
借助自动扩展的额外优势,用户可以期待更高效、响应更快的体验,无论他们是在处理小型项目还是大型应用程序。随着数据工作负载的不断发展,自动分片提供的适应性确保 Elasticsearch 仍然是管理各种索引需求的强大解决方案。
试用我们的无服务器 Elasticsearch 产品,利用数据流自动分片,并观察索引吞吐量随着数据提取负载的增加而无缝扩展。
随着越来越多的朋友来到你的聚会,你的披萨将被最佳地切成薄片,他们渴望尝试您为他们准备的酸面团手工披萨。
了解有关 Elastic Cloud Serverless 的更多信息,并开始 14 天免费试用以亲自测试。
原文:Autosharding of data streams in Elasticsearch Serverless - Elasticsearch Labs
相关文章:

Elasticsearch Serverless 中的数据流自动分片
作者:来自 Elastic Andrei Dan 在 Elastic Cloud Serverless 中,我们根据索引负载自动为数据流配置最佳分片数量,从而使用户无需摆弄分片。 传统上,用户会更改数据流的分片配置,以处理各种工作负载并充分利用可用资源。…...

YOLOv10改进,YOLOv10添加U-Netv2分割网络中SDI信息融合模块+GSConv卷积,助力小目标
理论介绍 完成本篇需要参考以下两篇文章,并已添加到YOLOv10代码中 YOLOv10改进,YOLOv10添加U-Netv2分割网络中SDI信息融合模块,助力小目标检测YOLOv10改进,YOLOv10添加GSConv卷积+Slim-neck,助力小目标检测,二次创新C2f结构下文都是手把手教程,跟着操作即可添加成功 目…...

xshell连接虚拟机,更换网络模式:NAT->桥接模式
NAT模式:虚拟机通过宿主机的网络访问外网。优点在于不需要手动配置IP地址和子网掩码,只要宿主机能够访问网络,虚拟机也能够访问。对外部网络而言,它看到的是宿主机的IP地址,而不是虚拟机的IP。但是,宿主机可…...

sql的where条件中使用case when
场景: 1、使用oracle数据库,数据类型为number,需要正无穷值。 2、数据表中有两个金额值,最大值和最小值, 如10~20, 30 ~40,40以上,数据库中这样设计 id name min max 1 j 10 20 2 …...

MacOS 上以源码形式安装 MySQL 5.7
以下是在 macOS 上从源码安装 MySQL 5.7 的步骤: 前置条件 安装 Homebrew:如果你还没有安装 Homebrew,可以在终端中运行以下命令进行安装: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install…...

MySQL 事务隔离级别详解
一、事务的基本概念 (一)什么是事务 事务是一个逻辑工作单元,由一组数据库操作组成。这些操作要么全部成功执行,要么全部回滚,以确保数据库的一致性。事务具有以下四个特性,通常被称为 ACID 特性ÿ…...

C语言——高精度问题
1、高精度计算的本质:竖式计算; 2、适用解决超出long long int 范围的大整数计算 #include<stdio.h> #include<string.h> #define N 100 char str1[N4]{0},str2[N4]{0}; int arr1[N4]{0},arr2[N4]{0}; int ans[N5]{0};//将字符串转化成整型…...

aippt:AI 智能生成 PPT 的开源项目
aippt:AI 智能生成 PPT 的开源项目 在现代办公和学习中,PPT(PowerPoint Presentation)是一种非常重要的展示工具。然而,制作一份高质量的PPT往往需要花费大量的时间和精力。为了解决这一问题,aippt项目应运…...

【Qt之·类QSettings·参数保存】
系列文章目录 文章目录 前言一、概述1.1 QSetting是什么1.2 为什么学习QSetting是重要的 二、不同存储位置的优缺点三、 QSetting的高级用法四、实例演示总结 前言 在当今的应用程序开发中,设置管理是一个至关重要的方面。应用程序的设置包括用户偏好、配置选项和其…...

location重定向和nginx代理
文章目录 1 location重定向1.1 概述1.2 rewrite跳转1.3 用例1.4 实验1.4.1 基于域名的跳转1.4.2 基于ip的跳转1.4.3 基于后缀名的跳转 2 nginx的代理2.1 nginx内置变量2.2 正向代理2.2.1 固定正向代理2.2.2 自动代理 2.3 反向代理2.3.1 负载均衡的算法2.3.2 负载均衡的特点2.3.…...

iptables详解
华子目录 什么是防火墙分类netfilter(数据包过滤)定义netfilter分析内容 防火墙无法完成的任务netfilter策略管理工具netfilter的5类hook函数防火墙规则策略匹配原则iptablesiptables流量处理动作iptables表5种规则表 安装iptablesiptables策略文件 ipta…...

Edge SCDN深度解析,边缘安全加速的创新实践
边缘安全加速(Edge Secure Content Delivery Network,SCDN)是酷盾安全推出的边缘集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。通过边缘缓存技术,智能调度使用户就近获取所需内容,为…...

solidworks常见问题已解决
solidworks常见问题已解决 问题1:step总是提示默认模板无效。问题2:异型孔向导”时出现了“找不到标准数据库。问题3:找不到CalloutForm.txt文件,标注将由几何体定义。问题5:工程图显示文件损坏不能保存。问题6&#x…...

vCenter开启HA报错
昨天给客户开启vCenter开启HA功能报错,报错的内容比较多 博通官方给出解决办法 https://knowledge.broadcom.com/external/article/318929/error-vsphere-ha-agent-cannot-be-correct.html 常规的解决办法 1.关闭集群HA,再次开启HA 2.主机进入维护模式,再次加入…...

在 Ubuntu 中 make 是否是系统自带的?怎么样查看Linux系统中是否有make?
make 命令 并不是所有 Ubuntu 系统都默认安装的,但它通常是开发工具链的一部分,许多开发者会在安装系统后配置它。make 是一个非常重要的构建工具,用于自动化编译和构建过程,特别是在编译软件或内核时。 make 的来源 make 是一个…...

js:我要在template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写
问: 我按在要在template中v-for循环遍历这个centrerTopdata,我希望自循环前面三个就可以了怎么写? 回答: 问: <div v-for"(item, index) in centrerTopdata.slice(0, 3)" :key"index"> d…...

前端使用 Cursor 的最佳助手 - PromptCoder
前端使用 Cursor 的最佳助手 - PromptCoder 你是否正在使用 Cursor 进行前端开发,却苦于繁琐的代码生成和原型图的还原?你是否渴望一个更高效、更智能的工具来提升你的开发效率?那么,你一定不能错过 PromptCoder! Pr…...

深入了解 Spring IOC,AOP 两大核心思想
文章目录 一、Spring 基础 - 控制反转(IOC)1.1. 引入1.2. 如何理解 IOCSpring Bean 是什么?IoC 是什么?IoC 能做什么?IoC 和 DI 是什么关系? 1.3. IoC 配置的三种方式xml 配置Java 配置注解配置 1.4. 依赖注…...

QT从入门到精通——Qlabel介绍与使用
1. QT介绍——代码测试 Qt 是一个跨平台的应用程序开发框架,广泛用于开发图形用户界面(GUI)应用程序,也支持非图形应用程序的开发。Qt 提供了一套工具和库,使得开发者能够高效地构建高性能、可移植的应用程序。以下是…...

华为HarmonyOS NEXT 原生应用开发:鸿蒙中组件的组件状态管理、组件通信 组件状态管理小案例(好友录)!
文章目录 组件状态管理一、State装饰器1. State装饰器的特点2. State装饰器的使用 二、Prop装饰器(父子单向通信)1. Prop装饰器的特点2. Prop装饰器的使用示例 三、Link装饰器(父子双向通信)1. Link装饰器的特点3. Link使用示例 四…...

node.js 环境配置
node_global下创建node_modules 系统变量 新建NODE_Path -> node_modules的路径 用户变量 编辑Path 编辑…\npm为 node_modules的路径 系统变量 Path 新建 %NODE_PATH% CMD测试 npm install express -g 报错 npm error code ETIMEDOUT源的连接超时,没用了要换源 …...

高并发数据采集场景下Nginx代理Netty服务的优化配置
高并发数据采集场景下,要优化Nginx反向代理来支持多个Netty数采服务并保证稳定的性能,可以从以下几个方面对Nginx进行优化配置。 直连模式(直接通过 Nginx 处理与后端 Netty 服务的连接,而不作为反向代理),…...

【C++算法】40.模拟_N 字形变换
文章目录 题目链接:题目描述:解法C 算法代码: 题目链接: 6. N 字形变换 题目描述: 解法 解法一:模拟 a,b,c,d,e,f,g...... n4 弄个矩阵放进去,最后从左往右读取。 解法二:模拟优化-…...

【云计算】虚拟化技术
目录 1. 虚拟化技术在云计算中的那些地方发挥了关键作用? 2. 比较VMare,Xen等虚拟化产品的关键技术,以及对云计算技术提供的支持? 3. 服务器虚拟化,存储虚拟化和网络虚拟化都有哪些实现方式? 4. 讨论桌面…...

手机租赁系统开发指南一站式服务流程解析
内容概要 手机租赁系统的开发是一个复杂但有趣的过程,像搭建乐高一样,只要找到合适的模块,就能打造出一个宾至如归的租赁平台。在这部分,我们将对开发流程的整体结构进行简要概述,并指出每个环节的重要性。 首先&…...

【机器学习】—时序数据分析:机器学习与深度学习在预测、金融、气象等领域的应用
云边有个稻草人-CSDN博客 目录 引言 1. 时序数据分析基础 1.1 时序数据的特点 1.2 时序数据分析的常见方法 2. 深度学习与时序数据分析 2.1 深度学习在时序数据分析中的应用 2.1.1 LSTM(长短期记忆网络) 2.2 深度学习在金融市场预测中的应用 2…...

OBS + SRS:打造专业级直播环境的入门指南
OBS SRS:打造专业级直播环境的入门指南 1. OBS简介2. OBS核心功能详解2.1 场景(Scenes)管理2.2 源(Sources)控制2.3 混音器功能2.4 滤镜与特效2.5 直播控制面板 3. OBS推流到SRS服务器配置指南3.1 环境准备3.2 OBS推流…...

收银系统源码-会员管理
会员制早已成为门店经营首选的营销工具,尤其是针对连锁多门店会员管理尤为重要。 必然要求门店的收银系统需要支持会员管理,能提供多种会员权益; 1.会员类型 收银系统支持常规会员、plus付费会员、可绑定实体卡; plus会员&…...

MongoDB深化与微软的合作,新增人工智能和数据分析集成和微软 Azure Arc支持
日前,在微软Ignite技术大会上,MongoDB公司宣布面向MongoDB与微软共同客户推出三项新功能,双方协作更进一步。首先,需要构建由检索增强生成 (RAG) 技术驱动的应用程序的客户,现在可以选择MongoDB Atlas作为微软Azure AI…...

对流层路径延迟对SAR方位压缩的影响(CSDN_20240301)
目录 仿真参数 方位向脉冲压缩与高阶多普勒参数的关系 仿真结果 2m分辨率 1m分辨率 0.5m分辨率 0.3m分辨率 0.2m分辨率 0.1m分辨率 0.05m分辨率 小结 对流层路径延迟对方位脉冲压缩的影响 仿真参数 地球参数 赤道半径(m) 6378140 极半径&a…...