金蝶管易云 X Hologres:新一代全渠道电商ERP最佳实践

news2024/11/25 20:53:18

业务简介

金蝶管易云是金蝶集团旗下专注提供电商企业管理软件服务的子公司,成立于2008年,是国内最早的电商ERP服务商之一,目前已与300+主流电商平台建有合作关系,以企业数据为驱动,深度融合线上线下数据,为超过11万家客户提供实现业务、财务、税务一体化的全渠道管理解决方案和业务财务一体化解决方案,覆盖电商全流程的SaaS ERP一站式电商管理解决方案以及智能立体化仓储管理系统和使用不同业务场景的电商网站系统等,助力企业数据探查效率提升180%+。

1.png

在拥有巨大用户量的同时,管易云ERP系统也面临海量的数据分析和极速探索需求,从而帮助企业实现更加高速的业务增长。而由于之前的技术方案限制,导致我们对外提供的技术解决方案无法有效响应业务需求,业务稳定性也备受调整,于是造成企业无法充分利用数据的价值提供更好的业务支持,反而IaaS成本支出成为了的主要开销。迫于这些痛点,我们在原先的基础上,将底层的数据库升级成了实时数仓技术DataWorks+Hologres+Flink,助力企业数据查询秒级响应,业务需求变得更加敏捷,月IaaS费用节省了50%。

通过本篇文章,我们将会介绍管易云ERP系统基于实时数仓的最佳实践,以帮助更多企业提升数据探查效率,促进业务的高效增长。

业务痛点:效率低、成本高

以下是管易云ERP系统的业务架构,主要的业务流程包括:电商平台对接(数据下载、存储),基础数据量庞大;订单处理流程(数据的审核、打印、配货、发货),数据的调用频率极高;报表分析汇总(商品、库存、订单、利润等数据的分析汇总),数据的分析、计算能力都会面临极大的挑战;集成网关(奇门、API等接口数据处理),数据能够进行精准的接口转化处理;三方系统数据互通(金蝶、用友等财务系统、快递系统等),三方数据互通极其容易造成数据漏抓取等问题。对于电商行业的客户来说,数据的准确性和处理的高效性都是非常重要的,尤其是现在整个电商行业已经进入业财税时代,任何一笔订单的数据错误、遗漏都会导致整个业财相关的部门花费大量的人力去复查。

2.png

由上图可看出,管易云对外提供的服务都需要对数据做高效率分析,非常依赖数据的存储和分析,原先底层架构使用的是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提供线上服务,减少开发操作。

3.png

为了将现有的报表数据整合到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平台,让数据赋能业务价值,驱动企业的业务增长和创新。

4.png

  • Hologres 5000CU时,20GB存储免费试用, 前往试用>>

  • 了解Hologres: https://www.aliyun.com/product/bigdata/hologram

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/819179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pytorch学习——正则化技术——丢弃法(dropout)

一、概念介绍 在多层感知机(MLP)中,丢弃法(Dropout)是一种常用的正则化技术,旨在防止过拟合。(效果一般比前面的权重衰退好) 在丢弃法中,随机选择一部分神经元并将其输出…

HCIP中期实验

1、该拓扑为公司网络,其中包括公司总部、公司分部以及公司骨干网,不包含运营商公网部分。 2、设备名称均使用拓扑上名称改名,并且区分大小写。 3、整张拓扑均使用私网地址进行配置。 4、整张网络中,运行OSPF协议或者BGP协议的设备…

Hadoop 之 Hive 4.0.0-alpha-2 搭建(八)

Hadoop 之 Hive 搭建与使用 一.Hive 简介二.Hive 搭建1.下载2.安装1.解压并配置 HIVE2.修改 hive-site.xml3.修改 hadoop 的 core-site.xml4.启动 三.Hive 测试 一.Hive 简介 Hive 是基于 Hadoop 的数据仓库工具,可以提供类 SQL 查询能力 二.Hive 搭建 1.下载 H…

linux 安装FTP

检查是否已经安装 $] rpm -qa |grep vsftpd vsftpd-3.0.2-29.el7_9.x86_64出现 vsftpd 信息表示已经安装,无需再次安装 yum安装 $] yum -y install vsftpd此命令需要root执行或有sudo权限的账号执行 /etc/vsftpd 目录 ftpusers # 禁用账号列表 user_list # 账号列…

【Ajax】笔记-设置CORS响应头实现跨域

CORS CORS CORS是什么? CORS(Cross-Origin Resource Sharing),跨域资源共享。CORS是官方的跨域解决方案,它的特点是不需要在客户端做任何特殊的操作,完全在服务器中进行处理,支持get和post请求。跨域资源共享标准新增了一组HTTP首…

VSCode格式化shell脚本

安装格式化插件:shell-format 用VSCode打开shell脚本之后,按格式化快捷键CtrlAltF,会提示没有格式化shell的工具,然后安装插件,我装的是这个插件:shell-format。 介绍:https://marketplace.vis…

2.C语言数据类型

常量与变量 1.**常量:**程序运行中,值不改变的量 变量:int num5;值可以变的量 2 C语言三种简单数据类型:整型,实型,字符型 %c %d %ld %s %f整型-进制的转换 **1.十进制:**默认的进…

SpringBoot使用JKS或PKCS12证书实现https

SpringBoot使用JKS或PKCS12证书实现https 生成JKS类型的证书 可以利用jdk自带的keytool工具来生成证书文件, 默认生成的是JKS证书 cmd命令如下: 执行如下命令,并按提示填写证书内容,最后会生成server.keystore文件 keytool -genkey tomcat…

ChatGPT在商业世界中的创新应用:颠覆传统营销与客户关系管理

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

14、容器初始化器和配置环境后处理器

容器初始化器和配置环境后处理器 容器初始化器 与传统Spring的容器后处理器(也可对容器做一些定制)对比,此处的容器初始化器的执行时机要更早一些。 容器初始化器负责可对Spring容器执行初始化定制。 就是在启动项目的时候,在容…

eclipse版本与jdk版本对应关系

官网:Eclipse/Installation - Eclipsepedia eclipse历史版本(2007-):Older Versions Of Eclipse - Eclipsepedia Eclipse Packaging Project (EPP) Releases | Eclipse Packages

springboot疾病查询网站【纯干货分享,免费领源码01548】

spring boot疾病查询网站 摘 要 随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的疾病查询网站,会使疾病查询工作系统化、规范化,也会提高医院形象&#xff0c…

红外雨量计(光学雨量传感器)检测降雨量,预防内涝

红外雨量计(光学雨量传感器)检测降雨量,预防内涝 随着城市化进程的加快,城市内涝成为一个愈发严峻的问题。短时间内大量的降雨,不仅会给城市交通带来困难,也会对城市的基础设施和居民的生活造成很大的影响…

ESP32cam系列教程003:ESP32cam实现远程 HTTP_OTA 自动升级

文章目录 1.什么是 OTA2. ESP32cam HTTP_OTA 本地准备2.1 HTTP OTA 升级原理2.2 开发板本地基准程序(程序版本:1_0_0)2.3 开发板升级程序(程序版本:1_0_1)2.4 本地 HTTP_OTA 升级测试2.4.1 本地运行一个 HT…

Spring系列二:基于注解配置bean

文章目录 💗通过注解配置bean🍝基本介绍🍝快速入门🍝注意事项和细节 💗自己实现Spring注解配置Bean机制🍝需求说明🍝思路分析🍝注意事项和细节 💗自动装配 Autowired&…

谷粒商城第八天-商品服务之品牌管理的整体实现(直接使用逆向生成的代码;含oss文件上传)

目录 一、总述 二、前端部分 2.1 创建好品牌管理菜单 2.2 复制组件 ​编辑2.3 复制api ​​​编辑 2.4 查看效果 ​编辑2.5 需要优化的地方 2.6 具体优化实现 2.6.1 优化一:将表格的状态列(这里是是否显示列)修改为开关&#xff…

Day15-作业(Maven高级)

作业1:完成苍穹外卖项目目录结构创建 说明: 1.sky-take-out 是父工程 2.sky-common/sky-pojo/sky-server 是子工程 3.sky-server模块引用了sky-common/sky-pojo模块 作业2:完成汇客CRM项目目录结构创建 说明: huike-paren…

判断变量是否为标量(没有维度,单个数值)numpy.isscalar()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 判断变量是否为标量 (没有维度,单个数值) numpy.isscalar() [太阳]选择题 请问关于以下代码表述错误的是? import numpy as np a 0 b np.array([0]) pri…

六、初始化和清理(3)

本章概要 成员初始化构造器初始化 初始化的顺序静态数据的初始化显式的静态初始化非静态实例初始化 成员初始化 Java 尽量保证所有变量在使用前都能得到恰当的初始化。对于方法的局部变量,这种保证会以编译时错误的方式呈现,所以如果写成&#xff1a…

初识Java - 概念与准备

本笔记参考自: 《On Java 中文版》 目录 写在第一行 Java的迭代与发展 Java的迭代 Java的参考文档 对象的概念 抽象 接口 访问权限 复用实现 继承 基类和子类 A是B和A像B 多态 单根层次结构 集合 参数化类型 对象的创建和生命周期 写在第一行 作为一…