业务简介
金蝶管易云是金蝶集团旗下专注提供电商企业管理软件服务的子公司,成立于2008年,是国内最早的电商ERP服务商之一,目前已与300+主流电商平台建有合作关系,以企业数据为驱动,深度融合线上线下数据,为超过11万家客户提供实现业务、财务、税务一体化的全渠道管理解决方案和业务财务一体化解决方案,覆盖电商全流程的SaaS ERP一站式电商管理解决方案以及智能立体化仓储管理系统和使用不同业务场景的电商网站系统等,助力企业数据探查效率提升180%+。
在拥有巨大用户量的同时,管易云ERP系统也面临海量的数据分析和极速探索需求,从而帮助企业实现更加高速的业务增长。而由于之前的技术方案限制,导致我们对外提供的技术解决方案无法有效响应业务需求,业务稳定性也备受调整,于是造成企业无法充分利用数据的价值提供更好的业务支持,反而IaaS成本支出成为了的主要开销。迫于这些痛点,我们在原先的基础上,将底层的数据库升级成了实时数仓技术DataWorks+Hologres+Flink,助力企业数据查询秒级响应,业务需求变得更加敏捷,月IaaS费用节省了50%。
通过本篇文章,我们将会介绍管易云ERP系统基于实时数仓的最佳实践,以帮助更多企业提升数据探查效率,促进业务的高效增长。
业务痛点:效率低、成本高
以下是管易云ERP系统的业务架构,主要的业务流程包括:电商平台对接(数据下载、存储),基础数据量庞大;订单处理流程(数据的审核、打印、配货、发货),数据的调用频率极高;报表分析汇总(商品、库存、订单、利润等数据的分析汇总),数据的分析、计算能力都会面临极大的挑战;集成网关(奇门、API等接口数据处理),数据能够进行精准的接口转化处理;三方系统数据互通(金蝶、用友等财务系统、快递系统等),三方数据互通极其容易造成数据漏抓取等问题。对于电商行业的客户来说,数据的准确性和处理的高效性都是非常重要的,尤其是现在整个电商行业已经进入业财税时代,任何一笔订单的数据错误、遗漏都会导致整个业财相关的部门花费大量的人力去复查。
由上图可看出,管易云对外提供的服务都需要对数据做高效率分析,非常依赖数据的存储和分析,原先底层架构使用的是RDS for MySQL和PolarDB for MySQL,PolarDB 主要是用于存储交易类的数据分析,如订单、会员、商品等分析;RDS 主要用于存储读写相对不是很频繁的数据,如:采购、调拨、调整、盘点等。但由于存量数据的不断增长,这套技术方案面临着很大挑战,主要包括:
- 因为业务在增长,数据量也面临着极速的增长,但是查询效率却越来越慢,无法快速满足业务实时取数的需求,影响业务决策。
- 数据量增加后,只能不断叠加机器资源,导致计算成本不断增加,同时存储成本也增加
- 由于数据量庞大,即使是简单的数据库DDL操作都需要花费相当长的时间周期,这对管易和产研团队来说都成了急需攻破的难关。
- 运维麻烦,业务稳定性也带来了极大的挑战。
因此,为了更好地支持管易云的业务需求,我们必须考虑采用更先进的技术来实现对海量数据的实时写入、更新和实时查询的方案,同时也要平衡好成本。
新架构:升级为实时数仓Flink+Hologres
为了解决这些挑战,管易的技术团队一直在积极评估和探索新的技术方案,包括阿里云XDB、TiDB、Hadoop等。然而,在探索的过程中,也并非一帆风顺。一方面,试错的成本过高,每次调整,都可能会对业务稳定性和客户使用体验造成冲击。另一方面,现存相关案例中也缺乏电商领域特性的示例,如海量数据处理、高并发和实时更新等。在经过一番艰难的探索后,一次偶然的机会,管易看到了一个物流行业的案例分享,案例中使用了实时数仓Flink+Hologres来支撑物流订单的实时查询和实时监控等。尽管物流行业与电商有相当大的区别,但物流作为电商领域中的重要一环,其技术特性与电商领域还是有很多相似之处的,我们也可以做一些借鉴。因此,管易也开始选择了阿里云Hologres作为解决方案。这个决策的主要原因是我们对Hologres进行了深入的调研,以下几个特点比较符合我们的业务需求:
1、分布式系统:原生的分布式系统,自研存储引擎和计算引擎,可以实现数据的高性能写入、更新以及高并发的查询,且查询效率高。
2、易扩展:天然的存储计算分离架构,可以根据业务需求动态增加存储和计算能力,满足电商业务的高低峰流量属性,也减少成本压力。
3、高安全性:数据存储在Pangu分布式系统,天然具备3副本,同时Hologres本身也支持数据脱敏、IP白名单等安全能力,提高了数据的访问性能和可用性。
4、高度的隔离性:有共享存储的资源隔离方案,这样就能满足我们不同业务、不同场景的隔离需求,提升系统的稳定性。
为了确保Hologres技术方案的可行性,管易内部多次拉通多个业务部门参与研讨,以确定具体的应用场景,这样做的目的是为了避免因数据库切换而对用户体验造成影响。经过多次讨论后,最终决定以报表查询场景作为验证方案开始执行。
之所以选择报表查询场景,是因为目前管易的报表存量数据巨大(约有上百TB),查询场景非常复杂,客户查询几十万数据的响应往往要30秒以上,但该报表查询对客户使用来说又是使用非常频繁,如:客户的运营人员需要时时查询某产品一定时间范围内的销量以制定促销计划;客户的财务人员需随时查询各类订单、产品的销量、利润从而制定采购计划等等,而这些查询操作所产生的数据检索都是相当大的,查询速度过慢对于客户来说体验会相当差。
下图是我们确定验证方案后,报表场景基于Hologres+Flink的数据流转图:
- 数据源存储在RDS中,包括订单、库存、商品等数据
- 我们通过DataWorks数据集成的整库同步将RDS的数据同步到Hologres,包括全量数据离线同步、增量数据实时同步以及分库分表合并成一张Hologres表等
- 然后在Hologres中进行数仓分层,ODS-DWD-DWS,大多数是通过DataWorks的分钟级调度来做,然后在Hologres提供近实时查询。但有些场景对数据的实时性要求非常高,比如实时物流跟踪,因此我们会用Flink读取Hologres Binlog进行数据处理,然后再写入Hologres的方案,使得数据能够实时写入实时查询,满足部分业务的实时查询。
- 由Hologres提供统一的对外查询应用,包括实时物流跟踪、数据参谋、实时大屏、运营分析等,这样我们也不用把数据再写一份到MySQL提供线上服务,减少开发操作。
为了将现有的报表数据整合到Hologres中,管易安排了4名开发人员(包括DBA和开发),共计投入了3个月的时间完成了从RDS到Hologres的报表数据迁移工作。在项目初期,研发人员对Hologres的表结构和索引设置存在一些盲区,但通过Hologres团队多次提供的技术支持和问题诊断,都得以迅速解决,使项目进展顺利。在迁移过程中,也有一些业务部门反馈存在个别数据漏迁的问题,但这些问题都得到了及时补救,对绝大多数客户而言,迁移过程是完全无感知的,这进一步增强了我们对Hologres的信心。
在完成了数据和任务迁移之后,我们就开始了逐步使用Hologres提供业务查询,直到后面完全上生产。上完生产之后,我们发现带来的好处有几个方面:
- 延迟降低到秒级:之前通过MySQL的查询至少是30s+,现在新系统的查询基本都在10s内,报表查询的整体响应速度都有了质的飞跃,同时,在物流管家模块中,借助Hologres强大的实时分析聚合能力,我们成功解决了之前客户普遍反映的数据统计延迟问题。这些改进使得管易在客户中获得了更多的认可和信任。
- IaaS成本降低50%:因为之前我们需要不断的堆加资源来提升业务的查询性能,导致我们的成本剧增。改成新的技术方案之后,成本也随之降低了50%。
- 业务更加敏捷:现在新架构的主要产品就是DataWorks+Flink+Hologres,由Hologres提供统一的查询应用,我们架构变得更加精简了,对于业务的一些临时需求也能做到更快的响应,同时开发和运维也变得更加敏捷,减少了很多不必要的操作,报表查询的稳定性也提升了不少。
未来规划
鉴于Flink+Hologres+DataWorks这套新的架构在管易报表场景的有效验证,我们后续也将会持续基于这套架构做更多的业务场景探索,搭建更大规模的数据中心平台,通过整合和管理海量数据,提供更高效、可靠的数据服务,实现销售渠道、业务中台以及财务系统的全面关联,打造一个更加智能的ERP平台,让数据赋能业务价值,驱动企业的业务增长和创新。
点击立即免费试用云产品 开启云上实践之旅!
本文为阿里云原创内容,未经允许不得转载。