用友畅捷通基于阿里云 EMR StarRocks 搭建实时湖仓实战分享

简介: 本文从用友畅捷通公司介绍及业务背景;数据仓库技术选型、实际案例及未来规划等方面,分享了用友畅捷通基于阿里云 EMR StarRocks 搭建实时湖仓的实战经验。

1. 公司简介


用友畅捷通是中国领先的小微企业财税及业务云服务提供商,公司成立于2010年,是用友旗下成员企业,致力于用技术和创想推动小微企业经营管理进步。

  • 2012年之前软件包时代,推出T1/T3/T6/T+;
  • 2013技术转型,部署和投入研发转 SaaS;
  • 2014-16数智财税板块突破,推出好会计、易代账,16-18推出好生意、T+Cloud;
  • 2019-至今完善云原生平台、好业财。


2. 业务背景


畅捷通实时数仓需求那么迫切的原因,主要有以下四点:


首先是历史包袱,我们会有一些多维分析、标签计算的结果每晚回写业务库,回写效率不稳定就会对早高峰的业务有冲击,有些慢查询会降低业务库的性能,还有数据孤岛现象是比较严重的;


其次业务诉求,传统的T+1场景已经不再满足业务需求,业务要求的数据越来越实时,另外产品侧也缺乏大数据分析的能力;


然后就是技术不统一,公司内部不同应用都在使用不同的数据仓库,对于开发人员的学习成本、使用成本都比较高,出现问题时,定位为题时间比较长;


最后一点就是标准化建设,整个公司内部的标准化建设不足,烟囱式开发现象比较普遍,共有逻辑没有下沉。



在介绍数仓选型之前,我们先来看下畅捷通的整个数仓的一个发展路线,首先是离线阶段,通过离线计算平台汇总昨日数据,数仓分层,进行计算,结果回写,数据请求分流;然后是第二个阶段,也就是初始阶段,各个业务线开始选择适合自己的数据仓库,比如 ClickHouse,ADB,Hologres;接下来就是发展阶段,也就是目前整个公司的业务线逐步向 StarRocks 靠齐,利用 StarRocks 来做统一的数仓解决方案。



3. 技术选型

我们当时在做数据仓库选型的时候主要的思路是从业务背景,可持续以及实践三个方面来考虑数据仓库选型:


首先是业务背景,我们需要根据我们的业务场景进行一个整体考虑,也就是选择的数据仓库一定要覆盖住我们大多数的业务场景,并且查询性能要足够优秀,且最好能兼容 MySQL 的查询语法,这样的话开发人员学习成本可以降低。


其次可持续,开源社区要足够活跃,软件质量有保障,市场占有率较高,社区支持较好。


最后是实践,我们会用真实的业务场景进行验证,然后还需要考虑与我们当前链路的一个契合度,毕竟我们没法从0开始重建。


这是我们当时试用后觉得比较优秀的三个实时数仓的一个对比,大家可以自行查看。


总之,在开源协议、功能完善度、产品成熟度、客户案例与服务支持体系等方面综合考虑后,我们选择了 EMR StarRocks。


这是我们在做完 EMR StarRocks 技术选型后的整个数据仓库的技术架构图,由于一些历史原因,我们目前的整个数据仓库的同步链路还有很大的局限以及调整空间,我们也在不管的进行迭代调整,从左侧的数据采集模块到右侧的数据应用模块我们分为离线t+1数据链路与实时数据链路:


离线的 t+1 数据链路通过 datax 数据迁移工具,或者离线计算平台直接到 MySQL 或者 StarRocks。


实时计算链路主要通过 Flink DataStream、Flink CDC 、Flink CDAS 实时同步到 ES、StarRocks、MySQL 中。



4. 案例分享

接下来给大家分享一下我们业务目前的几个案例。

4.1 案例一

首先是实时大屏,这块的整个背景就是,随着各行各业对数据越来越重视,实时计算技术也在不断的演进,从时效性上来讲,对于T+1或者小时级的计算已经不能满足客户的需要,需求逐渐从时窗驱动升级到事件驱动,甚至每产生一条数据,都想尽快看到数据。

另一个背景就是业务领域存在大量的慢 SQL,报表查询执行效率低下,分库分表、索引调整等手段已经无法提升查询效率。


因此我们迫切的需要一款适合的、查询性能优秀的 OLAP 查询引擎来提升我们的查询效率。


这是实时大屏的架构图,业务数据通过 Flink CDAS / CDC 同步到 StarRocks 贴源层,然后贴源层数据通过物化视图逐层进行加工(StarRocks强大的物化视图能力让我们更能专注于模型的建设而不是数据链路的搭建),最后由 ADS 层数据对外提供数据支持,比如 BI 看板,各种项目报表。

 

4.2 案例二

第二个案例则是 BC 一体化报表展示,畅捷通好生意需要帮助某大品牌商构建数据运营中台,从商品主数据统一下发,到多维度分析一级经销商、二级经销商的商品售卖情况、现有库存情况,能更好的赋能经销商,从原来的深度分销到动销模型;实现数据价值的深度应用,从而帮助品牌商做更好的决策经营。



更为重要的一点是,真正做到了畅捷通体系内产品的互通(CC和TC),实现了社会化链接。数据运营中台产品未来可以与更多的品牌商对接,以标准产品去交付。另外一点是积累经验可以进行后期批量的交付,然后在整个过程中完善产品的扩展能力和开放性,从而提升产品竞争力。


整个产品架构图如上图所示,数据运营中台可以理解为总部,然后进行数据下发到一级、二级经销商,经销商的数据通过离线 T+1上传给总部。

这是一个整体的技术架构图,一二级经销商通过数据服务上传给 OSS,然后通知数据运营中台去 OSS 上拉取数据,然后上传给 StarRocks,采用 OSS 服务器作为中间存储,实现 T+1 的数据清理服务与 CC 的数据上传服务相互隔离,相互解耦,数据上传失败后,恢复更为便捷。


4.3 案例三

最后一个案例是用户画像的案例

我们最开始的第一版是基于 ClickHouse 与离线计算平台搭建的,我们有个标签元数据服务会将计算的标签插入调度队列,然后由调度服务进行调度,离线计算平台开始计算,计算结果后同步到 ClickHouse,然后调整任务状态插入 bitmap 计算的任务列表,再由调度服务进行调度进行 bitmap 创建。


有很多朋友可能会问为什么不能直接使用 bitmap 相关函数进行计算,主要还是因为我们是一个 tob 标签系统,小微企业用户可以根据需要自己定义自己的标签。

然后我们给予 StarRocks 实时数仓进了第二版的改造升级,第二版是基于 StarRocks 的数据处理和计算一体化的高性能标签体系,业务数据通过离线计算平台与 Flink 同步到 StarRocks,数据准备完成后,发送消息队列利用 StarRocks 的查询能力与丰富的 bitmap 函数进行计算,计算完后会写到元数据服务。


用 StarRocks 替代之前的 ClickHouse+ 离线计算平台的方案,提升了标签时效性,简化了标签的计算流程、提升了标签计算速度、突破了标签的数量限制、控制了标签计算成本、进一步的保证了标签系统的稳定性。


5. 最佳实践分享

案例分享结束,接下来再从数据采集、数据分析方面来做一个类似最佳实践的分享。

5.1 在数据采集,离线数据迁移方面

  • Streamload 代替传统 insert into 导入数据,http 协议导入,速度更快,轻量级,从而避免 insert into 带来的多版本导致的查询性能问题。
  • 控制上传数据提交到数仓的频率,避免因为提交频繁出现 get writedb lock 的情况出现。
  • 数据上传失败(比如网络抖动、获取锁超时),可以进行多次上传重试,如果最终失败,进行报警,看到后可以立马恢复。

 


5.2 在数据采集,实时数据同步方面

我们经历了从 Canal-消息通道,Flink CDC 再到 Flink CDAS 整个同步链路的一个变化。


5.2.1  Canal-消息通道

  • 链路长,数据延迟较高,稳定性较差。
  • 问题排查困难,跨越了 canal、消息通道、应用侧多个团队,有时候排查问题要拉很多人,效率比较低。
  • 无法全增量自动切换,也就是无法流批一体。


5.2.2 Flink CDC

  • Mysql 的 DDL 手动映射成 Flink 的 DDL,繁琐且易出错。
  • 表结构的变更导致入仓链路难以维护。
  • 多表入仓,MySQL 压力,IO 网络压力,Flink 资源消耗都很巨大。


5.2.3  Flink CDAS 进行实时数据同步

  • 流批一体。
  • 开发维护非常简单,几行代码就可以完成同步链路的搭建。
  • StarRocsk catalog,自动建表。
  • Schema Evolution内核,自动同步变化字段。
  • Source合并优化,减轻对源端数据库的压力。



5.2.4 数据分析

既然我们把一些报表查询直接暴漏给了用户查询,肯定需要担心一个 QPS 的问题,我们是通过下面两点来进行 QPS 的控制

  • 物化视图改写提升查询效率与并发(物化视图的改写后,无需现查现算,查询效率得到更进一步提升,更快的返回结果,更高的 QPS)
  • 按租户开放数仓查询(只为部分租户开放数据仓库的查询,没有查询性能瓶颈的租户,还是查询业务库)


5.2.5 查询效率优化方式

  1. 需要提前聚合计算的表创建聚合模型;
  2. 需要做冷热存储的表,一定要提前建立分区,非分区表不允许建分区;
  3. 主键模型来替代更新模型,更新模型,merge on read,无法进行谓词下推,查询效率不如主键模型高;
  4. 对于经常查询的字段,可以建立排序键;
  5. 对于基数比较小,且又经常查询的字段可以创建bitmap索引,利用bitmap索引来加快查询速度;
  6. 对于in 和 = 过滤条件的查询,也可以使用布隆过滤器索引来提高索引查询速度;



6. 未来发展

最后是未来发展,未来发展这块,主要有四个方向:


首先,我们要做的就是主应用拆库,目前数仓是按照中心进行拆分的数据库,后续按主应用拆分库,不同的主应用对应不同的数据库,从而分散库锁获取压力。


其次,lambda 架构调整,大家可以从我上面的数据仓库目前链路的整体架构图中可以看到我们部分业务还无法做到流批一体,需要维护历史离线、实时处理两套代码,后续需要调整lambda数据链路,避免多套代码的维护。


然后流程化管理,StarRocks 脚本上线调整,还有实时 Flink 链路调整,后续均纳入上线流程工具,解放人力,降低链路故障概率。


最后湖仓一体方案的探索,说实话,目前 EMR StarRocks 实时数仓在公司内部还是比较火热的,许多业务场景都想接入 StarRocks,新业务场景可能已经不再局限于仅使用结构化数据,半结构、非结构化数据应用场景越来越多,湖仓一体方案也需要规划考虑。



最后感谢 EMR StarRocks 团队同学的支持,希望未来继续紧密合作,合作共赢。

 



欢迎钉钉扫码加入EMR Serverless StarRocks交流群(搜索钉钉群号加群:24010016636)

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
4月前
|
存储 人工智能 OLAP
AI Agent越用越笨?阿里云AnalyticDB「AI上下文工程」一招破解!
AI上下文工程是优化大模型交互的系统化框架,通过管理指令、记忆、知识库等上下文要素,解决信息缺失、长度溢出与上下文失效等问题。依托AnalyticDB等技术,实现上下文的采集、存储、组装与调度,提升AI Agent的准确性与协同效率,助力企业构建高效、稳定的智能应用。
|
DataWorks 数据挖掘 Serverless
阿里云EMR Serverless StarRocks 内容合集
阿里云 EMR StarRocks 提供存算分离架构,支持实时湖仓分析,适用于多种 OLAP 场景。结合 Paimon 与 Flink,助力企业高效处理海量数据,广泛应用于游戏、教育、生活服务等领域,显著提升数据分析效率与业务响应速度。
404 0
|
6月前
|
存储 人工智能 分布式计算
数据不用搬,AI直接炼!阿里云AnalyticDB AI数据湖仓一站式融合AI+BI
阿里云瑶池旗下的云原生数据仓库AnalyticDB MySQL版(以下简称ADB)诞生于高性能实时数仓时代,实现了PB级结构化数据的高效处理和分析。在前几年,为拥抱大数据的浪潮,ADB从传统数仓拓展到数据湖仓,支持Paimon/Iceberg/Delta Lake/Hudi湖格式,为开放的数据湖提供数据库级别的性能、可靠性和管理能力,从而更好地服务以SQL为核心的大规模数据处理和BI分析,奠定了坚实的湖仓一体基础。
|
5月前
|
存储 人工智能 关系型数据库
阿里云AnalyticDB for PostgreSQL 入选VLDB 2025:统一架构破局HTAP,Beam+Laser引擎赋能Data+AI融合新范式
在数据驱动与人工智能深度融合的时代,企业对数据仓库的需求早已超越“查得快”这一基础能力。面对传统数仓挑战,阿里云瑶池数据库AnalyticDB for PostgreSQL(简称ADB-PG)创新性地构建了统一架构下的Shared-Nothing与Shared-Storage双模融合体系,并自主研发Beam混合存储引擎与Laser向量化执行引擎,全面解决HTAP场景下性能、弹性、成本与实时性的矛盾。 近日,相关研究成果发表于在英国伦敦召开的数据库领域顶级会议 VLDB 2025,标志着中国自研云数仓技术再次登上国际舞台。
538 0
|
7月前
|
存储 人工智能 关系型数据库
从“听指令”到“当参谋”,阿里云AnalyticDB GraphRAG如何让AI开窍
阿里云瑶池旗下的云原生数据仓库 AnalyticDB PostgreSQL 版 GraphRAG 技术,创新融合知识图谱动态推理+向量语义检索,通过实体关系映射与多跳路径优化,构建可应对复杂场景的决策引擎。本文将通过家电故障诊断和医疗预问诊两大高价值场景,解析其如何实现从“被动应答”到“主动决策”的跨越。
|
8月前
|
人工智能 分布式计算 DataWorks
一体系数据平台的进化:基于阿里云 EMR Serverless Spark 的持续演进
本文介绍了一体系汽配供应链平台如何借助阿里云EMR Serverless Spark实现从传统Hadoop平台向云原生架构的迁移。通过融合高质量零部件供应与创新互联网科技,一体系利用EMR Serverless Spark和DataWorks构建高效数据分析体系,解决大规模数据处理瓶颈。方案涵盖实时数据集成、Lakehouse搭建、数仓分层设计及BI/ML应用支持,显著提升数据处理性能与业务响应速度,降低运维成本,为数字化转型奠定基础。最终实现研发效率提升、运维压力减轻,并推动AI技术深度整合,迈向智能化云原生数据平台。
267 4
|
10月前
|
存储 分布式计算 OLAP
百观科技基于阿里云 EMR 的数据湖实践分享
百观科技为应对海量复杂数据处理的算力与成本挑战,基于阿里云 EMR 构建数据湖。EMR 依托高可用的 OSS 存储、开箱即用的 Hadoop/Spark/Iceberg 等开源技术生态及弹性调度,实现数据接入、清洗、聚合与分析全流程。通过 DLF 与 Iceberg 的优化、阶梯式弹性调度(资源利用率提升至70%)及倚天 ARM 机型搭配 EMR Trino 方案,兼顾性能与成本,支撑数据分析需求,降低算力成本。
654 59
|
12月前
|
存储 分布式计算 物联网
美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台
美的楼宇科技基于阿里云 EMR Serverless Spark 建设 IoT 数据平台,实现了数据与 AI 技术的有效融合,解决了美的楼宇科技设备数据量庞大且持续增长、数据半结构化、数据价值缺乏深度挖掘的痛点问题。并结合 EMR Serverless StarRocks 搭建了 Lakehouse 平台,最终实现不同场景下整体性能提升50%以上,同时综合成本下降30%。
900 58