存算分离特性

最近更新时间:2024-09-24 17:58:01

我的收藏

背景

日志场景为 Elasticsearch 核心应用场景之一。其拥有行列混存、倒排索引、数值索引等丰富的数据结构,结合强大的 Elastic Stack 组件生态,为用户提供实时、端到端、一站式日志存储、分析解决方案。
日志场景的特点主要是高吞吐写入及海量存储。原生 ES 在 Shard Nothing 的分布式架构基础上提供线性扩展、资源隔离、故障隔离等特性,以满足高吞吐、海量存储需求。
日志场景已进入 PB 级时代,随着数据规模的不断增长,原生存算一体架构的成本问题也逐渐显现。为此,腾讯云 ES 自研存算分离架构,解耦计算与存储资源,充分利用云原生弹性、高可用、规模化等特点帮助用户大幅降低海量数据存储、分析成本,挖掘更多商业价值。

优化方案

提供自研云原生存算分离架构,分离存储和计算资源、消除冗余副本,实现海量资源池化、共享、弹性伸缩,大幅降低存储与计算成本。
核心设计要点包括:
1. 副本物理复制。通过对分片底层 segment 物理复制的方式消除副本写入计算资源开销,确保主从副本数据文件完全一致。
2. 混合存储引擎。整合本地存储与对象存储,数据在不同存储介质间细粒度、无感知平滑迁移、卸载,存储共享、消除冗余副本,提升数据可靠性。
3. 数据智能分层。根据数据的访问特性,智能选择性价比最高的组合层级,降低存储成本。
4. 弹性伸缩。计算、存储资源独立、高效扩缩容,索引跨集群挂载、资源灵活调度。
5. 多维度性能优化。查询裁剪、IO 并行、智能缓存等优化大幅提升查询性能。




使用方法

创建存算分离类型的索引

索引创建时指定为存算分离类型(静态参数):"index.store.type":"hybrid_storage"。
PUT/${index}?pretty
{
"settings":{
"index.store.type":"hybrid_storage"
}
}

卸载参数设置

segment 卸载控制参数:
参数名称
解释
默认值
是否可以动态修改
index.hybrid_storage.segment.retention_period
主分片上 segment 多久卸载(以索引创建时间为起始点)
Long.MAX_VALUE h
index.hybrid_storage.segment.replica.retention_period
副本分片上 segment 多久卸载(同上)
72h
动态修改主分片上segment卸载时间为48小时,副本卸载时间为24小时(也可在创建时指定):
PUT ${index}/_settings
{
"index.hybrid_storage.segment.retention_period":"48h",
"index.hybrid_storage.segment.replica.retention_period":"24h"
}

使用限制

1. 不支持文档更新。
2. 不支持带 ID 写入。

优化效果

整体效果

1. 存储成本下降50%+。
2. 带1副本场景计算成本下降40%+。
3. 全量卸载状态的索引搬迁秒级完成,单机故障场景分片秒级恢复。

查询性能

1. 文件若已在本地缓存,性能与基于 SSD 的访问无差异。
2. 文件未缓存,完全从对象存储冷读,10亿数据点查、全文检索数秒返回。

支持版本

日志增强版。