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

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

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

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

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

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

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

参考:

  • 编程严选网

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.rhkb.cn/news/254976.html

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

相关文章

Linux 软件管理(YUM RPM)

1 YUM yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次…

算法学习——LeetCode力扣栈与队列篇1

算法学习——LeetCode力扣栈与队列篇1 232. 用栈实现队列 232. 用栈实现队列 - 力扣(LeetCode) 描述 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQu…

ChatGPT4 教你如何完成SQL的实践应用

对数据库的各项应用与操作都离不开SQL来对数据进行增删改查。 例如 : 有一张某公司职员信息表如下: 需求1:在公司职员信息表中,请统计各部门,各岗位下的员工人数。 如果这个SQL语句不会写或者不知道怎么操作可以交给…

Unity入门学习

目录 Unity环境搭建Unity引擎是什么软件下载和安装工程文件夹 Unity界面基础Scene场景和Hierarchy层级窗口Game游戏和Project工程Inspector和Console工具栏和父子关系 Unity工作原理反射机制和游戏场景预设体和资源包的导入导出 Unity脚本基础脚本基本规则生命周期函数Inspecto…

产品效果图为何要用渲染100农场?渲染100邀请码1a12

产品效果图很重要,它能帮助设计人员和消费者理解产品特点,是不可或缺的一步。产品效果图渲染耗时耗力,不仅慢而且容易出错,在这种情况下,使用渲染农场就成了必备选择,以目前国内最好的渲染农场渲染100为例&…

JAVA设计模式之原型模式详解

原型模式 1 原型模式介绍 定义: 原型模式(Prototype Design Pattern)用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。 西游记中的孙悟空 拔毛变小猴,孙悟空这种根据自己的形状复制出多个身外化身的技巧,在面向对象软件设计领…

Antd+React+react-resizable实现表格拖拽功能

1、先看效果 2、环境准备 在package.json 引入相关的依赖 "dependencies": {"antd": "^5.4.0","react-resizable": "^3.0.4",},"devDependencies": {"types/react": "^18.0.33","types…

github和gitee

github GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。 github可以给提交的代码打上标签,方便版本的迭代和回退,也是一个存储代码的仓库 github工作区 gitee是gitHub的…

Oracle数据表ID自增操作

一、Oracle ID自增长功能介绍 Oracle数据库默认不支持像 SQLServer、MySQL中的自增长(auto increment)功能,即自动为每一行记录的自增长字段生成下一个值。 二、Oracle ID自增长方法 第一种,通过序列(sequence&#…

第四篇:SQL语法-DDL-数据定义语言

大年初一限定篇😀 (祝广大IT学习者、工作者0 error 0 warning!) 一,DDL数据库操作 (一)库的查询操作 1.列出所有已定义数据库 show databases; 2.查询当前所处数据库 select database(); &…

【Spring】Bean 的生命周期

一、Bean 的生命周期 Spring 其实就是一个管理 Bean 对象的工厂,它负责对象的创建,对象的销毁等 所谓的生命周期就是:对象从创建开始到最终销毁的整个过程 什么时候创建 Bean 对象?创建 Bean 对象的前后会调用什么方法&#xf…

使用python-numpy实现一个简单神经网络

目录 前言 导入numpy并初始化数据和激活函数 初始化学习率和模型参数 迭代更新模型参数(权重) 小彩蛋 前言 这篇文章,小编带大家使用python-numpy实现一个简单的三层神经网络,不使用pytorch等深度学习框架,来理解…

c#cad 创建-圆(二)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 这段代码是一个AutoCAD插件,用于在模型空间中创建一个圆形。 首先,我们需要定义一个命令类CreateCircleCommand,并在命名空间CreateCircleInCad中声明。 在CreateCircleCommand类中&a…

DNS 域名系统——应用层

目录 1 域名系统 DNS 1.1 域名系统 1.2 互联网的域名结构 1.2.1 顶级域名 TLD(Top Level Domain) (1) 国家顶级域名 nTLD (2) 通用顶级域名 gTLD (3) 基础结构域名 (infrastructure domain) 1.3 域名服务器 1.3.1 域名服务器的四种类型 (1…

电子电器架构 —— 区域控制器是未来架构的正解吗?

电子电器架构 —— 区域控制器是未来架构的正解吗? 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶…

【数据结构】双向链表(链表实现+测试+原码)

前言 在双向链表之前,如果需要查看单链表来复习一下,链接在这里: http://t.csdnimg.cn/Ib5qS 1.双向链表 1.1 链表的分类 实际中链表的结构非常多样,以下情况组合起来就有8种链表结构: 1.1.1 单向或者双向 1.1.2 …

【技巧】PCB布局技巧:带条纹的电容

这些都是无极性电容,所以这个条纹不是极性标记。一位读者得回答正确,它代表电容卷绕时,卷绕在外层的那一极。我发现现在很少有工程师知道电容一端的条纹代表什么,也不知道条纹端和不带条纹端互换带来的不同效果。即使你从来不使用…

排序算法的时间复杂度存在下界问题

对于几种常用的排序算法,无论是归并排序、快速排序、以及更加常见的冒泡排序等,这些排序算法的时间复杂度都是大于等于O(n*lg(n))的,而这些排序算法存在一个共同的行为,那就是这些算法在对元素进行排序的时候,都会进行…

16.1 Spring框架_SpringIoC容器与Bean管理(❤❤❤❤)

16.1 Spring框架_SpringIoC容器与Bean管理 1. Spring IOC1.1 IoC控制反转 1. Spring IOC 1.1 IoC控制反转 需要自己查找3种苹果的特色,从而选择符合自己的需求 告诉水果店老板自己的口味,由老板推荐哪种苹果,省去自己查询水果特点 在java中,各种水果就是各种对象,买水果就是创…

uniCloud ---- schema2code

目录 schema2code有两种方式 label属性 component属性 group属性 应用 DB Schema里有大量的信息,其实有了这些信息,前端将无需自己开发表单维护界面,uniCloud可以自动生成新增、修改、列表、详情的前端页面,以及admin端的列…