Elastic产品技术回顾与前瞻

简介: 3月16日阿里云 × Elastic 中国用户峰会2023 Elastic中国区首席解决方案架构师--朱杰分享Elastic产品技术回顾与前瞻

作者:朱杰 Elastic中国区首席解决方案架构师


一、Elasticsearch功能改进

①增强集群扩展性系统优化项目

image.png

该项目创建时间较久,可以在GitHub里通过number77466进行查看。

项目包含了大量任务,涉及88task,目前优化进度为69个。我们从Elasticsearch的各个不同部分,比如generalsearch以及网络方面做大量测试与发掘,查看哪些点阻碍了Elasticsearch的扩展性。此处的扩展性主要指在大集群里,具有大量分片的情况下,集群消耗了大量资源,对搜索以及生命周期管理等都会产生很多负面影响。

因此,该工程会从所有方面进行测试、发掘,整理在系统扩展性方面的各种瓶颈。

我们在GitHub issue里罗列了所有点,并且会后面版本陆续做修复,使Elasticsearch的集群承载能力变得更好,能够处理更多分片。

业务复杂度增加之后,分片也会越来越多。经过集群扩展性优化的一系列修改后,测试显示整个集群扩展性得到了较大提高,降低了内存使用,搜索更快,生命周期、进度等不会因为大量分片而降低。


   ②仅保存Doc Value的字段

image.png

Doc Value指列式存储,搜索时必须构建索引。而在8.1版本里允许某字段仅保存列式存储,不会构建索引,只会将value存在列式结构里。适用场景有比如全观测场景,有大量指标数据往往只用于指标聚合值、平均值等,不会用字段进行查询与过滤。也有一些业务场景可以选择性地将有些字段的value保存下来,而不会对其进行过滤。

该能力带来的好处在于可以节省大量存储空间,尤其在全观测场景,数据量非常可观,测试显示可以节省大于20%的存储空间;其次,能够提高索引构建吞吐率,全观测大数据量写进时,可提高20%地索引速率。但与此同时,它牺牲了一定的查询性能,可能会下降510倍。

总体来说,该能力是通过牺牲一定的查询来换取成本的下降以及索引构建速率的上升,用户可以根据具体情况选择是否使用。


③从Doc Values合成_source

image.png

8.4版本推出的功能同样围绕着列式存储Doc Value进行,进一步优化了成本,主要着眼于字段source。

存储写进JSON的原始文档存储在source里,因此我们考虑:如果不存source,是否可以节省大量存储空间?那么,原始source能从哪些地方来?其中一个很好地途径便是列式存储,从Doc Value重新将其构建回source,从而实现节省存储的目标。

其优势在于极大减少了索引大小,提高了写入性能,但也带来了一定的限制:

l  轻微降低get_source性能,因为需要从列式存储恢复source

l  原始JSON里的字段顺序难以保持稳定性,与写入时JSON里的字段顺序不一。


④新的集群平衡策略

image.png

此前,在大集群、分片比较多的情况下,经常会出现分布不均匀的问题,有些节点的磁盘写得非常快,会过早触发水位线,导致磁盘不均匀。索引在大数据上写入时,因为不均匀的分布会引发写入热点。其根本原因在于原先的Elasticsearch采用了较为简单的平衡策略,只考虑分片数量,并且在做平衡时算法较简单,造成很多不必要的分片移动,不会根据最终的集群分布做合理规划。

而新的平衡策略会根据最终集群分布的一致性做预先计算,再进行必要的分片挪动,能够使整个集群分片变得更均匀。现阶段提供了两个方向的策略:

l  基于磁盘分片大小维度进行考虑,最终使每个节点的分片总大小比较均匀。然后基于此计算整个集群状态,做必要的分片挪动。

l  基于索引负载进行衡量,负载依据为根据节点上的写线程数量进行评估。有些节点负载比较高,会做全局评估,再做合理分布,使得写入均匀落在不同节点上。


二、Elasticsearch全新功能


①查询旧版本ES创建的索引

image.png

8.3版本实现了查询旧版本ES创建的索引的能力。

此前,做Elasticsearch升级时,必须重新做数据索引才能被新版本读写,极大妨碍了版本升级。另外,在全观测与安全场景下,可能会需要查询比较远期的旧数据,而旧数据往往在旧版本上生成。

有了该功能,能够减少升级负担,最快使用引入大量优化特性的新版本,同时能够查询老版本的数据。

原理为:将老版本的snapshot恢复到新集群里,作为存档index做只读查询。或存储在Elasticsearch的可搜索快照对象存储里,可以直接查询老版本快照里的数据。

注意,该能力对于支持的数据类型有一定限制,无法支持所有Elasticsearch数据类型;其次,索引只能被读取,不能被写入;另外,性能方面稍慢,牺牲了速度。


TSDB时序数据优化

image.png

8.6版本正式推出了Time Series Database,是针对时序指标数据的全新功能,底层基于现有框架实现。

时序数据有很强的约束性,因此也可以实现很多优化手段。比如,将数据尽量集中在一个索引或某台机器的某个shard里,并且按照时间序列进行预先选择,使得磁盘上的存储经济性以及搜索速度都得到了质的提高。

实现原理为:

第一,根据数据维度、各种数据标签、timestamp等联合因素生成TSID,目标是要将相同dimension、相同timeseries的数据都集中在一个shard的某个segment里,因此生成逻辑需要进行改造。

第二,数据经过排序与聚合后能够产生很高的压缩率,比如某些指标具有很多相同的tag(维度信息),而这些维度信息几乎都是重复的。如果所有数据的document都紧靠在一起,可以得到极高的压缩率,并且在后续做聚合运算时,性能也会大幅提高,可以直接精准路由到某个segment做聚聚合。

第三,时间戳不会交错,一个datastream里会生成很多个indexindex里的起始时间与结束时间不会在两个索引里交错,可以很容易地定位到某个索引直接进行计算与搜索,忽略掉不可能存在答案的索引,可以极大提高性能。

此外,时间序列里会存在一些边缘场景,比如迟到数据,先发的数据比后发的数据晚到。在该种情况下,依然可以接收迟到数据,但会将其存在新索引里,以保证不同index时间不会交错的目标。经测试,最高可降低约44%的索引大小。


TSDB降采样

image.png

TSDB降采样是时间序列数据库的标配功能。很多采样精度非常高,但是没必要保存原始精度,可以降低采样频率拟合原始目标。采样越低,数据精度越低,但是存储下降也非常可观。

可以在生命周期管理里启用该任务,降采样结果会写到新索引里,与原始精度索引进行联合查询,用户无需感知,会根据查询时间段选择合适精度的索引回答,全面支持Kibana的各种分析组件。


③全新的向量搜索

image.png

7.3版本曾提供暴力搜索的方式做向量匹配,但只适用于小数据量场景。如果使用在大索引上,延迟会非常大。

8.0版本提供了HNSW索引,在较大数据规模上也能够获取较好的数据性能。8.5版本开始,KNN集成到了标准的search API下面,用户可以在标准search里结合原始query对某些字段进行knn query做综合打分,能够获取到数据集。


④机器学习支持外部模型

image.png

支持了有监督的机器学习。支持了有监督之后会涉及到模型问题,在模型方面,Elasticsearch并不会让用户去构建很多模型,现在有丰富的模型社区和模型市场,用户可以下载很多高质量的外部生成模型。

用户可以在外部下载模型,通过Eland工具导入到Elasticsearch里,由Elasticsearch提供原生的机器学习能力实现分词、NLP等相关任务。

image.png

兼容性方面,并不是所有Pytorch模型都能够直接导入,具体能导入哪些需要参看兼容模型文档。简单来说,从8.0开始主要支持NLP任务,比如模型填空、命名实体识别、文本分类(二分类或多分类)、生成词向量等,后续也会支持问答、翻译类型模型。

上述能力使得Elasticsearch能够支撑用户的更多应用场景,用户无需自己写代码编写一套机器学习框架,能够更快地完成项目。


三、Elasticsearch研发前瞻

image.png

Elasticsearch Query LanguageServerless Architecture是未来研发的两个重要功能,是全新的架构。其中,serverless架构与现有的存算一体传统架构有着天壤之别,Elasticsearch Query LanguageESQL)是一种全新查询语言。

image.png

传统Elasticsearch存算一体的架构存在显而易见的弊端。同时,云原生兴起,给众多大数据组件提出了新的要求。

原先架构的弊端包括:

l  写入损耗:有主分片,也会有副本,写入时在主分片上做了一份索引,同时也需要在所有副本上消耗CPU资源构建副本。副本数目越多,浪费的CPU资源越大。

l  多份数据拷贝。在云原生架构下,底层存储本身是高可用与多副本,没有必要再依靠Elasticsearch提供多副本能力,完成高可用要求。

l  现有结构里,写入与搜索共享CPU,会争抢CPU,有大量写入时必然会影响搜索速度。

l  现有架构冷热分层,因为存算一体的限制,热数据和冷数据分别属于不同数据节点,会带来大量数据移动,从热节点搬运到冷节点,再搬运到冻结节点。

l  会影响集群规划,使规划变得麻烦。因为存在大量数据搬运,所以会对每部分进行大小规划设计,需求变更之后规划也需要变更。

image.png

Serverless架构的目标是存与算彻底解耦,也意味着写入与搜索做了分离。会有独立节点做写入索引构建,构建好segment之后,将其写入到对象存储里,分发到search节点。

通过在对象存储中做解耦,将写入与搜索做了分离,索引只需要构建一次即可分发到多个search里,避免浪费大量cpu资源;其次,可以很容易地独立扩展存储层和计算层,可以灵活扩展写入层,也可以独立扩展search侧计算资源,每一部分都可以独立伸与缩,甚至可以将计算资源缩到0,需要时再拉齐某些search节点,集群变得前所未有的灵活。

同时,因为对象存储的引入,存储变得非常弹性,高可用也得到很高保障,不再有大量数据搬运,不需要在不同生命周期里,在热节点、冷节点等之间搬运,消除大量不必要的搬运动作,包括分片均衡等数据搬运。

搜索性能方面,沿用了原来的可搜索快照技术,会有本地缓存来存储对象存储里的数据,可以选择全量缓存,也可以选择根据命中的冷热点进行缓存,也简化了管理。

现有情况下,我们大多基于云环境构建,而改为云原生架构之后,版本概念会变得模糊,新功能可更快到达用户端。

image.png

ESQL是管道连接的分布处理逻辑,与原先的Elasticsearch是完全不一样的语言,会涉及到数据的搜索获取,可以做独立的数据转换,可以对数据进行中间步骤的计算与数据转换等,可以交给下一个比如聚合运算任务,还可以对数据进行排序等分阶段的步骤,灵活性远超现有的查询语言。

ESQL的最大意义是可以引入很多数据转换工作,可以保持极大的灵活性,查询时在语言里直接做大量数据转换,使应用实现逻辑变得更简单。比如JoinLookups、子查询等,经过前面步骤后,可以在结果集里再进行搜索、聚合等。

image.png

ESQL是一种全新的分布式计算引擎,有自己语言的分析器、优化器,还有分布式执行引擎。面向大数据量设计,并且是分布式,支持弹性伸缩。未来,我们还会纳入比如外部数据源,打开更大的想象空间,使解决方案层面获得更大提升,在应用层面也可以获得更多提升。


四、Elastic解决方案更新

image.png

在全观测解决方案里,经过一两年的沉淀与积累,我们实现了丰富全面的功能,包括日志、指标、APM的完整功能(包括客户端、分析端)、RUM以及用户体验观测。RUM指真实用户追踪,追踪用户与网站如何交互等数据,用户体验观测可以对页面加载情况、各个资源加载情况进行分析。

image.png

安全解决方案也已经十分全面,不仅包括传统的SIEM检测,还有主动防御。安装Elastic Agent软件至终端,即可主动防御恶意软件、勒索软件等。同时,具备强大的信息采集能力,涵盖内核级数据采集、安全方面数据采集、主机数据采集以及osquery数据采集等,安全数据采集变得更简单、更丰富。

有了数据之后,传统的SIEM部分也标配了规则检测引擎,预置大量原厂检测规则,具备完备的告警能力,可对接其他系统。

在安全响应方面,可以通过emailWebhook等工具对接外部平台,也可以通过原生外部case连接器对接ServiceNow等安全响应工具。另外,可以通过Elastic Agent实现主机隔离或主动检查状态等。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
机器学习/深度学习 数据采集 自然语言处理
机器学习模型的部署与上线:从训练到实际应用
在机器学习中,模型训练只是整个过程的一部分。将训练好的模型部署到实际应用中,并使其稳定运行,也是非常重要的。本文将介绍机器学习模型的部署与上线过程,包括数据处理、模型选择、部署环境搭建、模型调优等方面。同时,我们也会介绍一些实际应用场景,并分享一些经验和技巧。
|
SQL Linux Go
docker镜像分析利器之dive
docker镜像分析利器之dive
1150 0
|
6月前
|
存储 数据采集 人工智能
97_微调基础:全参数 vs LoRA
在2025年的大模型时代,微调技术已经成为将通用大语言模型(LLM)适配到特定领域和任务的核心技术手段。随着模型规模的不断膨胀——从早期的数十亿参数到如今的数千亿甚至万亿参数,如何在有限的计算资源下高效地微调大模型,成为AI工程师面临的关键挑战。本文将深入探讨两种主流的微调方法:全参数微调和LoRA(Low-Rank Adaptation)低秩适应微调,从原理、技术实现、资源需求、性能表现等多个维度进行全面对比分析,帮助读者在实际项目中做出最优的技术选择。
940 0
|
人工智能 自然语言处理 前端开发
VideoChat:高效学习新神器!一键解读音视频内容,结合 AI 生成总结内容、思维导图和智能问答
VideoChat 是一款智能音视频内容解读助手,支持批量上传音视频文件并自动转录为文字。通过 AI 技术,它能快速生成内容总结、详细解读和思维导图,并提供智能对话功能,帮助用户更高效地理解和分析音视频内容。
1176 6
VideoChat:高效学习新神器!一键解读音视频内容,结合 AI 生成总结内容、思维导图和智能问答
|
搜索推荐 开发者
如何在 Elasticsearch 中选择精确 kNN 搜索和近似 kNN 搜索
【6月更文挑战第8天】Elasticsearch 是一款强大的搜索引擎,支持精确和近似 kNN 搜索。精确 kNN 搜索保证高准确性但计算成本高,适用于对精度要求极高的场景。近似 kNN 搜索则通过牺牲部分精度来提升搜索效率,适合大数据量和实时性要求高的情况。开发者应根据业务需求和数据特性权衡选择。随着技术发展,kNN 搜索将在更多领域发挥关键作用。
649 4
|
安全 应用服务中间件 网络安全
49.3k star,本地 SSL 证书生成神器,轻松解决 HTTPS 配置痛点
mkcert是一款由Filippo Valsorda开发的免费开源工具,专为生成受信任的本地SSL/TLS证书而设计。它通过简单的命令自动生成并安装本地信任的证书,使本地环境中的HTTPS配置变得轻松无比。mkcert支持多个操作系统,已获得49.2K的GitHub Star,成为开发者首选的本地SSL工具。
1021 10
|
人工智能 架构师 搜索推荐
AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界
【7月更文挑战第4天】AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界
AI Agent【项目实战】:MetaGPT遇上元编程,重塑复杂多智能体协作的边界
|
人工智能 网络协议 物联网
AIoT智能物联网平台技术架构
AIoT智能物联网平台的技术架构从终端设备到物联网平台可分为边缘侧网关、接入网关层、基础设施层、中台层和应用层。
1509 14
|
机器学习/深度学习 算法 vr&ar
增强现实中的物体识别与跟踪
增强现实(AR)中的物体识别与跟踪是实现虚拟内容与现实世界无缝融合的关键技术。
392 0
|
存储 运维 监控
深度解读阿里云 Elasticsearch Serverless 服务如何实现超高性价比
阿里云 Elasticsearch Serverless 商业化版本正式上线,在帮助用户快速构建数据检索与分析应用的同时,提供按实际资源用量付费的付费体验,与自建相比大幅降低成本,助力用户快速上云!
3488 0
深度解读阿里云 Elasticsearch Serverless 服务如何实现超高性价比

热门文章

最新文章