用友畅捷通基于阿里云 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)

相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
5天前
|
SQL 分布式计算 监控
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
本文演示了使用 EMR Serverless Spark 产品搭建一个日志分析应用的全流程,包括数据开发和生产调度以及交互式查询等场景。
127 1
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
|
5天前
|
存储 安全 数据挖掘
性能30%↑|阿里云AnalyticDB*AMD EPYC,数据分析步入Next Level
第4代 AMD EPYC加持,云原生数仓AnalyticDB分析轻松提速。
性能30%↑|阿里云AnalyticDB*AMD EPYC,数据分析步入Next Level
|
5天前
|
存储 安全 数据挖掘
性能30%↑|阿里云AnalyticDB X AMD EPYC,数据分析步入Next Level
阿里云原生数仓 AnalyticDB for PostgreSQL 与 AMD 新一代硬件深度优化,结合全自研计算引擎及行列混合存储实现性能升级,综合性能提升30%。结合丰富的企业级能力帮助企业构建离在线一体、流批一体综合数据分析平台,采用同一引擎即可满足离线批处理、流式加工,交互式分析三种场景,在开发运维、时效性及成本上具备更高的性价比。
402 0
|
6天前
|
存储 SQL 数据可视化
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
EMR StarRocks 线上公开课第1期 ,直播主题:EMR Serverless StarRocks3.x,极速统一的湖仓新范式。
159 1
|
8天前
|
弹性计算 监控 数据库
【阿里云弹性计算】企业级应用上云实战:基于阿里云 ECS 的 ERP 系统迁移案例
【5月更文挑战第25天】制造企业将面临资源不足、维护成本高和数据安全问题的ERP系统迁移到阿里云ECS,实现业务上云。通过数据迁移、应用部署、网络配置和性能优化等步骤,企业享受到弹性计算资源、高可靠性和数据安全优势,降低维护成本。阿里云提供24小时支持,助力企业数字化转型。此案例展示企业级应用上云的可行性,鼓励更多企业借助云计算实现创新发展。
22 0
|
9天前
|
弹性计算 缓存 负载均衡
【阿里云弹性计算】游戏服务器部署实战:利用阿里云ECS打造低延迟游戏环境
【5月更文挑战第24天】使用阿里云ECS打造低延迟游戏环境的实战指南,包括选择高性能处理器和SSD存储的实例,规划架构,选择近玩家的地域和可用区,部署软件,优化性能及监控。通过负载均衡、自动扩展和数据缓存提升体验,同时关注数据安全与网络安全。
54 4
|
9天前
|
运维 Cloud Native 持续交付
【阿里云云原生专栏】从零到一搭建云原生应用:阿里云云原生应用平台实战教程
【5月更文挑战第24天】本文档是一份阿里云云原生应用平台的实战教程,介绍了如何从零开始搭建云原生应用。内容涵盖云原生应用的特点(容器化、微服务、CI/CD和自动化运维)以及阿里云提供的服务,如容器服务、服务网格和CI/CD工具。教程详细讲解了创建容器集群、编写Dockerfile、构建镜像、部署应用、配置服务网格和设置CI/CD的步骤。通过本文,读者将学会利用阿里云平台开发和管理云原生应用。
271 0
|
10天前
|
SQL 关系型数据库 数据库
阿里云数据库 RDS SQL Server版实战【性能优化实践、优点探析】
本文探讨了Amazon RDS SQL Server版在云数据库中的优势,包括高可用性、可扩展性、管理便捷、安全性和成本效益。通过多可用区部署和自动备份,RDS确保数据安全和持久性,并支持自动扩展以适应流量波动。可视化管理界面简化了监控和操作,而数据加密和访问控制等功能保障了安全性。此外,弹性计费模式降低了运维成本。实战应用显示,RDS SQL Server版能有效助力企业在促销高峰期稳定系统并保障数据安全。阿里云的RDS SQL Server版还提供了弹性伸缩、自动备份恢复、安全性和高可用性功能,进一步优化性能和成本控制,并与AWS生态系统无缝集成,支持多种开发语言和框架。
53 2
|
11天前
|
存储 分布式计算 Serverless
阿里云 EMR Serverless Spark 版开启免费公测
EMR Serverless Spark 版免费公测已开启,预计于2024年06月25日结束。公测阶段面向所有用户开放,您可以免费试用。
100 4
|
11天前
|
弹性计算 监控 负载均衡
【阿里云弹性计算】ECS实例迁移实战:无缝迁移到阿里云的步骤与技巧
【5月更文挑战第22天】阿里云ECS实例迁移实战详解,涵盖无缝迁移步骤与技巧:选择合适迁移方案,如VPC或使用阿里云工具;创建目标环境,数据迁移及配置同步;测试验证功能正常,流量切换;选择低峰期,保证数据一致,实时监控,提升迁移成功率。本文为云平台迁移提供实用指南。
52 2