Elasticsearch Serverless 的无状态架构

作者:来自 Elastic Iraklis Psaroudakis

探索 Elasticsearch Serverless 的无状态架构。了解如何将有状态架构转换为用于 Serverless 的无状态架构。

通过 Elastic Cloud Serverless 摆脱运维负担。自动扩展、处理负载峰值,并专注于构建------开始 14 天免费试用亲自体验!

你可以按照这些指南构建 AI-Powered 搜索体验,或在业务系统和软件之间进行搜索


我们非常高兴地宣布 ,我们新的同行评审论文《Serverless Elasticsearch:从有状态到无状态的架构转变》已经发表,并被接收并在 2025 年 Association for Computing Machinery (ACM) Symposium on Cloud Computing (SoCC) 的工业论文轨道上进行了展示。该论文简要介绍了我们在 Elasticsearch 方面的最新创新。在 Elastic,我们始终专注于搜索的未来。从优化性能到简化运维,我们的团队始终在探索下一步的发展方向。

这篇论文不仅仅是一项学术研究。它从基础层面探索了如何为完全 serverless 的世界重新构想搜索引擎的核心。我们将 storage 与 compute 解耦:数据存储在具有几乎无限存储容量和可扩展性的云 blob store 中。这一愿景正是 Elastic Cloud Serverless 产品背后的主要驱动力:在海量数据集上实现无缝搜索,同时具备 serverless 的经济性和运维简洁性。

挑战:为云重新思考有状态搜索

几十年来,搜索引擎一直是强大的有状态系统。部署一个生产级集群(如 Elasticsearch)通常意味着:

  • 配置服务器并管理存储。
  • 为成本、性能和可靠性仔细调优配置。
  • 当工作负载出现峰值或不可预测时,为闲置容量付费。
  • 为扩展和缩减集群付出大量运维工作。

现代云平台已经让其中一些事情变得更容易,但一个根本性的矛盾仍然存在:

我们能否构建一个搜索引擎,在保持 Elasticsearch 强大能力和丰富查询功能的同时,也具备 serverless 架构的经济性和运维简洁性?

这个问题推动了我们的研究。

我们的关键贡献

论文提出了使 Elasticsearch Serverless 成为可能的具体创新:

  • Object store 作为单一事实来源
    • 我们将索引数据、transaction log(translog)和 cluster state 转移到云 object store。这消除了为持久性而存在的 replica shards,并使 object store 成为 indexing 与 search 之间的同步点。
  • "Thin"(无状态)shards
    • shards 可以在节点之间快速恢复和迁移,而无需复制大量数据。磁盘只用于缓存,而不是持久存储。
  • Batched compound commits (BCC)
    • 我们将 index commits 包装在自定义格式中,以降低上传成本,同时保持与 Elasticsearch 相同的 read-after-write 语义。
  • Batched translog uploads
    • translog 上传在节点级别进行批处理,从而降低上传成本。
  • 智能垃圾回收
    • 我们跟踪已上传的 BCC 和 translogs 的使用情况,并在不再使用时删除它们,以减少存储占用和保留成本。
  • Autoscaling
    • 系统会根据 ingestion 和 search 负载自动扩展,使客户端可以直接调用 API,而无需管理集群规模。

总结 :在我们的实验中,在相似硬件条件下,Elasticsearch Serverless 的 indexing 吞吐量最高可达到有状态 Elasticsearch 的两倍,并且通过 autoscaling 可以线性扩展以匹配 ingestion 负载。

架构可视化

论文中的 Figure 1 清晰地并排展示了两种架构:有状态 Elasticsearch 与新的无状态架构 Elasticsearch Serverless。

有状态 Elasticsearch(上图):熟悉的数据层级:hot、warm、cold、frozen。数据存储在本地磁盘上;primary 和 replica 分布在各个节点之间;较冷的数据层可能使用 object store 上的 searchable snapshots。

Elasticsearch Serverless(下图):只有两个层级:indexing 和 search。所有持久数据(Lucene commits、translogs、cluster state)都存储在 object store 中。indexing 节点负责写入并上传数据;search 节点从 object store 和共享缓存中读取数据,而不会在本地持久化索引数据。
要点:用于 indexing 的资源与用于 querying 的资源完全分离。

两种数据流路径的对比

论文中的 Figure 2 和 Figure 3 对比了有状态 Elasticsearch 与 Elasticsearch Serverless 中的数据流方式。

有状态 Elasticsearch(Figure 2):

  • 文档首先进入 primary shard 的 Lucene buffers 和 translog,然后复制到 replica shards。
  • 在 refresh 之后,文档进入新的可搜索 segments。
  • 在 flush 之后,它们被提交到磁盘。
  • 因此,数据的持久性由磁盘和 replicas 提供。

Elasticsearch Serverless(Figure 3):

  • 文档首先进入 indexing node 上的 Lucene 和 translog。
  • 在向客户端返回确认之前,translog 会被上传到 object store。
  • 在 refresh 之后,文档进入新的可搜索 segments,并在 indexing nodes 上提交到磁盘。
  • 在 flush 之后,它们会被打包为 BCC 并上传到 blob object store。
  • search nodes 从 object store 提供查询服务(对于尚未上传的最新数据,则直接从 indexing node 读取)。
  • 因此,数据持久性来自 object store,而不是磁盘或 replicas。

结果:indexing 路径 与 search 路径 完全解耦。

自动伸缩

论文第7节描述了 autoscaler。由于数据存储在 object store 中,重定位 shard 不需要复制完整 segment 数据;只需处理元数据,并在需要时进行缓存预热。因此,cluster 可以比 stateful Elasticsearch 更快地扩展和收缩。

工作原理:

  • autoscaler 是一个外部组件,监控 Elasticsearch Serverless 的指标。
  • Indexing tier:Scale-up 由内存使用量和 ingest 负载驱动(包括排队工作)。
  • Search tier:Scale-up 由内存、search 负载以及用户可配置的 "search power" 驱动(决定本地缓存多少数据集)。
  • 它每隔几秒轮询一次,并独立调整每个 tier。

结果:自动、基于工作负载的伸缩,让客户端可以专注于应用,而不必关注容量规划。

实验结果

论文第8节展示了实验评估。

  • 微基准测试显示批处理的影响:commit 和 translog 的 object store 操作减少,但存在一定权衡。

  • 自动伸缩实验:随着 indexing client 数量增加,吞吐量线性增长,而 P50 和 P99 延迟保持稳定。真实场景示例显示,bulk 响应时间随着 indexing tier 根据需求扩展而改善并稳定。

Stateful Elasticsearch 与 Elasticsearch Serverless 的对比:

  • Elasticsearch Serverless 在第50百分位索引吞吐量大约是 stateful Elasticsearch 的两倍

  • 提升主要来自使用 object store 作为持久化存储,而不是将每个操作复制到 replica shard。

  • 延迟仍具有竞争力。

关键结论:无状态设计不仅提供了更高的峰值性能,还实现了更高效的自动伸缩。

为什么这对 Elastic 的未来很重要

无状态架构不仅是技术成就;它还是我们希望搜索在云端工作的基础。

  • 按需付费:客户可以在几乎无限的数据上进行索引和搜索,无需预置 cluster、调优 tier 或管理 replica 和 snapshot。
  • 自动伸缩:每个 tier 独立自动伸缩,无需容量规划。
  • 频繁自动升级:更好的安全性和价值实现时间,无需对 stateful 数据进行滚动升级的运营成本。

这项工作是让强大搜索更易访问、更具成本效益和可扩展性的一个步骤。

阅读全文并参与讨论

我们相信开放研究和协作的力量能够推动技术发展。鼓励你深入了解细节。我们提供了本文的预印本,深入介绍了架构转型。

深入探索:相关博客文章

虽然论文概述了 Elasticsearch Serverless 架构,工程团队的系列深入博客文章更完整地探讨了细节和创新。这些文章提供了背景、细微差别以及具体技术深度,说明了无状态转型如何成为可能。

建议阅读以下资源,以更全面理解论文中介绍的组件和概念:

致谢

感谢本文所有合著者:Iraklis Psaroudakis、Pooya Salehi、Jason Bryan、Francisco Fernández Castaño、Brendan Cully、Ankita Kumar、Henning Andersen 和 Thomas Repantis。同时感谢 Elasticsearch Distributed Systems 团队的贡献,以及整个 Elasticsearch 工程团队。

原文:https://www.elastic.co/search-labs/blog/elasticsearch-serverless-stateless-architecture

相关推荐
happymaker06262 小时前
JDBC(MySQL)——DAY02
android·数据库·mysql
十月南城2 小时前
实时数据平台的价值链——数据采集、加工、存储、查询与消费的协同效应与ROI评估
数据库·数据仓库·hive·hadoop·spark
岁岁种桃花儿2 小时前
kubenetes从入门到上天系列第十二篇:Kubernetes的Deployment控制器
云原生·容器·kubernetes
有梦想的小何2 小时前
从结算需求出发:基于库存日快照与分区的结算报表的Java实践
java·数据库·mysql
Yungoal2 小时前
SQL基础0
数据库·sql
韩立学长2 小时前
基于Springboot的商品库存管理系统369jr3t9(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
java·数据库·spring boot·后端
scofield_gyb2 小时前
MySQL 批量插入详解:快速提升大数据导入效率的实战方法
大数据·数据库·mysql
春日见2 小时前
自动驾驶流派
大数据·人工智能·深度学习·elasticsearch·搜索引擎