首批通过分布式安全可靠测评,为关键业务系统打造
多模一体化保障出行核心系统分布式升级
- 70%存储成本降低
- 50%计算资源消耗降低
- 90%管理数据库实例缩减
T3出行:海量出行数据下的数据库挑战与应对
高建丰-T3 出行研发总监
高建丰T3 出行研发总监
2024-11-21
一、业务背景
随着 T3 出行业务迅猛增长,日峰值订单数已突破 300 万。一套稳定、高性能且安全的数据库系统显得尤为重要。结合业务特点,T3 出行的数据库选型,需要综合考量性能、成本等多方面因素考量。
二、业务挑战
- MySQL 存储的数据量非常有限
- T3 出行最初将其数据库部署在 MySQL 上。然而,随着订单量的快速增长,尽管 MySQL 能够支持很高的 KPS(每秒查询次数),但其存储的数据量却非常有限。当数据量达到几百万条时,系统便接近其上限,从而导致性能下降和内存消耗增加等问题。
- 分库分表的技术局限性明显,带来资源浪费、成本增加等问题
- 首先,查询性能、灵活性不强,通常只能按照订单、司机或乘客等单个特定维度查询数据,不能进行多维度的查询。其次,数据库的水平扩展困难,且容易造成资源浪费。根据 T3 出行的业务画像,波峰波谷明显,非早晚高峰时段,大量的 MySQL 资源日常闲置;而早晚高峰时段,MySQL 连接数与规格绑定,数量有限,容易出现资源碎片化,导致数据库使用成本不断增加。
- 技术栈众多,运营复杂且存在数据同步难题
- T3 出行使用 MySQL+HBase+MongoDB 等解决方案支撑数据存储与查询,目前,T3 出行系统运行着的 TP 和 AP 类数据库近 20 个,技术栈众多,需要耗费大量的资源和人力维护。且数据从 TP 数据库同步到 AP 数据库,涉及数据复制、提取、清洗等环节,每一次数据同步都有可能引起数据延迟或丢失,难以实现 100% 的完美迁移。
三、解决方案
- HTAP 实时分析混合负载
- 通过 OMS 将异构数据库分库分表迁移或同步至 OB Cloud,将多个实例融合为一个实例,摆脱维护中间件的苦难,分析查询的业务得以前置,无需等待 T+1 数据,直接于在线库中实现实时营销决策等分析需求。
- 多模一体化,统一管理多数据类型
- 通过一个引擎原生支持多种数据访问模式,提供 Table API 接口兼容 HBase 接口,可通过一个数据库系统管理键值、JSON、GIS、XML、全文索引和 SQL 引擎查询等多种数据类型,在大规模数据存储和高性能读写场景中,用户能够实现高效的数据操作。
- 高效存储引擎
- 基于 LSM-Tree 引擎,采用读写分离设计和行级细粒度记录更新,达成内存数据库写入性能和磁盘数据库的存储成本。通过行列混合存储格式,磁盘数据块按列组织,利用编码压缩大大降低存储成本。
四、应用场景
一开始,T3 出行将司机任务、订单监控、虚拟号、开放平台等部分非核心业务作为试点,迁移至 OB Cloud 上。切换过程非常顺利,且运行稳定,在兼容性、成本与性能等方面表现良好。
2024 年年初,T3 出行开始将订单、结算、支付、风控、营销等核心业务系统逐步都迁移至 OB Cloud。截至目前,T3 出行超过 50% 的业务平稳运行在 OB Cloud 之上,预计在 2025 年年初,实现所有系统的切换。
五、客户收益
- 存储成本降低 70%
- 全部业务切换至 OB Cloud 后,原来的 RDS for MySQL 400+ 个实例全部迁移至 OceanBase 集群,数据库实例数缩减 90%,大幅度降低业务系统的数据存储规模,存储成本降低 70%。
- 整体数据库成本缩减 30%
- OB Cloud 采用三副本方式,以单库单表的形式支撑业务。切换之后,会员系统/司机端等核心业务计算资源消耗下降 50%。得益于存储压缩技术和 CPU 资源利用率提升,整体数据库成本下降 30%,数据压缩率达到 1:4。
- 高并发场景数据库性能提升 75%
- 使用 OB Cloud 后,在早晚高峰的高并发场景下,T3 出行的数据库性能提升 75%,大表查询性能提升 12%,写入性能提升 90%,终端的司机和乘客在使用时可明显感知到业务的响应速度提升,整体的使用体验也有了质的提升。
- 实现机房级故障 RPO=0
- OB Cloud 稳定性非常高,一年来无任何生产事故。得益于 OceanBase 原生金融级高可用,T3 出行所有业务均实现机房级故障 RPO=0 的能力。