存算分离特性

最近更新时间:2025-09-12 14:15:02

我的收藏

背景

TSearch 面向日志与分析等典型高并发、大数据量场景,采用列式存储与倒排索引引擎,为用户提供实时、高效、低成本的日志分析能力。随着数据量爆炸式增长,传统存算一体架构在资源利用、扩展性和成本控制上暴露出诸多限制。为此,TSearch 提出面向云原生场景的存算分离架构,实现计算与存储资源的彻底解耦,通过统一的弹性资源池支撑多租户、大规模、高可靠的数据存储与计算需求。

挑战

写入压力集中:日志数据写入频繁,直接入对象存储将面临带宽瓶颈与写入延迟风险。
冷热数据混布:短期热数据与长期冷数据混合存储,影响查询性能与资源成本。
副本冗余成本高:为实现高可用,传统方式依赖多个冗余副本,造成大量重复存储。
数据生命周期耦合:写入、持久化、空间回收之间时序紧耦合,无法精细调度。

创新点:写入 / 下沉 / 卸载解耦调度

TSearch 在存算分离架构的基础上,创新性地将写入、数据下沉与数据卸载进行彻底解耦,构建灵活的数据生命周期调度机制:
写入阶段:数据首先写入本地缓存盘(如 NVMe SSD),完成快速落盘与索引构建,写入延迟可控。
下沉阶段:数据是否、何时下沉到对象存储由后台任务灵活控制,避免写入高峰时段对对象存储带宽产生冲击。
卸载阶段:数据一旦下沉完成,系统可根据策略异步卸载本地副本,释放本地存储空间,提升整体资源利用率。
该机制实现了写入路径的稳定性、存储路径的可调度性与卸载路径的低成本性之间的平衡,使系统在面对高并发写入、大容量存储需求时具备更强的弹性与可控性。

核心设计方案

副本物理复制机制:基于 segment 的物理复制,主从副本数据完全一致,显著降低副本同步时的计算资源消耗。
混合存储引擎:整合本地盘与对象存储,支持分层存储、冷热分离、无感卸载,实现共享数据副本与高可用能力。
计算层逻辑副本:多副本共享底层数据,避免重复存储,结合对象存储持久化保障,实现数据高可用与副本成本最小化。
弹性资源调度:计算、存储独立扩缩容,写入、下沉、卸载各阶段均可按需调度,构建具备流控能力的资源自适应体系。
高性能本地缓存:通过 SSD 缓存加速写入与查询,结合动态卸载策略,兼顾成本控制与性能表现。
整体架构图如下:


使用方法

创建存算分离类型的索引

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


下沉卸载参数设置

segment 下沉卸载控制参数:
参数名称
解释
默认值
是否可以动态修改
index.tsearch.engine.hybrid_storage.min_upload_size
segment 冻结、下沉阈值,超过阈值大小不再参与 merge,待下沉至 COS (最小 0 GB, 最大 10 GB)
4 GB
index.tsearch.engine.hybrid_storage.retention_period
segment 从创建到达卸载的时间周期,动态配置
24 h
index.tsearch.engine.hybrid_storage.cache.enable
索引是否启用缓存,配置混合存储时,默认为 true
true
cluster.tsearch.hybrid_storage.cache.size
缓存文件大小,当前磁盘最大空间百分比,支持百分比和绝对值输入(大于1为绝对值,大于0小于1为百分比)
10%

动态修改分片中 segment 下沉阈值为 5 GB,卸载时间为48小时(也可在创建时指定):
PUT ${index}/_settings
{
"index.tsearch.engine.hybrid_storage.segment.retention_period":"48h",
"index.tsearch.engine.hybrid_storage.min_upload_size":"5gb"
}


使用限制

1. 不支持文档更新。

优化效果

整体效果

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

查询性能

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

支持版本

存算分离版。