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

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

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

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

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

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

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

参考:

  • 编程严选网

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://xiahunao.cn/news/2778642.html

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

相关文章

2/10 BFS初探

其实在我看来解决全排列问题&#xff0c;核心还是顺序&#xff0c;想清楚结束条件&#xff0c;然后输出&#xff0c;以n3为例 #include<iostream> using namespace std; const int N 10; int path[N];//保存序列 int state[N];//数字是否被用过 int n; void dfs(int u) …

FPGA_工程_基于rom的vga显示

一 框图 二 代码修改 module Display #(parameter H_DISP 1280,parameter V_DISP 1024,parameter H_lcd 12d150,parameter V_lcd 12d150,parameter LCD_SIZE 15d10_000 ) ( input wire clk, input wire rst_n, input wire [11:0] lcd_xpos, //lcd horizontal coo…

C++面向对象 Part 2

文章目录 类六个默认存在的成员函数构造函数&#xff1a;析构函数&#xff1a;拷贝构造函数:拷贝构造详解及细节&#xff1a; 赋值运算符重载;取地址及const取地址操作符重载const修饰的含义&#xff1a; 类六个默认存在的成员函数 构造函数 析构函数 拷贝构造函数 赋值运算…

【从Python基础到深度学习】3. Winscp与Ubuntu使用及配置

一、Ubuntu的使用 1.1 开启与关闭 1.2 修改Ubuntu分辨率 选择适合自己电脑大小的分辨率 1.3 Ubuntu终端 1.4 网络测试 终端中输入&#xff1a; ping www.baidu.com ctr C 退出ping命令 1.5 下载软件 连通安装源 sudo apt update 安装 ssh vim sudo apt install ss…

Verilog刷题笔记22

题目&#xff1a; Build a priority encoder for 8-bit inputs. Given an 8-bit vector, the output should report the first (least significant) bit in the vector that is 1. Report zero if the input vector has no bits that are high. For example, the input 8’b100…

使用耳机壳UV树脂制作一个耳机壳需要多长时间?

使用耳机壳UV树脂制作一个耳机壳所需的时间取决于多个因素&#xff0c;包括工艺流程、加工方式、设备和技术水平等。一般来说&#xff0c;制作一个耳机壳需要数小时到数天不等。 以下是影响制作时间的几个主要因素&#xff1a; 获取耳模时间&#xff1a;获取耳模的时间取决于…

爬虫2—用爬虫爬取壁纸(想爬多少张爬多少张)

先看效果图&#xff1a; 我这个是爬了三页的壁纸60张。 上代码了。 import requests import re import os from bs4 import BeautifulSoupcount0 img_path "./壁纸图片/"#指定保存地址 if not os.path.exists(img_path):os.mkdir(img_path) headers{ "User-Ag…

第66讲管理员登录功能实现

项目样式初始化 放assets目录下&#xff1b; border.css charset "utf-8"; .border, .border-top, .border-right, .border-bottom, .border-left, .border-topbottom, .border-rightleft, .border-topleft, .border-rightbottom, .border-topright, .border-botto…

【Dubbo源码二:Dubbo服务导出】

入口 Dubbo服务导出的入口&#xff1a;服务导出是在DubboBootstrapApplicationListener在监听到ApplicationContextEvent的ContextRefreshedEvent事件后&#xff0c;会触发dubboBootstrap.start(), 在这个方法中最后会导出Dubbo服务 DubboBootstrapApplicationListener Dub…

Java异常处理 throw和throws

目录 throwthrows实例制造异常 在Java中&#xff0c;throw和throws关键字都与异常处理有关&#xff0c;但它们的使用方式和目的有所不同。 throw throw关键字&#xff1a; * throw用于在代码中显式地抛出一个异常。你可以使用它来触发一个异常&#xff0c;并指定异常的类型。…

python接口自动化---接口测试报告模板(详解)

简介 接口测试报告是软件测试过程中非常重要的一部分&#xff0c;通过接口测试报告我们可以了解系统在接口层面上的稳定性和可靠性。下面是一个简单的接口测试报告模板&#xff1a; 测试概述 在这个部分中&#xff0c;您需要简要阐述接口测试的目的和范围。测试环境 在这个部…

网络的基本概念和socket编程

网络的基本概念 1.协议1.1 协议的基本概念1.2 常见的协议 2.分层模型2.1网络七层OSI 7层模型&#xff1a;物数网传会表应(口诀)2.2TCP/IP模型2.3数据通信的过程2.4网络的设计模式2.5以太网帧的格式 3.SOCKET编程3.1网络字节序3.2 相关结构体和函数3.3 代码实现 1.协议 1.1 协议…

NAS如何成为生产力?使用绿联DX4600 Pro搭建图床并实现创作自由

NAS如何成为生产力&#xff1f;使用绿联DX4600 Pro搭建图床并实现创作自由 哈喽小伙伴们好&#xff0c;我是Stark-C~ 关注我的小伙伴都知道&#xff0c;我之前有分享过我的创作过程与工具&#xff0c;其中介绍了我个人其实一直都是使用Markdown的编辑器来进行图文创作的。 我…

【数学建模】【2024年】【第40届】【MCM/ICM】【B题 搜寻潜水器】【解题思路】

一、题目 &#xff08;一&#xff09;赛题原文 2024 MCM Problem A: Resource Availability and Sex Ratios Maritime Cruises Mini-Submarines (MCMS), a company based in Greece, builds submersibles capable of carrying humans to the deepest parts of the ocean. A …

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Web组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Web组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Web组件 提供具有网页显示能力的Web组件&#xff0c;ohos.web.webview提供web控制能…

《剑指 Offer》专项突破版 - 面试题 38、39 和 40 : 通过三道面试题详解单调栈(C++ 实现)

目录 面试题 38 : 每日温度 面试题 39 : 直方图最大矩形面积 方法一、暴力求解 方法二、递归求解 方法三、单调栈法 面试题 40 : 矩阵中的最大矩形 面试题 38 : 每日温度 题目&#xff1a; 输入一个数组&#xff0c;它的每个数字是某天的温度。请计算每天需要等几天才会…

AJAX——认识URL

1 什么是URL&#xff1f; 统一资源定位符&#xff08;英语&#xff1a;Uniform Resource Locator&#xff0c;缩写&#xff1a;URL&#xff0c;或称统一资源定位器、定位地址、URL地址&#xff09;俗称网页地址&#xff0c;简称网址&#xff0c;是因特网上标准的资源的地址&…

生于越南,“开源改变了我的人生!”

注&#xff1a;本文精选自《新程序员 007&#xff1a;大模型时代的开发者》&#xff0c;欢迎点击订购。 作者 | 王启隆 责编 | 唐小引 出品 | 《新程序员》编辑部 随着人工智能浪潮的席卷&#xff0c;开源不再仅仅是计算机领域的一个话题&#xff0c;而是成为推动技术创新…

【动态规划】【回文】【字符串】1278分割回文串 III

作者推荐 【动态规划】【前缀和】【C算法】LCP 57. 打地鼠 本文涉及知识点 动态规划汇总 LeetCode1278分割回文串 III 给你一个由小写字母组成的字符串 s&#xff0c;和一个整数 k。 请你按下面的要求分割字符串&#xff1a; 首先&#xff0c;你可以将 s 中的部分字符修改…

【Linux系统 04】OpenEuler配置

目录 一、镜像文件下载 二、配置静态IP 三、启动SSH连接 四、远程免密登录 五、安装常用软件 一、镜像文件下载 官方下载地址&#xff1a;openEuler下载 | 欧拉系统ISO镜像 | openEuler社区官网 选择一个版本&#xff0c;lopenEuler通常有两种版本&#xff1a; 创新版&…