拉卡拉 x Apache Doris:统一金融场景 OLAP 引擎,查询提速 15 倍,资源直降 52%

简介: 拉卡拉早期基于 Lambda 架构构建数据系统面临存储成本高、实时写入性能差、复杂查询耗时久、组件维护复杂等问题。为此,拉卡拉选择使用 Apache Doris 替换 Elasticsearch、Hive、Hbase、TiDB、Oracle / MySQL 等组件,实现了 OLAP 引擎的统一、查询性能提升 15 倍、资源减少 52% 的显著成效。

拉卡拉(股票代码 300773)是国内首家数字支付领域上市企业,从支付、货源、物流、金融、品牌和营销等各维度,助力商户、企业及金融机构数字化经营。随着实时交易数据规模日益增长,拉卡拉早期基于 Lambda 架构构建的数据平台面临存储成本高、实时写入性能差、复杂查询耗时久、组件维护复杂等问题。为此,拉卡拉选择使用 Apache Doris 来替换 Elasticsearch、Hive、Hbase、TiDB、Oracle / MySQL 等组件,完成 OLAP 引擎的统一,实现了查询性能提升 15 倍、资源减少 52% 的显著成效。

面临的挑战

早期数据平台基于 Lambda 架构建设。左侧部分是批处理,右侧是实时流处理。

面临的挑战.png

为满足不同业务数据需求,两条处理链路的计算结果分散存储在 Hive、HBase、Elasticsearch 、TiDB 和 Oracle / MySQL 多个组件,存储层多栈并存,体系技术繁杂,数据冗余问题较为严重。这样的架构给我们带来了众多的挑战:

  • 报表系统存储成本高: 报表系统采用 Hive 计算和 Oracle 存储,随着业务和数据量的增长,Oracle 的扩容复杂,迫切需要“去 O”。
  • 交易查询系统挑战: 交易系统依赖备库进行查询,但备库的存储周期短(通常一周),且部分场景需与其他主题数据关联查询,Elasticsearch、MySQL/Oracle 难以高效支持星型 / 雪花模型的多表关联查询。此外,部分业务使用 MySQL 作为存储库,分库分表的存储方案也增加了查询的复杂性。难以满足业务侧低延时查询需求。
  • 标签系统构建挑战: 在标签构建过程中,标签数量众多采用宽表存储;标签需要频繁增加,需要数据库能够快速响应 schema 变更;需要支持商户标签点查询和实时多维度查询;且商户标签按域计算后需经常进行数据更新。该架构不能很好处理这种宽表写入、实时更新、快速 schema 变更、多种复杂查询的场景。
  • 实时与离线分析割裂:Elasticsearch 和 MySQL 缺乏 HTAP 能力,需与外部数仓配合使用,Oracle 虽支持混合负载但资源隔离不足,易导致 OLTP 与 OLAP 相互干扰
  • 生态兼容性局限:Elasticsearch 的 SQL 支持不完善,MySQL 分析函数有限,Oracle 与云原生工具链集成弱,难以无缝对接主流 BI 工具实现交互式分析
  • 架构复杂性与运维成本: 早期架构基于多个 OLAP 组件,虽然功能丰富,但复杂的架构增加了运维成本和学习成本,同时也提高了保证多份存储数据一致性的难度。

基于 Apache Doris 打造统一 OLAP 引擎

为解决上述问题,从 23 年起引入 Apache Doris,从 1.2.x 版本升级至如今的 2.1.x 版本。并在 Doris 的基础上相继重构了报表系统、标签系统、对账单系统等关键应用。并陆续新上线了风控营销合作平台、营销平台、交易实时看板等业务。

基于 Apache Doris 打造统一 OLAP 引擎.png

上图为引入 Apache Doris 的架构图。主要变化在数据存储层,使用 Doris 替换了 Elasticsearch、HBase、TiDB 和 Oracle / MySQL 多技术栈,实现了统一的对外存储查询引擎。统一的平台能够更好地支持数据分析和业务决策,促进企业在降本增效方面取得显著的成效:

  • 服务器数量下降 52%:原本系统架构中同时运行 10 台 HBase、10 台 Elasticsearch 和一套 Oracle 一体机服务器,此外还占用了部分 TiDB 集群和 MySQL 资源。通过引入 Doris,并对架构进行整合优化,我们将原本分散的组件统一替换为一个 10 台规模的 Doris 集群。服务器数量下降 52%。
  • 查询性能提升 15 倍: 引入 Doris 之后,其查询性能相较于之前的组件分别有不同程度的性能提升,尤其是在 Elasticsearch 替换后体现的尤为明显,查询耗时从原先的 15s 缩短至 1s,查询性能提升 15 倍。
  • 开发运维效率大幅提升: 只需要使用和维护 Apache Doris 一个组件,大大简化了运维的复杂性和学习的成本。所有数据都在 Doris 中统一存储和管理,减少了数据的流转、数据管理和数据冗余,提升了开发效率。

此外,Apache Doris 在其他几方面的优势也比较明显:

  • 丰富的生态对接: 兼容 MySQL 协议和标准 SQL 语法,支持 Tableau、Grafana 等 BI 工具直接接入,迁移成本降低 90%。提供 JDBC / ODBC 接口,与 Flink、Kafka 等流批处理框架无缝集成。
  • 高吞吐秒级实时数据接入: 支持 Stream Load(百万行/秒)和 Kafka 直接订阅,延迟 <1 秒,写入吞吐比 ES 提升 5 倍。主键模型 (Unique Key) 支持 UPSERT 和部分列更新,避免全量重写。
  • LakeHouse 支持:可以和 Hive 和 Hudi 中的数据打通,做数据湖查询和处理加速。

金融核心场景实践

01 对账单系统

商户工作台内部的对账单系统,面向商户提供交易信息查询与批量对账单文件下载服务,帮助商户快速掌握交易情况,进行对账核对和经营分析。Doris 作为实时数仓,承担交易明细查询、统计报表生成等核心能力,支持高并发、低延迟的数据服务。

金融核心场景实践.png

如上图所示,使用 Flink CDC 实时监听和同步 MySQL 中的商户信息、账户信息、产品配置等基础表数据;交易系统将实时增量交易数据写入 Pulsar 消息队列,Flink 消费 Pulsar 中的交易流水数据流,经过处理后实时导入到 Doris。由 Doris 支持多种查询场景,包括:

  • 明细查询:用户可以通过多条件快速定位单笔交易信息。
  • 汇总报表:按天、月或自定义条件生成交易汇总结果。
  • 多表联合查询:结合商户、产品等维度信息进行多表关联分析。
  • 数据下载:支持对账单文件、明细结果的批量导出,方便离线对账。

系统数据量庞大,每日新增数据量达到亿级规模,历史数据保留一年,总数据量达到 20TB;商户对账查询场景具有强烈的时间集中性,高峰期日查询次数达到百万级别,并发请求压力巨大。借助 Doris 优秀的并发处理和极速查询能力,查询 99 分位数响应时长在 2s 以内,结合 Flink checkpoint 控制,数据延迟可控制在 5s,极大保障了商户查询体验与业务稳定性。

  1. Doris 主键模型解决数据乱序

    在构建对账单系统的过程中,上游交易系统在完成数据处理后,由于非同步写入和其他处理步骤的介入,出现数据乱序问题。而 PaaS 消息中间件数据补传或数据片段回放时,也加剧了这一问题。

    我们基于 Doris 主键模型成功杜绝了这一问题,并通过设置 sequence_column 参数,以确保数据的最终一致性。具体来说,数据版本号作为一个整型字段,在交易系统的计算过程中始终保持递增,从而确保数据按照正确的顺序进行处理。

    CREATE TABLE `info` (
    `s_no`varchar(64) NULL COMMENT'流水号',
    `s_date`date NOT NULL COMMENT '日期',
     `s_id`varchar(32)NULL COMMENT 'ID号',
    `b_id`varchar(32)NOT NULL COMMENT'唯一标识',
    `s_b_ver`int(11)NULL COMMENT'数据版本号',
    ...
    INDEX idx_s_date (`s_date`) USING BITMAP COMMENT'',
    INDEX idx_s_id (`s_id`) USING BITMAP COMMENT''
    )ENGINE=OLAP
    UNIQUE KEY(`s_no`, `s_date`,`s_id`, `b_id`)
    COMMENT'信息表'
    PARTITION BY RANGE(`s_date`)
    (PARTITION partition_namel VALUES [('0000-01-01'),('2024-06-01')),
    PARTITION p_2025 VALUES [('2025-01-01'), ('2099-01-01'))
    DISTRIBUTED BY HASH('s_id`) BUCKETS 10
    PROPERTIES (
    "replication_allocation" = "tag.location.default:3",
    "bloom_filter_columns" = "s_eid, s_nno, s_bno, s_n:id, t_no",
    "is_being_synced" = "false",
    "storage_format" = "V2",
    "enable_unique_key_merge_on_write" = "true",
    "light_schema_change" = "true",
    "function_column.sequence_col" = "s_b_ver",
    "disable_auto_compaction" = "false",
    "enable_single_replica_compaction" = "false";
    
  2. 使用倒排索引优化大表关联

    在优化大表关联的场景中,需要对两个数据量庞大的事实表进行关联操作。这两个事实表虽然都采用了分区存储,但它们的分区时间和业务含义各不相同。在尝试将其中一张表与另一张表关联时,无法准确获取右表的查询范围,通常会导致全表扫描,从而占用大量资源并延长查询时间。

    为了解决这一问题,添加了倒排索引、调整分桶策略以及右表的表结构,经过调整,查询耗时从原先的 200 秒大幅缩短至 10 秒,查询效率提升超过 20 倍。

02 实时交易看板

金融市场瞬息万变,交易者需要实时监控市场动态以做出快速决策。实时交易看板能够提供最新的市场数据、价格波动和交易量信息,帮助用户及时响应市场变化。

在实时交易看板场景中,为了提升交易信息的时效性,原先的架构采用 Java 代码从 TiDB 获取数据,经过计算后再写回至另一套 TiDB,数据加工链路较长,且对外部计算逻辑依赖较重。现在,我们优化方案为使用 Flink 进行实时处理,直接将数据写入 Doris,并在 Doris 内部完成 ETL,极大简化了数据加工链路,同时提升了架构的稳定性和容错能力。

金融核心场景实践-2.png

引入 Doris 后,我们进行了以下几项工作,充分发挥了其优势:

  • 集群升级: 将 Doris 集群从 1.2.6 升级至 2.0.7 版本,整体查询与分析性能提升超过 30%。
  • 采用 Merge-on-Write(MoW):对于主键模型的存储机制由 Merge-on-Read(MoR) 优化为 Merge-on-Write(MoW),有效避免了写入过程中多版本数据合并的问题,大幅提升了并发查询分析的效率。
  • 部分列更新: 对于退款和调账等场景,需要对历史数据的部分字段进行修改。借助主键模型的部分列更新能力,可高效执行局部字段变更,无需重新写入整行数据,从而提升更新效率。
  • 友好生态: Doris 与 Flink 生态友好,通过 Flink + Doris Connector,实现流式数据无缝对接,简化数据加工链路,提升架构的稳定性和容错能力。

03 实时风控场景

在风控场景中,风控系统和风控人员通过多维度筛选条件,从海量历史交易数据中快速定位可疑交易记录,并结合历史交易行为,全面了解交易背景和细节。不仅为风险评估和策略调整提供重要依据,同时也支持人工干预和决策,使风控反应更加敏捷、精准、高效。

金融核心场景实践-3.png

在引入 Apache Doris 之前,实时风控场景主要依赖 Elasticsearch 实现,但存在诸多问题:开发复杂度高,查询性能无法满足业务需求,且最核心的痛点在于 Elasticsearch 不支持 Join 操作,难以进行多表关联查询,严重限制了风控场景下对交易背景和细节的综合分析能力。而替换为 Doris 之后,其展现出多项显著优势:

  • 灵活的 Schema 变更能力:在风控场景中,业务需求不断演进,要求数据库具备灵活的 Schema 变更能力。Doris 提供 Light Schema Change 支持灵活的字段和索引的增删修改。相比 Elasticsearch 需要通过 Reindex 进行 Schema 变更,Doris 的 Schema Change 机制更加高效、灵活,极大提升了数据管理的便捷性和业务适应性。
  • 标准 SQL 查询接口:Doris 提供标准 SQL 查询接口,兼容 MySQL 协议,开发团队能够以熟悉的 SQL 方式高效查询和分析数据。相比之下,Elasticsearch 使用 DSL 查询语言,学习成本较高,复杂查询编写难度大。
  • 强大的多维分析和复杂查询能力:随着风控业务复杂度的提升,对多维分析和多表关联的需求越来越频繁。 Elasticsearch 在处理这类复杂查询时存在局限,特别是在多维度聚合统计、复杂的多表 JOIN、子查询和窗口函数等场景中,无法满足需求。引入 Doris 后,不仅能够高效处理大规模数据,还在多维度聚合、复杂查询和多表关联、子查询等方面更加友好。
  • 查询性能 15 倍提升: 在性能方面, Elasticsearch 查询响应时间长达 15 秒,尤其在数据量大或查询复杂的情况下,响应速度难以满足业务需求。相比之下,Doris 在相同场景下能够将查询响应时间控制在 1 秒以内,显著提升了查询效率。 而且在高并发、大数据量的查询处理上,相较于 Elasticsearch 优势更加明显。

结束语

随着业务复杂度和数据实时性要求的不断提升,未来拉卡拉也将在以下几个方向持续推进:

  • 加大 Lakehouse 场景应用: 加大 Lakehouse 建设,将 Hive 的报表结果数据全部迁移至 Doris,解决 Hive 在时效性和交互性不足的问题,提升查询体验,满足实时查询和多角度分析需求。
  • 加大数据加工能力建设: Apache Doris 除了支持高速查询外,在数据加工和模型构建方面也具备强大能力。后续将重点投入离线计算场景,利用物化视图的建设,实现更灵活的数据建模方式,提升对复杂指标和报表场景的支撑能力,为实时分析、风险监控、指标计算等场景提供更强算力保障。
  • 跨集群复制 CCR 的应用: Apache Doris 在 2.0 版本中实现了跨集群复制(CCR)功能,未来将基于 CCR 功能在异地灾备、数据同步等场景进行应用,以提供更为安全可靠的使用体验,确保业务的稳定连续运行。
  • 更多场景覆盖、高 SLA 保证和资源隔离落地: 随着更多业务场景逐步迁移至 Apache Doris 集群,当前也在积极规划混合场景下的资源管理策略。通过合理的资源隔离、以及按需拆分集群等方式,进一步优化资源利用效率,提升系统整体弹性,保障各类业务系统在高并发、高负载情况下的高 SLA 要求。
相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
5月前
|
存储 自然语言处理 分布式计算
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
Apache Doris 3.1 正式发布!全面升级半结构化分析,支持 VARIANT 稀疏列与模板化 Schema,提升湖仓一体能力,增强 Iceberg/Paimon 集成,优化存储引擎与查询性能,助力高效数据分析。
737 4
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
|
6月前
|
存储 分布式计算 Apache
湖仓一体:小米集团基于 Apache Doris + Apache Paimon 实现 6 倍性能飞跃
小米通过将 Apache Doris(数据库)与 Apache Paimon(数据湖)深度融合,不仅解决了数据湖分析的性能瓶颈,更实现了 “1+1>2” 的协同效应。在这些实践下,小米在湖仓数据分析场景下获得了可观的业务收益。
1151 9
湖仓一体:小米集团基于 Apache Doris + Apache Paimon 实现 6 倍性能飞跃
|
5月前
|
SQL 人工智能 数据挖掘
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
Apache Doris 4.0 原生集成 LLM 函数,将大语言模型能力深度融入 SQL 引擎,实现文本处理智能化与数据分析一体化。通过十大函数,支持智能客服、内容分析、金融风控等场景,提升实时决策效率。采用资源池化管理,保障数据一致性,降低传输开销,毫秒级完成 AI 分析。结合缓存复用、并行执行与权限控制,兼顾性能、成本与安全,推动数据库向 AI 原生演进。
443 0
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
|
6月前
|
人工智能 运维 监控
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
本文基于 Apache Doris 数据运维治理 Agent 展开讨论,如何让 AI 成为 Doris 数据运维工程师和数据治理专家的智能助手,并在某些场景下实现对人工操作的全面替代。这种变革不仅仅是技术层面的进步,更是数据运维治理思维方式的根本性转变:从“被动响应”到“主动预防”,从“人工判断”到“智能决策”,从“孤立处理”到“协同治理”。
1033 11
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
|
4月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
731 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
442 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
6月前
|
SQL 人工智能 数据挖掘
Apache Flink:从实时数据分析到实时AI
Apache Flink 是实时数据处理领域的核心技术,历经十年发展,已从学术项目成长为实时计算的事实标准。它在现代数据架构中发挥着关键作用,支持实时数据分析、湖仓集成及实时 AI 应用。随着 Flink 2.0 的发布,其在流式湖仓、AI 驱动决策等方面展现出强大潜力,正推动企业迈向智能化、实时化的新阶段。
770 9
Apache Flink:从实时数据分析到实时AI
|
6月前
|
SQL 人工智能 API
Apache Flink 2.1.0: 面向实时 Data + AI 全面升级,开启智能流处理新纪元
Apache Flink 2.1.0 正式发布,标志着实时数据处理引擎向统一 Data + AI 平台迈进。新版本强化了实时 AI 能力,支持通过 Flink SQL 和 Table API 创建及调用 AI 模型,新增 Model DDL、ML_PREDICT 表值函数等功能,实现端到端的实时 AI 工作流。同时增强了 Flink SQL 的流处理能力,引入 Process Table Functions(PTFs)、Variant 数据类型,优化流式 Join 及状态管理,显著提升作业稳定性与资源利用率。
690 0
|
5月前
|
人工智能 运维 Java
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
本文基于Apache Flink PMC成员宋辛童在Community Over Code Asia 2025的演讲,深入解析Flink Agents项目的技术背景、架构设计与应用场景。该项目聚焦事件驱动型AI智能体,结合Flink的实时处理能力,推动AI在工业场景中的工程化落地,涵盖智能运维、直播分析等典型应用,展现其在AI发展第四层次——智能体AI中的重要意义。
1798 27
Flink Agents:基于Apache Flink的事件驱动AI智能体框架
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
879 33
The Past, Present and Future of Apache Flink

热门文章

最新文章

相关产品

  • 云原生数据仓库AnalyticDB MySQL版
  • 推荐镜像

    更多