大厂的供应链域数据中台设计

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都技术专家兼架构,多家大厂后端一线研发经验,各大技术社区头部专家博主,编程严选网创始人。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。负责:

  • 中央/分销预订系统性能优化

  • 活动&优惠券等营销中台建设

  • 交易平台及数据中台等架构和开发设计

    目前主攻降低软件复杂性设计、构建高可用系统方向。

参考:

  • 编程严选网

1 前言

受限于对业务掌握度及对应数据特性的了解,大数据平台更倾向海量的同构或异构数据采集,清洗,加工,存储。而提供的数据服务更多是对采集到数据进行汇总及分析。

供应链域数据中台专注供应链域业务数据,优势是具备熟练掌握相关业务的产品和开发,更了解业务和数据特性:

  • 为产品线提供准确及时的数据服务
  • 也为数分提供完善的数据脉络,帮助其更好对这些数据深层挖掘分析,再次提升数据价值

系统设计上也将考虑系统能做到能进能退:

  • 进则作为独立数据域的数据中台产品,逐渐完善自身特性
  • 退则作为一个数据域模块快速融入公司大数据中台

2 理论篇

有了存在意义和价值空间,接下来考虑如何构建。采用DDD构建数据中台的各类模型。结合当下情况分析,自顶向下的策略更适合。首先目标建立供应链域数据中台,顶层领域已限定供应链。其次该策略不受限于当前系统,适合用 DDD 领域逐级分解的建模方法。

2.1 领域模型界定

现阶段业务需求是给相关业务系统提供准确及时的供应链域数据服务,同时也是数据中台核心服务,所以作为主体的数据服务是毫无争议的核心域。

数据中台第二个重要功能是提供元数据字典服务,即提供有关联关系的元数据的脉络服务。

其展示该域下各数据实体的关联关系及链路节点出处,以及相关数据服务详情介绍等,可称之为数据治理,作用上区分可将数据治理归为通用域。数据治理和数据服务的共同基石则是数据,这里指出的就是数据中台另一个功能同时也是本质功能,打通数据孤岛对数据的采集加工和存储,这些就组成另外一个子域,归为支撑域。

数据中台域模型图:

系统架构设计模、领域模型界定完毕后,下面就是以领域模型为指导进行系统架构模型的设计。系统架构模型设计依然用 DDD。

搭建有自身特色的数据中台,决定我们没有可参考案例,为防过度设计,提前设定一个设计方针,即系统架构须是一个演进式,经得起破坏和重构,才能满足低成本,快建设,快试错。大而全系统架构设计虽也是我们向往,但现状不许。

2.2 数据中台系统设计模型

① 接口层

数据中台对外服务的统一入口:

  • 对接各种类型的访问请求,如restful 接口,api接口,RPC框架服务接口等
  • 提供服务适配,对各种类型接口提供请求参数和返回结果集的适配相关的服务
② 应用层

实现服务组合和编排,以快速满足业务需求。不可否认用户需求一直在变化。能做的就是如何快速响应这些变化,服务组合和重新编排,提升服务可重用性,降低重复功能的开发成本,提升开发效率,为业务的快速试错提供了很好支撑。

③ 领域层

该层实现核心业务逻辑,同时聚集了领域模型的聚合、聚合根、实体、值对象、领域服务和事件等领域对象,以及它们组合所形成的业务能力。通俗易懂的,是实现了业务处理逻辑的服务原子化,按业务逻辑将服务细分,细分后的原子服务将脱离具体的业务模式,为应用层的服务组合和编排提供“原材料”。

④ 基础层

贯穿所有层,为各层提供基础资源服务。包含MySQL,PG,ES,HBase和Redis等数据存储和缓存服务。

还有一部分重要组成就是公共服务,好产品离不开监控运维和相关日志服务,这些是保障系统健康的重要措施。

3 实践篇

3.1 供应链域数据中台系统架构设计

数据中台系统架构设计模型:

  • 数据治理将供应链全链路涉及到或者相关的所有子域的数据进行目录化管理
  • 数据服务则基于所有子域数据提供标准或者定制化的服务
  • 数据存储则主要依赖大数据平台和搜索,是基于数据中台的数据的量级和服务的便利性以及可用性考虑
  • 数据采集基本是 kafka 和 数据同步组件,基于数据的吞吐量和可靠性考虑

3.2 系统实现模型设计

数据中台数据流转模型(数据中台服务保障方案):

如图所示,按既定接口层/应用层/领域层/基础层设计,逐层封装,各层相互协作,对业务系统提供灵活的数据服务,很好地实现了各层分工,便于快速响应业务需求。

考虑到数据中台主要为业务系统提供数据服务,为保障数据服务的可靠性和及时性,还得兼顾系统性能和稳定,对数据服务做了冗余和归档服务。冗余的服务同时具备降级职责,提升服务 SAL 指标。

4 总结

基于 DDD 领域建模的供应链域数据中台设计基本完毕,紧接着就是后续流畅的开发工作。复盘过程,虽不甚完美,“先开枪后瞄准”至少在探索数据中台领域迈出第一步,那么成功就不会太远。

本文由博客一文多发平台 OpenWrite 发布!

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

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

相关文章

庆除夕,比特币两日大涨10%

号外:教链内参2024年1月合订本 今日除夕。昨日今日两天,比特币从43k发力上攻,一度涨超10%至47.7k,以独特的方式给全世界的bitcoiners送去了新春的祝福。 一个新鲜的知识:2023年12月22日,第78届联合国大会协…

JVM 执行引擎

概念 执行class文件中的指令,由解释器编译器组成 补充——Java为什么是半编译半解释型语言 因为Java即有编译器也有解释器,可以用其中一种来运行。 程序执行步骤 解释器与编译器区别 编译器 概念 JIT(Just In Time Compiler)…

vue中使用moment 设置倒计时的方法

vue中使用moment 设置倒计时的方法 日常开发中时常需要使用倒计时的方法 现在进行封装一下 //第一步 引入moment import moment from moment;let nowTime:any ref()//当前时间 let diffTime:any ref()//当前时间和指定时间的差值 let countdown:any ref(0)//倒计时 // 设置…

深入探索Java IO:从基础到高级操作全览

深入探索Java IO:从基础到高级操作全览 Java IO一、概览二、磁盘操作三、字节操作实现文件复制装饰者模式 四、字符操作编码与解码String 的编码方式Reader 与 Writer实现逐行输出文本文件的内容 五、对象操作序列化Serializabletransient 六、网络操作InetAddressU…

机器学习系列——(十三)多项式回归

引言 在机器学习领域,线性回归是一种常见且简单的模型。然而,在某些情况下,变量之间的关系并不是线性的,这时候我们就需要使用多项式回归来建模非线性关系。多项式回归通过引入高次项来扩展线性回归模型,从而更好地拟…

【前端】Vue实现网站导航 以卡片形式显示(附Demo)

目录 前言1. html版本2. Vue2.1 Demo12.2 Demo2 前言 单独做一个跳转页面推荐阅读:【前端】实现Vue组件页面跳转的多种方式 但是如果网站多了,推荐卡片式导航,具体可看下文:(以图片显示显示各个网站,图片…

MySQL-视图(VIEW)

文章目录 1. 什么是视图?2. 视图 VS 数据表3. 视图的优点4. 视图相关语法4.1 创建视图4.2 查看视图4.3 修改视图4.4 删除视图4.5 检查选项 5. 案例6. 注意事项 1. 什么是视图? MySQL 视图( View)是一种虚拟存在的表,同…

七、滚动条操作——调整图像对比度

对比度调整:是在原来图像基础上进行相应的公式调整,是类似乘法操作,本身像数值越大,对比度增加之后其与低像素点值差距越大,导致对比增强 项目最终效果:通过滚动条trackbar来实现调整图片亮度的功能 我这里…

关于Import

一、Import解释 Import只能用在类上 Import通过快速导入的方式实现把实例加入spring的IOC容器中 Import注解可以用于导入第三方包 二、Import有三种使用方法 Import的三种用法: 1、直接填class数组方式 直接填对应的class数组,class数组可以有0到多个…

【Java】苍穹外卖 Day02

苍穹外卖-day02 课程内容 新增员工员工分页查询启用禁用员工账号编辑员工导入分类模块功能代码 **功能实现:**员工管理、菜品分类管理。 员工管理效果: 菜品分类管理效果: 1. 新增员工 1.1 需求分析和设计 1.1.1 产品原型 一般在做需…

6.JavaScript中赋值运算符,自增运算符,比较运算符,逻辑运算符

赋值运算符 就是简单的加减乘除&#xff0c;没啥可说的这里直接上代码比较好 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><…

RabbitMQ:分布式系统中的高效消息队列

目录 摘要 RabbitMQ简介 1.1 背景与起源 1.2 核心概念 RabbitMQ的基本工作原理 2.1 生产者和消费者 2.2 队列 2.3 交换机和绑定 RabbitMQ的使用 3.1 安装与配置 3.2 生产者示例 3.3 消费者示例 3.4 异常处理与监控 RabbitMQ在实际应用中的场景 4.1 消息通知 4.2…

深入理解STM32中断控制器:NVIC的工作原理与配置方法

在STM32微控制器中&#xff0c;中断控制是实现外部事件响应和实时任务调度的重要机制&#xff0c;其中中断优先级的配置和管理是至关重要的。NVIC&#xff08;Nested Vectored Interrupt Controller&#xff09;是STM32微控制器上的中断控制器&#xff0c;负责接收、管理和分发…

ios设备解锁 --Apeaksoft iOS Unlocker

Apeaksoft iOS Unlocker是一款针对iOS系统的密码解锁工具。其主要功能包括解锁多种锁屏类型&#xff0c;包括数字密码、Touch ID、Face ID和自定义密码。此外&#xff0c;它还可以帮助用户删除iPhone密码以进入锁屏设备&#xff0c;忘记的Apple ID并将iPhone激活为新的&#xf…

二叉树的锯齿形遍历,力扣

目录 题目&#xff1a; 我们直接看题解吧&#xff1a; 快速理解解题思路小建议&#xff1a; 解题方法&#xff1a; 相似题目对比分析&#xff1a; 解题分析&#xff1a; 解题思路&#xff1a; 补充说明&#xff1a; 思路优化&#xff1a; 代码实现(层序遍历倒序)&#xff1a; 题…

备战蓝桥杯---动态规划(基础2)

本专题主要是介绍几个比较经典的题目&#xff1a; 假设我们令f[i]为前i个的最长不下降子序列&#xff0c;我们会发现难以转移方程很难写&#xff08;因为我们不知道最后一个数&#xff09;。 于是&#xff0c;我们令f[i]为以i结尾的最长不下降子序列&#xff0c;这样子我们就可…

Leetcode 第 112 场双周赛题解

Leetcode 第 112 场双周赛题解 Leetcode 第 112 场双周赛题解题目1&#xff1a;2839. 判断通过操作能否让字符串相等 I思路代码复杂度分析 题目2&#xff1a;2840. 判断通过操作能否让字符串相等 II思路代码复杂度分析 题目3&#xff1a;2841. 几乎唯一子数组的最大和思路代码复…

C#系列-访问SqlServer+Mysql+Oracle数据库(6)

目录 一、 C#访问SqlServer数据库 二、 C#异步读取SqlServer数据库 三、 C#访问Mysql数据库 四、 C#访问Oracle数据库 一&#xff0c;C#访问SqlServer数据库 在C#中访问SQL Server数据库&#xff0c;你通常会使用ADO.NET (ActiveX Data Objects .NET)&…

“深度解析Java虚拟机:运行时数据区域、垃圾收集、内存分配与回收策略、类加载机制“

"深度解析Java虚拟机&#xff1a;运行时数据区域、垃圾收集、内存分配与回收策略、类加载机制" Java 虚拟机一、运行时数据区域程序计数器Java 虚拟机栈本地方法栈堆方法区运行时常量池直接内存 二、垃圾收集判断一个对象是否可被回收1. 引用计数算法2. 可达性分析算…

Python列表中的insert功能及用法举例

Python列表中的insert功能及用法举例 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;insert()&#x1f333;&#x1f340;功能介绍&#x1f340;&#x1f340;语法&#x1f340;&#x1f340;示例&#x1f340;&#x1f340;注意事项&#x…