每月10亿条新文档涌入,总数据量以十亿计,搜索延迟却要锁死在10-30毫秒。这不是实验室指标,是土耳其最大银行的生产环境硬约束。
更麻烦的是用户要的还不是模糊匹配。点查询(point-query)——精确到某一个账号、某一笔交易、某一条记录——这种最吃资源的搜索类型,用户连一秒都不想等。
这家2001年成立的金融科技公司,客户规模土耳其第一。他们的解法没有魔法,是一整套分布式工程的脏活累活。下文按时间线还原关键决策。
第一阶段:承认Elasticsearch不是银弹
团队最初踩的坑很典型:把Elasticsearch当黑盒用,索引设计跟着业务表结构走。结果数据膨胀后,查询延迟从毫秒滑向秒级,GC(垃圾回收)停顿让集群周期性假死。
转折点发生在重新理解"分片(shard)"这个核心概念。Elasticsearch的每个索引被拆成多个分片,分片过多会让协调节点累垮,过少又撑不住写入压力。他们测试了数十种分片-副本组合,最终锁定一个反直觉的配置:单个分片控制在30-50GB,而非官方建议的20-30GB上限。牺牲一点故障恢复速度,换取查询时的分片裁剪效率。
这个决策的前提是他们对数据生命周期做了硬切割。热数据(最近30天)走SSD集群,温数据(30-90天)降配到机械盘,冷数据(90天以上)压缩后转存对象存储。查询请求根据时间范围自动路由,避免全集群扫描。
第二阶段:把"点查询"从全表扫描变成精准打击
点查询的噩梦在于:用户输入的往往是高基数字段——账号ID、交易流水号、身份证号。这些字段唯一值极多,传统B-Tree索引失效,倒排索引的postings list(倒排列表)又太长。
团队的解法分三层。第一层是路由键(routing key)强制绑定:同一用户的数据永远落在同一分片,查询时直接跳过无关分片。第二层是doc values(文档值)预排序:把需要聚合或排序的字段从行存转成列存,内存映射后随机读取性能提升5-10倍。第三层最脏——对部分超热字段做人工缓存,用Redis扛住Top 1%的查询请求,让Elasticsearch专心处理长尾。
这三层叠加的效果:P99延迟从800ms压到25ms,集群CPU使用率反而下降40%。因为拒绝了很多本不该打到Elasticsearch的请求。
第三阶段:写入优化的暗战
每月10亿条文档,峰值每秒数万条。写入瓶颈不在磁盘IO,在段合并(segment merge)的CPU消耗。Elasticsearch的Lucene引擎后台持续合并小段为大段,保证查询效率,但合并期间写入吞吐暴跌。
团队调了两个参数:index.refresh_interval从默认1秒提到5秒,牺牲近实时性换取批量写入效率;index.translog.durability从request改为async,承认少量丢数据风险,用业务层的幂等设计兜底。
更隐蔽的优化是字段映射(mapping)的瘦身。他们统计了所有查询日志,发现60%的字段从未被搜索或聚合。这些字段被显式标记为"index": false,既不建倒排索引也不存doc values,纯做_source(原始文档)存储。单条文档体积压缩35%,网络传输和序列化开销同步下降。
第四阶段:监控即代码
生产环境没有"调完就忘"这种事。团队把Elasticsearch的慢查询日志接入实时分析管道,自动识别新出现的慢查询模式。一旦发现某类查询延迟突增,触发告警并附带建议优化方向——通常是某个新字段缺少合适的分词器,或某段代码生成了嵌套过深的bool查询。
他们还维护了自定义的集群健康评分模型,不只看官方提供的红绿黄状态,而是综合查询延迟、GC频率、段数量、节点间数据倾斜度等12项指标。评分跌破阈值时,自动执行预定义的应急剧本:扩容、强制合并、或临时提升缓存水位。
这套机制的价值在去年一次黑五流量洪峰中验证。当日查询量较平日暴涨470%,P99延迟仅波动到45ms,无人工介入。
回到最初的问题:十亿级数据、毫秒级延迟,技术选型真的那么重要吗?这家银行的实践给出的答案或许让人意外——Elasticsearch版本迭代了十几代,核心架构没变,变的是使用者对数据分布、查询模式、资源取舍的理解深度。
他们的SRE团队最近在做一件事:把上述所有经验封装成内部Operator,让新集群的部署从两周缩短到两小时。但文档里特意留了一条备注——"本Operator不保证延迟,延迟取决于你的数据长什么样"。
这句话被贴在团队工区的白板上。你猜新入职的工程师问得最多的问题是什么?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.