产品派
返回

Grab迁移反欺诈存储后P99延迟下降50%

后端InfoQ 中文站2026/10/21 10:06:14
AI 导读

Grab已将反欺诈平台Counter Service的存储后端从宽列数据库迁移至Aerospike,并重新设计数据模型,通过分阶段影子流量和渐进式切流完成零停机替换。该服务每秒处理数万次查询,日请求量约10亿次。迁移后,生产环境P99读取延迟下降约50%,磁盘数据量由约3 TB降至1 TB,单节点成本降低45%至50%。

Counter Service主要处理带时间窗口的计数查询,例如近期叫车请求量和支付失败记录。旧方案分别为15分钟、每小时和每日计数保存独立数据行,每次事件需要三次并行读取、一次内存递增和一次批量写入,整体涉及四次网络往返。该宽列模型依赖聚簇列来高效检索指定时间范围内的数据行。

为降低迁移风险,Grab先在Rust服务中将存储访问与业务逻辑拆开,并以存储门面同时支持旧数据库、Aerospike和模拟实现。配置项可控制单后端、影子读写及流量拆分模式,影子读取比例依次从5%提升到20%、50%和100%,团队利用现有指标核对数据一致性,确认结果后才把真实请求切换到新后端。工程负责人Daniel Lim将其概括为,把双重读写路径、流量影子验证和渐进式迁移结合起来。

数据模型是此次改造的核心。Grab曾考虑为每个时间桶保留一条记录,但Aerospike每条记录约需64字节主索引元数据,按服务规模计算后,记录数量会成为容量规划的重要因素。最终方案把同一计数器、同一时间粒度下的所有时间桶合并到一条记录中,以按时间戳排序的映射保存数据;写入时使用原子映射递增,并主动删除过期条目,使记录数减少一个数量级以上,同时降低索引和磁盘占用。

读取方式也随之调整:旧后端由服务端按时间范围筛选并返回分页数据行,Aerospike则返回包含映射的整条记录,再由客户端完成筛选。借助批处理API,多条记录操作可以合并为发往相关数据库节点的请求,从而减少多键访问场景中的网络请求次数。

发布期间,团队还处理了Rust客户端的兼容性问题,包括早期使用同步API,以及集群替换时的DNS处理异常。随后,Grab改用异步客户端,并与上游维护者协作解决DNS问题。公司表示,整个迁移过程未发生停机,也没有出现数据完整性问题,最终架构结合了存储抽象、影子验证、渐进式切流,以及针对Aerospike记录和批量访问特性优化的数据模型。

Aerospike存储迁移反欺诈Rust性能优化

本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。

阅读原文