Elastic Stack 8.9:更快的跨集群搜索和指标聚合

作者:Tyler Perkins, Gilad Gal, Teresa Soler, Shani Sagiv, Bernhard Suhm, George Kobar

 

Elastic Stack 8.9 在多个方面实现了显着的性能改进:Kibana® 中更快的跨集群搜索、Elasticsearch® 更快的聚合,以及更快、更相关的向量搜索(阅读 Elastic Search 8.9 博客以了解更多信息)。 这些性能增强可加速大规模洞察,并使 Elastic® 的矢量搜索成为相关性和速度方面的领导者。 此外,还可以利用 Kibana 中的多项增强功能、地理线的简化聚合以及使用 Terraform 从单个位置简化跨集群警报规则的管理。

这些新功能使客户能够:

  • 指标聚合速度提高 90% 以上
  • 将跨集群搜索的延迟减少高达 80 倍
  • 使用 Terraform 从一个位置管理跨多个集群的警报规则

Elastic Stack 8.9 现已在 Elastic Cloud 上推出,这是唯一包含最新版本中所有新功能的托管 Elasticsearch 产品。 你还可以下载 Elastic Stack 和我们的云编排产品 Elastic Cloud Enterprise 和 Elastic Cloud for Kubernetes,以获得自我管理的体验。

Elastic 8.9 中还有哪些新功能? 查看8.9公告帖子了解更多>>

指标聚合延迟的根本改进

作为时间序列数据库 (TSDB) 项目的一部分,与优化 Elasticsearch 指标数据相关,我们致力于改善指标数据经常使用的聚合的延迟。 我们专注于 Kubernetes 指标,并在聚合延迟方面实现了一到两个数量级的改进(即,运行相关聚合所花费的时间是 8.9 之前的 10% 到 1%)。

让我们检查一下详细信息和相关的公开每天基准:

  • 我们改进了 Elasticsearch 的默认刷新行为。 默认情况下,仅当分片处于搜索活动状态时才会发生刷新,并且分片在搜索活动 30 秒后进入搜索空闲状态。 当分片处于搜索空闲状态时,不会发生计划刷新,这有利于索引吞吐量。 然而,搜索一个搜索空闲分片可能会显着增加查询时间 - 这在 Kibana 中加载可视化时会很明显,因为在闲置一段时间后,仪表板加载速度会很慢。 我们进行了两项更改,将聚合搜索的延迟减少了 90% 以上,因为分片处于搜索空闲状态。
    • 我们改进了搜索 api 的 can match 阶段,有时无需执行任何与搜索相关的 I/O 即可确定查询是否与分片不匹配。 对于查询不存在的字段或不匹配的常量关键字字段的特定查询,我们可以跳过整个分片,而无需在数据节点上执行任何与搜索相关的 I/O。 这改进了默认刷新行为,因为分片保持搜索空闲状态并且不会发生计划刷新。
    • 当分片处于搜索空闲状态并且确实需要进行刷新时,刷新会立即执行,而不是让刷新调度程序启动。 这减少了搜索空闲分片时的延迟,并将查询时间减少了 1 秒以上(具体改进取决于数据节点上分配的分片数量)。

  • 我们改进了基数聚合的能力,以识别某些文档集无法添加新值,因此不应将其作为基数聚合运行的一部分进行检查。 此优化导致基数聚合改进超过 85%,在某些条件下超过 99%。
  • 我们改变了使用直方图的方式,从 AVL 树更改为合并,以一点点准确度(从大约 0.1% 的错误更改为大约 1% 的错误)换取大量聚合延迟改进(聚合运行速度提高两倍到 50 几倍)。 此改进会影响一组聚合,包括百分位数、百分位数排名等。
从我们的公开每天基准中 降采样(downsample)性能改进

 

跨集群搜索速度更快,网络行程更少

跨集群搜索 (CCS) 可让你将多个 Elasticsearch 集群联合到一个 Kibana 或搜索端点中,以帮助满足你的数据本地化、监管和合规性以及扩展需求。 集群可以位于世界任何地方、Elastic Cloud 中,或者位于你自己的云或本地自我管理部署中。

作为一个分布式系统,Elasticsearch 会受到网络延迟的影响。 这种情况在跨集群设置中会被放大,其中搜索必须通过网络展开到多个集群以及这些集群内的节点。 网络行程越多,网络延迟对性能的影响就越大。 传统上,如果不使用我们称为 “最小化往返” 的选项,跨集群搜索就会涉及大量网络行程。

即使使用 CCS,search API 也支持最小化往返,但是当 Kibana 通过 CCS 进行搜索时,它在幕后使用 async_search API,该 API 不支持最小化往返。 我们在 8.9 中通过在异步搜索中添加对 ccs_minimize_roundtrips=true 的支持解决了该限制。 Kibana 8.9 默认使用此模式。 

随着更多分片的参与,性能增益会增加。 我们运行了跨集群搜索操作的基准测试,模拟了具有不同数量的远程集群的典型 Kibana 使用场景 —— 最多 150 个集群,总共 150,000 个分片! 在这些测试中,我们发现常见任务(例如加载 “Discover” 页面或仪表板)在最小化往返次数时加载速度提高了 10 到 80 倍。

有时我们还看到,随着我们添加更多远程集群,平均时间(下面的粉红色条)保持更加一致。

 

在不最小化往返的情况下,它往往会更明显地增加。

 

总体而言,我们预计在 8.9 中使用 CCS 时速度会有显着提高。

针对冷和冰冻层进行更快、更可靠的 CCS 搜索

我们还改进了针对可搜索快照(冷或冻结层数据)的远程搜索,并优化了分片跳过。 本地搜索(非 CCS)可以使用集群状态信息过滤(跳过)不相关的分片,将搜索请求的时间范围与分片元数据中的最小和最大时间戳进行比较。 到目前为止,CCS 在不最小化往返行程时不支持这种分片跳过机制。

在 8.9 中,我们在远程集群中执行搜索的 can_match 阶段。 这使得搜索在使用和不使用 CCS 的情况下表现相似,因为协调节点可以确定要跳过哪些分片,这对于冷索引和冻结索引尤其重要。 这可以通过不那么频繁地访问远程集群来改善本地和远程集群之间存在延迟的情况。 请注意,此优化仅在不最小化往返行程时才相关。 最小化往返的跨集群搜索已经具备了这种能力。 在 8.9 中,无论哪种方式都可以满足你的需求。

 

查找与运行状况报告相关的 ILM 策略

索引生命周期管理 (ILM) 可自动执行你的数据管理工作,执行 rollover、shrink、merge、downsample 操作等,并将数据从一层移动到下一层,以便你可以优化成本和性能权衡。 它通过一系列操作(rollover、shrink等)和步骤(等待活动分片等)来实现这一点。 如果 ILM 在某个步骤中停留太久,数据可能会堆积在错误的层中并导致问题。

为了帮助你尽早注意到 ILM 陷入困境,我们增强了运行状况报告 API (Health Report API)中的 ILM 运行状况指示器。 新规则将随时根据当前操作和步骤检查 ILM 策略管理的所有索引。 例如,如果索引处于 rollover > wait-for-active-shards 组合超过 24 小时,或者步骤 wait-for-active-shards 已重试超过 100 次,则指示器将变为黄色。

可以使用运行状况指示器设置(health indicator settings)更改时间和重试阈值。

该指示器还将显示在 Elastic Cloud Deployments 控制台中。 你可以更快地识别可能导致集群性能或稳定性问题的问题。 与运行状况报告的其余部分一样,我们将指出可能的影响并包含相关故障排除指南的链接。

地理线简化

地理数据的一个流行用例是资产(asset)生成位置的时间序列,每个位置都有自己的时间戳,并且系统允许根据该时间序列跟踪资产。 Elasticsearch 现在支持简化算法,允许基于位置点的较小子集(由 “size” 参数定义)生成一条线,同时最大限度地减少由此产生的不准确性。 此功能基于时间序列索引模式基础架构 (TSDS)。 这种简化减少了内存消耗,并支持基于大量位置创建复杂的地理线。 地理线简化在技术预览版中发布。

可视化和规则管理的增强

Elastic 8.9 对现有 Kibana 功能进行了许多增强 - 我们在下面重点介绍其中两个。 此外,“规则即代码(Rules as code)” 通过利用 Terraform 复制规则并应用版本控制,显着简化了集群中多个节点的规则管理,这有助于维护可观察性和安全问题的监控规则。

Kibana 堆积条形图图例

堆叠条形图图例的顺序现在基于受欢迎程度,最重要的元素显示在顶部。 你不再需要滚动到图例底部即可查找图表中最受欢迎的数据。

之前:

 从 8.9 开始新增:

Kibana Lens 阶梯曲线视觉

Lens 现在支持折线图的三个新选项。 三个选项是直线、平滑和阶梯。 阶梯曲线折线图可以帮助用户清楚地看到数据何时以不规则的间隔变化,这有助于避免误解。 创建可视化时,在可视化类型下拉列表中选择线。 然后使用视觉选项菜单在直线插值下拉列表中选择直线(straight)、平滑(smooth)或步进(step)。 

8-9-platform-blog-visual-options-menu

规则即代码

Terraform Elastic Stack 提供程序发布了一项新功能,允许用户在 Kibana 中管理其警报规则和连接器。 这使用户能够自动化手动流程,从一个位置管理多个集群,并解锁更多用例,例如版本控制。

 

等待 ... 还有更多!

从 8.9 发布公告博客中查看搜索、可观察性或安全性方面的哪些其他增强功能可能与你相关! 有关前面提到的功能的更多信息,请参阅 8.9 Elasticsearch 的新增功能和 8.9 Kibana 的新增功能,了解更多详细信息。 最后,发布说明将为你提供 Elastic 8.9 提供的所有增强功能的完整列表。

试试看

现有 Elastic Cloud 客户可以直接从 Elastic Cloud 控制台访问其中许多功能。 没有利用云上的 Elastic? 开始免费试用。

原文:Elastic Stack 8.9: Faster aggregations and cross-cluster searches | Elastic Blog

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

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

相关文章

Linux下快速创建大文件的4种方法总结

1、使用 dd 命令创建大文件 dd 命令用于复制和转换文件,它最常见的用途是创建实时 Linux USB。dd 命令是实际写入硬盘,文件产生的速度取决于硬盘的读写速度,根据文件的大小,该命令将需要一些时间才能完成。 假设我们要创建一个名…

【云原生】kubernetes在Pod中init容器的作用和使用

目录 Pod 中 init 容器 1 init 容器特点 2 使用 init 容器 Pod 中 init 容器 Init 容器是一种特殊容器,在Pod 内的应用容器启动之前运行。Init 容器可以包括一些应用镜像中不存在的实用工具和安装脚本。 1 init 容器特点 init 容器与普通的容器非常像&#xf…

自动化测试:你根本不懂自动化测试的快乐

接触了不少同行,由于他们之前一直做手工测试,现在很迫切希望做自动化测试,其中不乏工作5年以上的人。 本人从事软件自动化测试已经近6年,从server端到web端,从API到mobile,切身体会到自动化带来的好处与痛楚…

CEC2013(MATLAB):遗传算法(Genetic Algorithm,GA)求解CEC2013的28个函数

一、遗传算法GA 遗传算法(Genetic Algorithm,GA)起源于对生物系统所进行的计算机模拟研究,是一种随机全局搜索优化方法,它模拟了自然选择和遗传中发生的复制、交叉(crossover)和变异(mutation)等现象,从任…

前端笔试题1

HTML/CSS 题1&#xff1a; 1&#xff0e;使用CSS 让该节点不可见&#xff0c;方法越多越好。 <div class"hidden">Hi</div> 使用CSS 让节点不可见的方法有以下几种&#xff1a; 把 visibility 属性设置为 hidden&#xff0c;这样元素框不会被绘制&…

CTFSHOW php命令执行

目录 web29 过滤flag web30 过滤system php web31 过滤 cat|sort|shell|\. 这里有一个新姿势 可以学习一下 web32 过滤 &#xff1b; . web33 web34 web35 web36 web37 data伪协议 web38 短开表达式 web39 web40 __FILE__命令的扩展 web41 web42 重定向…

SpringBoot自定义拦截器interceptor使用详解

Spring Boot拦截器Intercepter详解 Intercepter是由Spring提供的Intercepter拦截器&#xff0c;主要应用在日志记录、权限校验等安全管理方便。 使用过程 1.创建自定义拦截器&#xff0c;实现HandlerInterceptor接口,并按照要求重写指定方法 HandlerInterceptor接口源码&am…

[深度学习入门]PyTorch深度学习[Numpy基础](上)

目录 一、前言二、Numpy概述三、生成Numpy数组3.1 从已有数据中创建数组3.2 利用random模块生成数组3.3 创建特定形状的多维数组3.4 利用arange和linspace函数生成数组 四、获取元素五、Numpy的算术运算5.1 对应元素相乘5.2 点积运算 六、后记 本文的目标受众&#xff1a; 对机…

C++进阶 智能指针

本篇博客简介&#xff1a;介绍C中的智能指针 智能指针 为什么会存在智能指针内存泄露内存泄漏定义内存泄漏的危害如何检测内存泄漏如何避免内存泄漏 智能指针的使用及其原理RAII设计一个智能指针C官方的智能指针 定制删除器智能指针总结 为什么会存在智能指针 我们首先来看下面…

Spring5 AOP 默认使用 JDK

这是博主在使用dubbo实现远程过程调用的时候遇到的问题&#xff1a; 我们如果在服务提供者类上加入Transactional事务控制注解后&#xff0c;服务就发布不成功了。原因是事务控制的底层原理是为服务提供者类创建代理对象&#xff0c;而默认情况下Spring是基于JDK动态代理方式创…

SpringBoot 整合Swagger2

一、Swagger简介 Swagger是一套开源工具和规范&#xff0c;用于设计、构建和文档化RESTful Web服务。它允许开发人员定义API的各个方面&#xff0c;并生成易于理解的API文档和交互式API探索界面。同时&#xff0c;Swagger还提供代码生成工具&#xff0c;可自动生成与API交互的客…

MySQL和钉钉单据接口对接

MySQL和钉钉单据接口对接 数据源系统:钉钉 钉钉&#xff08;DingTalk&#xff09;是阿里巴巴集团打造的企业级智能移动办公平台&#xff0c;是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时沟通、钉钉文档、钉闪会、钉盘、Teambition、OA审批、智能人事、钉工牌…

dingding机器人

“自定义机器人”只支持消息发送&#xff0c;自动回复需要“企业内部机器人” 消息发送 import requests import jsonres requests.post(https://oapi.dingtalk.com/robot/send?access_token036a339axxx,data json.dumps({"text": {"content":"h…

医疗保健中的 NLP:实体链接

一、说明 HEalthcare和生命科学行业产生大量数据&#xff0c;这些数据是由合规性和监管要求&#xff0c;记录保存&#xff0c;研究论文等驱动的。但随着数据量的增加&#xff0c;搜索用于研究目的的必要文件和文章以及数据结构成为一个更加复杂和耗时的过程。例如&#xff0c;如…

消息队列(11) - 通信协议的设计

目录 通信协议设计代码实现 通信协议设计 对于我们客户端与服务器之间的通信协议我们约定如下&#xff1a; 具体的协议设计: 之后我们传递的参数也是这些 关于 type其实是在描述当前这个请求 、 响应是在调用那个API 约定如下 对于channel ,是tcp链接中的一个逻辑上的链接,…

策略模式实战应用

场景 假设做了个卖课网站&#xff0c;会员等级分为月vip、年vip、终生vip&#xff0c;每个等级买课的优惠力度不一样&#xff0c;传统的写法肯定是一堆的 if-else&#xff0c;现在使用策略模式写出代码实现 代码实现 策略模式的核心思想就是对扩展开放&#xff0c;对修改关闭…

应用案例|基于三维机器视觉的机器人纸箱拆码垛应用解决方案

Part.1 项目背景 在现代物流和制造行业中&#xff0c;纸箱的拆码垛操作是一项重要且频繁的任务。传统的纸箱拆码垛工作通常由人工完成&#xff0c;这种方式存在劳动强度大、生产效率低以及人为操作容易导致错误等问题&#xff0c;严重影响物料的安全运输和质量。为了满足物流行…

大模型“瘦身”进手机 下一个iPhone时刻将至?

一股“端侧大模型”浪潮正在涌来。华为、高通等芯片巨头正探索将AI大模型植入端侧&#xff0c;让手机实现新一代物种进化。 相比ChatGPT、Midjourney等AI应用依赖云端服务器提供服务&#xff0c;端侧大模型主打在本地实现智能化。它的优势在于能够更好地保护隐私&#xff0c;同…

有没有推荐的golang的练手项目?

前言 下面是github上的golang项目&#xff0c;适合练手&#xff0c;可以自己选择一些项目去练习&#xff0c;整理不易&#xff0c;希望能多多点赞收藏一下&#xff01;废话少说&#xff0c;我们直接进入正题>>> 先推荐几个教程性质的项目&#xff08;用于新手学习、巩…

RS-232标准

目录 1、概述2、RS-232接口的特点3、RS-232接口协议【仿真】 1、概述 RS-232接口是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换…