11
博客携程金融基于 obkv 的千亿级指标数据存储方案

携程金融基于 obkv 的千亿级指标数据存储方案-c7电子娱乐

作者简介:gaosf,携程高级开发经理。

携程金融是携程集团旗下的金融服务平台,成立于2016年,依托于数字科技能力,为用户提供便捷的旅游金融服务,包括旅游分期消费、小微企业主金融等多款产品,方便用户在旅游消费时获得资金支持。

作为保证携程金融业务的基础研发部门,我们在2024年上半年落地了一个基于obkv千亿级指标数据存储方案的实践。 本文从项目背景、项目方案、项目成果这三个方面分享项目过程及经验。

项目背景

在金融场景下,非常依赖用户指标数据做一些核心业务逻辑的决策,比如风险决策、个性化服务等,而这些数据都是纯kv对的形式。数据由大数据平台产出,通过离线计算任务的方式生成,落到hive表中,之后将数据从hive表再导入mysql等存储引擎中,供业务进行实时调用。

总体数据规模在几千亿 kv对,采用增量更新的方式,每天的更新规模为数百亿个kv对。

部门几乎所有的核心业务系统都依赖于这项服务,业务方对我们提出了两个诉求:

  • 针对写入,要尽可能快,尤其是高优任务2小时内写入完成,所有写入任务不允许超过24小时。
  • 针对查询,要求在50ms内完成,查询耗时越短越好。

因此我们需要一个能够支持快速写入且查询性能稳定的kv存储方案。

起初(2016~2019年),我们使用 hbase 存储,因为 gc 停顿等问题,无法满足业务查询性能的需要。2020年,我们开发了一套 mysql 存储方案,查询性能满足要求,并且稳定运行了近4年。直到2023年新需求上线,需要写入的数据量翻倍,单表数据总量达到300亿个kv对,每日例行更新的数据峰值达到500亿,且类似这样的业务需求还在增加。此时mysql方案写入能力已经到达上限,扩容也比较困难,且it成本较高,于是开始了新一代kv存储方案的探索。

项目方案

2024年初,我们开始了整个应用架构改造和存储方案的探索和引入。

1.在应用架构方面的改造。

(1)  将存储引擎进行业务层抽象,以便快速接入新的存储引擎。

(2)  对数据消费队列改进,将基于kafka的消费队列改为基于文件的消费队列,以便对导入任务进行灵活的暂停、续写、重试、终止等控制。

(3)  自研了轻量级的任务调动框架,以实现对数据导入任务进行全生命周期的管理,如通过api进行任务的启停、依赖配置、优先级动态调整等。

最终,在应用侧,可同时引入多种存储引擎,且各个引擎间读写相互隔离,实现了存储引擎的快速、低成本的扩展接入,并且有比较灵活的运维能力。

2.存储引擎的探索。

在存储方面,我们需要存储容量可动态扩展,写入性能高,至少满足历史峰值需求(500亿kv/天),查询要快且稳定。

2024年7月份我们将obkv快速接入系统。下图是我们在生产环境中的验证结果,并和此前的mysql方案进行了对比,

1733885989

针对我们的场景,将“每分钟能写入的kv对数量”作为业务侧的一个重要衡量指标。

在使用mysql存储方案时,部署了64个节点,采用分库分表方案,写入速度(仅写入)的历史最大值达到 6000w(kv对)/min(连续运行1小时后,server cpu 告警),读写都开启且不影响查询的状态下写入速度是2000w(kv对)/min(连续运行24小时后,server cpu 告警)。

上线obkv后,部署了一个9节点的集群,为了探索写入能力上限,在不考虑读性能的前提下,最大的写入速度达到9600w(kv对)/min,不影响查询性能的前提下可以达到6000w(kv对)/min的写入速度。

在响应时间方面:在同等条件下,obkv批量写入速度是1.3w/s,批量查询速度1.8w/s;由于mysql的分库分区方式,导致批量写入和批量查询的数据相差较大,分别是5300/s、41.7w/s。在响应时间方面,obkv写入的平均速度是15ms,p99能够达到20ms,查询响应时间平均3ms,p99是10ms;mysql写入比较吃力,达到900ms,查询的性能与obkv相差不大。

在稳定性方面: obkv写入限流6000w/min,连续写入24小时,查询没有任何波动,而mysql在写入速度超过3000w/min后,查询时间飙升。

在存储空间层面:在单副本维度,全量数据obkv的空间占用是mysql的1/5。


3.obkv双集群部署。

obkv于我们而言是一个比较新的产品,在携程集团内部也是首次引入,相关的运维经验缺乏。可mysql方案已经无法很好支撑业务需求,能尽快把obkv用起来。

综合考虑下,在业务层又设计了一套双机房部署方案,来尽可能增加可靠性。核心思路是两个对等的机房进行双写,任何一个集群单次写入失败,都使两个集群重试,来保证两个集群间数据的一致性。在查询时,优先查询同机房的集群,超过指定时间(如20ms)后降级查询另外的机房。

1733886054

该方案的优势在于:

  • 在成本可控范围内,最大化提升整个服务的可靠性。因为obkv集群只需要9个节点,即使部署两份集群,节点数也远远少于mysql单个集群,从成本角度考虑完全可以接受。
  • 可以减少dba的运维压力。dba进行单集群的运维、增删节点、更换磁盘或进行其他的操作都可以直接进行,整体服务不会受到影响,为dba进行后续obkv性能调优、运维预留了充分的探索空间。

项目成果

自2024年7月17日起,obkv在携程金融生产环境正式应用,已稳定运行至今。原来在mysql的流量100%切换至obkv,取得的成效显著。

  • 写入性能优秀:限流6000w/min,每天可写入864亿数据,远高于业务需求的500亿,高优任务2小时完成率从60%提升到了近100%。
  • 查询性能稳定:限流的上限持续写入,查询无明显波动,p99约10ms,p999低于30ms几乎维持在15~20ms。针对查询和写入性能,未来也可以通过集群扩容进一步提升性能,
  • l存储成本骤降:obkv和 mysql的数据压缩比为1:5,存储总空间降低72%,硬件成本降低近60%。
  • 应用架构精简:得益于obkv天然的分布式能力,我们无需处理复杂的分库分表逻辑,应用逻辑被极大简化,换算成应用的机器数量也极大减少,应用cpu核数精简了50%。


本次数据存储方案探索较为成功,感谢oceanbase开源团队和obkv团队在我们项目落地的过程中全力支持。

点赞11
收藏

声明

本网站下的“博客”等板块为技术爱好者提供分享、交流的平台。发布者发布的任何内容、信息等,并不反映或代表本网站的观点、立场或政策。本网站不对其任何内容和信息的错误以及由此产生的损失或损坏承担任何责任。

尊重知识产权是本网站的基本原则之一,如您在使用本网站过程中发现本网站中存在侵犯您或其他第三人合法知识产权的情况,请您即可将侵权材料及初步证据提交至下述邮箱:obcompliance@oceanbase.com 。本网站将在收到材料后尽快进行审核及处理。

海量数据,笔笔算数

已发布 497 篇博文

网站地图