写点什么

单集群 QPS 超 10w,存储成本降低 70%!招联金融基于 Apache Doris 数仓升级实践

  • 2024-09-04
    北京
  • 本文字数:3216 字

    阅读完需:约 11 分钟

大小:1.64M时长:09:34
单集群 QPS 超 10w,存储成本降低 70%!招联金融基于 Apache Doris 数仓升级实践

作者|严奕华,招联金融数仓团队负责人


在竞争激烈的消费金融市场中,有效利用海量数据、提升业务运营效率是赢得市场的关键。早期招联采用典型的 Lambda 架构提供业务报表、数据运营、个性推荐、风险控制等数据服务,而 Lambda 过多的技术栈也引发了数据孤岛、查询效率不足、代码复用性差以及开发运维成本高昂等诸多问题。因此,招联引入 Apache Doris 对架构进行了升级,不仅替换了冗余的技术栈,还实现了实时数仓存储和计算引擎的统一,从而大幅精简了整体架构。


如今,招联内部已有 40+ 个项目使用 Apache Doris ,拥有超百台集群节点,个别集群峰值 QPS 可达 10w+ 。通过应用 Doris ,招联金融在多场景中均有显著的收益,比如标签关联计算效率相较之前有 6 倍的提升,同等规模数据存储成本节省超 2/3,真正实现了降本提效。

存在的问题


早期架构由实时数仓和离线数仓两套组成,是较为典型的 Lambda 架构。由于历史原因,整个架构非常复杂,用到 Hbase、kafka、Clickhouse、 Spark、Impala、Hive、Kudu、Vertica 等多种技术栈。



该架构虽功能完备,但由于其技术栈的复杂度及能力的局限性也带来了诸多问题:


  • 运维依赖性高:Lambda 架构包含较多的技术组件,且部分组件为闭源、内部逻辑不透明,强依赖厂家技术支持。

  • 资源利用率低:实时及离线两套架构间代码无法复用,这无疑增加了维护成本;且两套架构间资源无法合理共享和调度、数据无法复用,资源利用率非常低。

  • 数据时效性低:组件多、数据处理链路也长,多组件数据传输影响了时效性,降低了数据查询的效率。

  • 并发能力弱: Vertica、Impala 等部分查询引擎无法应对高并发场景的需求。

升级目标

基于以上待解决的问题,招联对未来即将升级的新架构提出了几点要求:


  • 架构简化:精简架构,统一组件标准,解决不同架构间兼容性问题;尽量采用开源软件,底层逻辑透明化,确保平台升级迭代可控,降低运维成本及难度。

  • 混合部署与弹性伸缩:需要满足在线混合部署的使用条件,支持弹性扩容,最大化资源利用率,实现降本增效。

  • 实时分析:搭建高性能实时数仓能力,可支持上万超高 QPS、秒级别查询响应,实现数据分析实时化。


在上述目标驱使下,招联迅速定位到 Apache Doris 这一开源实时数据仓库 ,Doris 以其简洁的架构设计、丰富的数据接口、高效的查询性能以及低廉的运维成本深得内部认可,可为后续的升级和优化提供强有力的技术支撑。

数仓生态全新升级


基于 Apache Doris 的数仓生态相较于旧架构实现了极大的精简。主要变动集中在实时数仓部分,使用 Doris 替代了原先 Clickhouse、Hbase、Kafka、Vertica 等复杂的技术栈


尽管当前架构仍然保留了离线和实时两套处理链路,但在系统设计上实现了高度的代码可复用性,Doris 实时数仓所有代码均可从离线数仓 1:1 复制,以保证两套架构的逻辑一致性和维护便捷性。不仅如此,数据也最大程度在实时及离线数仓中进行了复用,当数据进入实时数仓,经过 DWD 层、DWS 层加工处理后会同时同步到离线数仓中,既提高了数据的时效性,又确保了两套架构数据的一致性。


Apache Doris 的引入,不仅大幅简化了数仓生态整体架构,硬件成本也实现约 10% 的降低(如累加开发、运维成本,将有更大比例的节约)。同时,得益于代码和数据的高复用率,架构的运维管理也变得便捷高效。

基于 Apache Doris 的实时数仓


具体到实时数仓来说,原先由 Flink、 Kafka 、HBase 应对实时场景,Clickhouse 、Vertica 及部分 Doris 能力应对准实时场景。当前只保留 Flink 进行数据采集,其他组件均替换为 Doris, Flink 采集数据到 Doris 中,经由 ODS、DWD、DWS、DM/APP 层处理后,由 Doris 直接提供查询及分析服务。


此外,存储和计算引擎也都统一到 Doris,并通过 CCR 实现 Doris 集群读写分离和数据同步,避免单点压力过大导致系统性能下降,提高了数据查询效率以及系统的稳定性。


如何避免数据乱序:


  • Watermark 机制:实时数仓中,Flink 负责将 ODS 中数据消费到 Doris 中,为避免该过程出现数据乱序,可利用 Watermark 机制来容忍数据迟到,确保数据的时效性和正确性。

  • 任务串行: 为确保数据的连续性,在调度系统中实现了多批次任务串行机制,上一批次任务未完成时,下一批次就不会开始。同时引入动态窗口机制,每当发起任务时,会自动获取上一批次最新业务节点到此刻时间节点之间的数据,既能保证了批次之间的相互独立,又确保了数据处理的连续性和时效性。



01 客群筛选场景


在市场营销、风险控制等精细化数据运营中,客群筛选是确认目标人群、制定营销策略的重要手段。


在客群筛选过程中,通常需要对集市中多张标签表进行关联计算,大约需要处理 2.4 亿条数据。之前使用 Vertica 计算引擎进行处理时,耗时 30-60 分钟;替换为 Doris 之后,仅用时 5-10 分钟即可完成,相较之前有 6 倍的性能提升。除了显著的性能提升外,Doris 作为一款开源的数据库,无需支付任何许可费用,这与商业化产品 Vertica 相比有着显著的成本优势。


02 高频点查场景


对于某场景需求,招联需确保系统的 QPS(每秒查询次数)达到 10 万次,同时,单次接口响应时间不能超过 60 ms。这意味着,除去网络传输与程序逻辑处理的耗时后,数据查询耗时需控制在 15 ms 内,对系统的性能要求十分严苛。此外,系统还承载着每日庞大的数据更新任务,最大更新量高达 20 亿条,这要求系统不仅能应对高并发,还要确保在高负载下依然能够稳定运行。


之前招联使用 Redis 来应对高并发需求,其并发能力和稳定性基本可以满足要求。但 Redis 的核心问题在于使用成本非常高昂。相比之下,Doris 不仅能够支持单节点上万 QPS 的超高并发,也具备大规模数据的快速写入能力,2000 万数据仅需 4 分钟即可写入完成。最为关键的是,Doris 在成本方面展现出非常显著的优势。


在处理同等规模的数据量时,Doris 仅需 Redis 1/3 的内存,实现存储成本的大幅降低与效率的显著提升,真正做到了降本增效。

数据传输场景


从前文可知,依托于 Doris 跨集群数据复制(CCR)能力,已实现 Doris 集群读写分离;另外,因招联内部业务已大范围应用 Doris, CCR 也成为数据库间数据传输的必然选择。


Apache Doris 跨集群数据复制 CCR 能够在库/表级别将源集群的数据变更同步到目标集群,可用于提升在线服务的数据可用性、隔离在离线负载、建设两地三中心等。详情可参考往期技术解析博客:跨集群复制功能 CCR


从测试数据来可知 CCR 传输效果:


  • 存量数据:对于千万级数据,可在几分钟内完成同步;对于亿级别的数据,也可在预期范围内完成,比如 1 亿数据约为 220G,使用 CCR 仅耗时 1500+ 秒(25 分钟)。

  • 增量数据:增量数据的同步性能则更加优异,千万级增量数据同步 1 分钟内即可完成,亿级别数据同步仅需不到 8 分钟。


经验分享

1. CCR 超时: (TRollbackTxnResult_({Status:TStatus({StatusCode:OK ErrorMsgs:[l}) MasterAdd ress:<nil>}) )


网络波动存在丢包导致 RPC 超时,为确保网络稳定,可升级 CCR 版本至 2.1.4 版本可支持设置 RPC 超时时间。


2. Create table as 语法导致的 slot 一系列问题:


2.0 版本在处理 create table as 语句时,采用的是旧执行优化器,而因旧执行优化器为列字段裁剪,普遍存在 slot 相关问题。升级为 2.1 以上版本后,slot 相关问题得以解决;可以创建临时表 xxx,执行 set enable_nereids_dml = ‘true’来规避该问题。

结束语

截止当前,招联金融内部已有 40+ 个项目接入 Apache Doris ,总集群数近十个,集群节点超百个,某集群峰值 QPS 可达 10w+ 。未来,招联还将持续推广 Apache Doris 在内部的使用范围,并将对存算分离、数据湖能力进行探索及应用:


  • 存算分离架构:正在探索推进中,未来将尝试基于 Apache Doris 3.0 新版本进行整体架构升级演进,以支持更灵活的弹性部署、降低运维成本。

  • 数据湖分析:未来希望借助 Doris 数据湖的能力,统一开发管理工具,满足多源异构数据的存储和分析需求;统一数据访问接口,提升异构数据访问效率;基于丰富数据管理能力,提升数据质量;并将利用 Doris 特性加速数据湖上查询效率。

2024-09-04 15:509484
用户头像
李冬梅 加V:busulishang4668

发布了 1010 篇内容, 共 622.8 次阅读, 收获喜欢 1181 次。

关注

评论 1 条评论

发布
用户头像
很赞
2024-10-28 09:46 · 广东
回复
没有更多了
发现更多内容

如何重装mac系统,u盘安装苹果macos系统教程

互联网搬砖工作者

手把手教你Mac重装系统不再难:苹果电脑重装系统教程

互联网搬砖工作者

TGO笔记-AIGC分享之投资视角(61/100)

hackstoic

AI ChatGPT 创业投资

域名备案不备案的区别是什么?

源字节1号

运维 软件开发 前端开发 后端开发 小程序开发

互联网工程师1000道Java面试题整理全集,助你一路绿灯

Java你猿哥

Java 面试 SSM框架 八股文 Java八股文

3D视觉特效剪辑合成: Flame 2023 激活版

真大的脸盆

Mac Mac 软件 视频特效合成 视频特效工具

python中进程、线程、协程的实践

阿呆

SpringBoot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案

Java你猿哥

Java MySQL spring Spring Boot ssm

DUIN开源的镜像更新通知工具

mengzyou

container DevOps image

关于如何提升研发效能的一些思考

阿呆

AlertDialog(对话框)详解

芯动大师

android AlertDialog 对话框

马士兵教育2023年全新Java架构师学习路线「首发版」

Java你猿哥

Java 学习 架构 面试 后端

PyTorch 深度学习实战 | 基于YOLO V3的安全帽佩戴检测

TiAmo

数据采集 PyTorch

腾讯架构师手撸这份标星过万的"计算机网络协议笔记"全网爆火

Java你猿哥

架构 网络安全 ssm 架构师 分布式架构

简单的文件同步工具:SyncTime激活版

真大的脸盆

Mac Mac 软件 同步文件工具 同步工具

欢迎来到 Python 入门级教程!

阿呆

Python

浅析三款大规模分布式文件系统架构设计

Java你猿哥

架构 分布式 架构设计 分布式架构 系统架构设计手册

战损版JavaAgent方法耗时统计工具实现

Java你猿哥

Java Spring Boot Java Agent ssm

百度“文心一言”发布两天12家企业签约,申请测试企业破9万

科技热闻

树状数组模板与练习

timerring

算法

SpringBoot 集成 Druid 数据源

Java你猿哥

Java Spring Boot 后端 ssm Druid

霸榜牛客!阿里P8大牛整理的Java面试核心知识点竟如此霸道

Java你猿哥

Java 面试 ssm 面经 java核心知识

《C++编程规范-101条规则 准则与最佳实践》读书笔记

老王同学

c++ 读书笔记

凭借这份阿里2023版Java架构师面试指南,我一周时间斩获了5个Offer!

Java永远的神

程序员 程序人生 后端 架构师 java面试

SpringBoot启动之准备系统环境environmentPrepared

石臻臻的杂货铺

spring springboot

2023金三银四Java高级工程师面试 1000 题+答案(全)

架构师之道

编程 程序员 java面试

三天吃透Spring Cloud面试八股文

程序员大彬

Java 面试 SpringCloud

Photoshop 2023 (版本 24.2)的新增功能和增强功能

互联网搬砖工作者

强大的ai技术图像编辑器:Luminar Neo 激活版

真大的脸盆

图像编辑 编辑图像 图像处理工具

Golden Gate 发布项目白皮书,测试网络即将上线

股市老人

站在工作的角度体验一下文心一言

IT蜗壳-Tango

IT蜗壳 ChatGPT 文心一言 文心一言测试

单集群 QPS 超 10w,存储成本降低 70%!招联金融基于 Apache Doris 数仓升级实践_数据湖仓_SelectDB_InfoQ精选文章