BOCDOP 宝舵早期基于 TiDB 构建实时数仓,随着数据量增长,在数据处理效率、OLAP 能力扩展、功能支持、成本与资源方面存在一定优化空间。为提升数据分析能力并优化成本,宝舵引入 SelectDB,达成写入速度提升 10 倍,成本直降 30% 的显著成效。
本文转录自高瑞军(宝尊科技 高级架构师)在 Doris Summit Asia 2024 上的演讲,经编辑整理。
业务背景
宝尊集团创立于 2007 年,是中国品牌电商服务行业的领导者、先行者及数字商业赋能者。目前宝尊集团约有 8000 名员工,业务遍及东亚、东南亚、欧洲、北美等多个国家和地区,服务全球各行各业超过 450 家品牌,立足为品牌提供面向全球、面向未来的服务与产品。BOCDOP 宝舵(后文简称“宝舵”)是宝尊集团商业化独立品牌,目前拥有 1000 余名内部技术工程师,为集团业务提供强大的自主研发系统支持。
宝舵 BBI Cloud 是由宝舵开发的电商全渠道数据采集、整合与分析应用产品,核心功能包括:
- 多渠道数据采集与自助取数: 支持 100+ 模块的多渠道数据实时接入,覆盖多渠道店铺运营业务。提供一站式拖拉拽与透视分析功能,满足自助取数需求;
- 主题报表与可视化分析: 提供业务必需的主题报表与可视化洞察分析看板,支持分钟级交易数据呈现,帮助用户实时掌握最新业务动态;
- 自助开发与灵活分析: 集成外部 BI 工具,支持用户自定义指标和维度,实现灵活自助分析。
为支撑宝舵 BBI Cloud 数据分析服务,宝舵需要一个具备多源异构数据接入能力、高实时性可扩展、稳定性优异的实时分析数据库,该数据库需要涵盖以下功能:
- 多源异构数据实时接入: 支持多渠道(100+ 模块)的结构化、半结构化数据(如日志、交易、用户行为数据)接入,集成流式数据接入能力(如 Kafka、RMQ),确保多渠道数据低延迟同步更新;
- 高实时性与低延迟响应:支持 Chat BBI 产品的自然语言交互、可视化看板等场景,要求毫秒至秒级查询响应。针对业务主题报表(分阶段交易数据、行业竞争分析),高效处理 OLAP 多维度聚合查询,支持数百至上千并发用户的自助取数和订阅下载操作,避免性能瓶颈。
- 扩展性与稳定性:采用分布式架构,支持水平扩展以应对 PB 级数据量增长,兼顾实时写入与复杂查询,避免资源争用。具备高可用机制,确保 7*24 小时服务连续性,尤其保障关键业务报表场景的稳定性。
早期架构
宝舵早期基于 TiDB 构建实时数仓,在实际研发与使用过程中,存在着一些挑战与优化空间:
- 数据处理效率:在处理大规模数据插入或删除时,需要调整特定参数(如
tidb_batch_insert
和tidb_dml_batch_size
)以优化性能,对不同业务场景的适配提出了更高要求; - OLAP 能力扩展:在执行大规模数据分析任务时,宝舵需额外增加 TiSpark 节点避免影响正常查询,该过程增加了运维复杂性与成本;
- 功能支持:在实现复杂分析需求时,窗口函数的使用存在一定限制,且分区表和视图创建功能尚未完全支持,在开发层面存在优化空间;
- 成本与资源:TiDB 在节点数较多的情况下授权费用较高。此外,对 NVME 磁盘的依赖以及单实例 SSD 磁盘的限制,使得存储空间的管理与扩展面临一定挑战。
为提升数据分析能力并优化成本,**宝舵经过综合选型对比,最终选择 SelectDB 替换 TiDB 构建实时数仓。**SelectDB 是飞轮科技基于 Apache Doris 打造的现代化实时数据仓库,以其卓越的实时分析能力、高性价比、易用性、安全性及稳定性,为宝舵提供了强大的实时大数据分析支持。
基于 SelectDB 打造宝舵 BBI Cloud
2023 年上半年,宝舵完成了数据类应用 SelectDB 迁移工作。在 618 大促期间,通过 22 张实时报表验证了 SelectDB 的性能与稳定性。此后,宝舵将 BBI Cloud 剩余的实时数据应用逐步迁移至 SelectDB。至双 11 大促时,所有原 TiDB 上的应用均已切换至 SelectDB 运行。经过两次大促实战验证,得出结论:SelectDB 能够稳定满足宝舵高并发实时数据供应需求,为业务提供了坚实的技术保障。
宝舵数据源涵盖内部业务系统数据、平台与三方数据以及填报与历史数据,不同的数据源采用不同的数据同步方式:
- 内部业务系统数据:包含集团内部 OMS、WMS、PIM 等内部系统,涵盖 MySQL、MongoDB、Oracle 等不同类型业务数据库。采用 Canal、Mongo-Connector、OGG 等工具获取对应业务库的 binlog,并将这些日志传递至 Kafka 完成数据同步;
- 平台与第三方数据:该部分数据包含国内外 30 余家电商平台数据,以及部分第三方数据,主要采用 Java 程序进行数据同步;
- 填报与历史数据:该部分数据包含品牌客户手动填报的销售目标数据,用于与实际销售数据进行对比分析,直接使用 DataX 数据同步工具写入。
在数据链路方面,离线数据将存入 Hive。实时数据则通过 Kafka + Flink 链路流转至 SelectDB,由 DolphinScheduler 调度,经 SelectDB 计算后,进行近实时数仓分层。结合 SelectDB 内表和 Hive Catalog 能力,为应用层提供统一数据查询服务。
在应用层,宝舵将报表工具集成至 BBI Cloud,基于 SelectDB 实时分析能力,提供实时可视化看板与精品模板,同时开发了自主分析取数模块,围绕预售、交易、履约、库存等主题构建维度表与实时宽表,并基于数据分析结果在自助取数分析平台形成指标与事实维度,使得店铺运营人员能够自主开发部分报表,灵活满足不同品牌的数据需求。
双 11 大促数据链路监控实践
作为电商,宝舵每年会经历多个大促活动,其中,双 11 大促规模最大,数据量可达平日的 30-60 倍。为满足业务人员及部分 Business Group 实时观看全渠道销售数据的需求,宝舵基于 SelectDB 支持 BBI Cloud 双 11 大促作战室报表,具体实现如下:
- 实时数据写入:通过 Flink + SelectDB 流式写入能力,将分散在 100+ 业务模块(如订单、支付、物流)的数据实时汇聚,实现秒级延迟的数据同步;
- 写入吞吐优化:利用 SelectDB 的分区分桶策略与单副本写入机制,在双 11 峰值时段(如 0 点抢购)实现每秒百万级数据写入,最高写入速度较传统方案提升 10 倍;
- 实时写入监控:通过集成 Prometheus + Granafa,实时监控写入吞吐量、版本合并积压、磁盘 IO 等核心指标,并以动态水位线可视化展示,确保系统稳定性;
- 数据一致性保障:通过自研的数据比对工具,对源头业务库(如 MySQL、Oracle 等)与数仓落库进行数据比对,确保数据一致性;
- 资源隔离与高可用:为“作战室看板”单独分配计算资源组,避免高并发查询与实时写入的资源争用,确保关键业务查询响应时间稳定在 500ms 内。同时采用多活集群部署,通过 FE BDBJE 协议实现元数据强一致性,数据节点高可用容灾,任一节点故障时自动切换,业务无感知。
基于 SelectDB 新架构,宝舵实现了业务与平台数据的实时抽取与多渠道整合、数据供应 0 事故、报表服务可用性 99.9%,并配备了实时监控预警。此外,数仓链路基于 SelectDB 完成了优化,数据同步提速 30%,最高写入速度提升 10 倍。
收益总结
宝舵基于 SelectDB 完成架构链路升级后,对比原 TiDB 架构,取得了以下关键收益:
- 成本显著降低:存量成本降低 50%,增量成本从机器费用、License 费用、厂商运维费用降低到仅需机器费用,成本直降 30%;
- 最高写入速度提升 10 倍:最高写入速度从 20 万/分 提升至 230 万/分;
- 查询性能大幅提升:小 SQL 查询在速度不变的情况下,资源消耗降低了 33%,大 SQL 查询性能提升 66%。
未来规划
目前,宝舵已在多次大促中实践应用了 SelectDB,解决了数据处理局限、功能支持不足、成本高昂等问题,相较于原先的数据架构,最高写入速度提升 10 倍,查询性能大幅提升,成本直降 30%。宝舵规划继续基于 SelectDB 扩展其 BBI Cloud 功能,并不断使用 SelectDB 更新的能力为更多业务场景赋能,持续进行架构演进与功能探索:
- 湖仓一体实践:借助 SelectDB 的湖仓融合能力消除数据孤岛,统一数据湖的构建和计算引擎;
- 物化视图探索:通过后续引入多表关联物化视图,进行近实时数据更新,并将资源消耗降到最低;
- 存算分离应用:目前宝舵使用存算一体架构,未来将尝试存算分离应用,通过分离存储与计算资源,提升系统可扩展性并降低成本。