当前位置: 首页 > news >正文

供应链系统设计-供应链中台系统设计(十四)- 清结算中心设计篇(三)

关于清结算中心的设计,我们之前的两篇文章中,对于业务诉求的好的标准进行了初步的描述,如果没有看的同学可以参考一下两篇文章进行了解,这样更有利于理解本篇的内容。链接具体如下:

供应链系统设计-供应链中台系统设计(十二)- 清结算中心设计篇(一)

供应链系统设计-供应链中台系统设计(十三)- 清结算中心设计篇(二)

基于之前管理,我们在设计之前还是需要将我们设计依赖的标准,以及出发点来说明一下:

从业务诉求角度来看,一个清结算系统好的标准如下:

1.高准确性:清算是资金流转的基石,若计算结果错误,直接导致资金损失或纠纷。

2.全面覆盖业务场景,灵活性与可配置性:作为清算中台,支持前端复杂业务规则(分账、退款、手续费计算)、多币种处理等,通过配置而非代码调整规则,如分账比例、清算周期(T+0/T+1)、手续费模板。

3. 合规与风控能力:符合金融监管要求(如反洗钱、实名认证),内置风险检测(如大额交易预警、异常行为拦截)。

4. 透明可追溯:所有交易流水、清算记录、资金变动清晰可查,支持实时对账和审计追溯。

5. 资金流动性高效:缩短结算周期,提升资金周转效率(如实时到账、自动归集)。

我们在之前的文章中,基于以上要求,设计出了初步的清结算系统模块和组件,但是没有对于系统进行分层设计和以及支撑模块的展现,如下图所示: 

因此,本篇文章基于之前的概要设计,在这里对于清结算系统架构进行了层设计以及系统架构完整度的补充,具体如下图所示:

 

总体系统架构思想

该清结算系统采用分层模块化设计,将复杂的金融业务流程拆解为独立的组件,通过标准化接口和数据流串联各模块,实现高效、安全、可扩展的资金处理。核心架构思想如下:


1. 分层架构与数据流
  1. 业务交易系统层

    • 功能:承载具体业务场景(如淘宝、京东、自营商城),生成原始交易数据。

    • 示例:用户下单支付后,生成包含订单金额、用户ID、商户ID的原始数据。

  2. 数据接入与清洗层

    • 功能:将不同业务系统的异构数据(如支付宝的JSON、银行的XML)转换为标准化流水数据。

    • 关键操作

      • 数据清洗:过滤无效字段(如测试数据、重复请求)。

      • 标准化:统一字段命名(如“订单号”映射为order_id)、单位(如金额统一为“分”)。

  3. 清算与结算核心层

    • 清算模块

      • 功能:根据规则(如分账比例、手续费)计算资金分配,生成清算流水。

      • 示例:100元订单,平台抽成10%(10元),应付商家90元。

    • 结算模块

      • 功能:执行实际资金划转(如支付宝付款至商户账户),生成结算流水。

  4. 风险控制层

    • 功能:实时监控交易与清算流程,识别风险(如洗钱、欺诈)。

    • 覆盖范围

      • 交易阶段:检查用户设备、IP是否异常。

      • 清算阶段:校验分账比例是否合规。

      • 结算阶段:拦截高风险资金划转。

  5. 对账与合规层

    • 功能

      • 对账:比对系统流水与银行账单,修复差异(如漏单、重复扣款)。

      • 合规审计:生成反洗钱报告,确保符合监管要求。

  6. 应用服务层

    • 功能:面向商户和运营人员提供管理功能。

      • 商户服务:账户流水查询、资金报表导出。

      • 运营服务:清算规则配置、风险事件处理。


2. 核心架构思想
  1. 模块解耦

    • 各模块职责单一,如清算模块仅处理资金计算,结算模块专注资金划转,风险模块独立监控。

    • 优势:修改分账规则无需影响结算逻辑,提升系统可维护性。

  2. 数据标准化与流水线处理

    • 通过数据清洗层统一输入格式,确保后续流程(清算、风控)处理一致的数据结构。

    • 优势:兼容多业务系统(淘宝、京东),降低接入新业务的成本。

  3. 风险控制全链路覆盖

    • 风险组件嵌入交易、清算、结算全流程,而非事后补救。

    • 示例:用户支付时实时检测设备指纹,清算时校验分账比例合法性,结算时拦截黑名单账户。

  4. 异步与批量处理

    • 清算任务调度管理支持批量处理(如T+1结算),降低实时压力。

    • 优势:高峰时段(如双十一)通过异步队列削峰填谷,保障系统稳定性。

  5. 合规性内置

    • 对账中心与合规中心独立运行,确保数据可追溯、操作可审计。

    • 示例:每日自动生成央行要求的反洗钱报告,避免人工疏漏。


架构的核心优势

  1. 高扩展性

    • 业务扩展:新增支付渠道(如抖音支付)只需扩展数据接入层,无需修改核心逻辑。

    • 功能扩展:增加新的风控规则(如跨境税计算)可通过配置化实现。

  2. 强容错能力

    • 数据一致性:通过事务机制(如TCC)确保清算与结算的原子性。

    • 差错处理:对账中心自动修复数据差异,减少人工干预。

  3. 安全与合规

    • 实时风控:拦截99%的欺诈交易,降低资金损失。

    • 审计追踪:全链路日志记录,支持快速定位问题(如某笔交易为何失败)。

  4. 高效运维

    • 可视化配置:运营人员通过后台调整分账比例、结算周期,无需开发介入。

    • 监控告警:实时监控系统健康状态(如清算延迟、结算失败率),及时预警。


基于业务诉求标准的架构设计考虑

1. 高准确性

设计考虑

  • 数据清洗与标准化(数据接入层):

    • 原始业务数据经过清洗与过滤,去除无效或重复数据,确保输入至清算引擎的数据准确无误。例如,过滤测试环境数据、修正格式错误的金额字段。

    • 显性模块:数据接入层的“数据清洗与过滤”模块。

  • 清算引擎的强一致性设计(清算核心层):

    • 使用分布式事务(如TCC模式)确保分账计算与资金扣减的原子性。例如,分账计算失败时自动回滚已扣减的金额。

    • 显性模块:清算模块中的“清算引擎”和“清算规则”。

  • 对账中心(合规与对账层):

    • 每日自动比对系统流水与银行/支付渠道账单,发现差异后触发自动修复或人工介入。

    • 显性模块:“对账中心”和“差错处理中心”。

补充说明:架构图中未明确展示事务管理机制,事务协调器(如Seata)以确保跨服务操作的一致性。


2. 全面覆盖业务场景,灵活性与可配置性

设计考虑

  • 标准化业务流水数据(数据接入层):

    • 将不同业务系统(淘宝、京东)的异构数据转换为统一格式,支持多场景接入。例如,将支付宝的JSON报文和银行的XML报文统一为内部标准模型。

    • 显性模块:“标准化业务流水数据”模块。

  • 动态规则配置(清算核心层):

    • 清算规则(分账比例、手续费模板)通过运营后台配置化调整,无需代码修改。例如,直播平台分账比例从70:30改为80:20,仅需修改配置。

    • 显性模块:“清算规则”和“权限配置组件”。

  • 多币种处理(资金账户层):

    • 每个币种独立管理账户余额,集成实时汇率API(如央行汇率)自动转换。例如,美元订单按实时汇率转换为人民币后清算。

    • 显性模块:资金账户模块中的“币种”字段及汇率转换逻辑。

补充说明:架构图中未展示规则引擎界面,后续可以增加可视化规则配置平台,支持运营人员拖拽配置分账规则。


3. 合规与风控能力

设计考虑

  • 实时风险拦截(风险控制层):

    • 风险组件嵌入交易、清算、结算全流程。例如,用户支付时检测设备指纹异常,清算时校验分账比例合法性,结算时拦截黑名单账户。

    • 显性模块:“风险组件”及其子模块(风险识别、风险处理、风险规则)。

  • 反洗钱(AML)与实名认证(KYC)

    • 集成第三方身份认证服务(如阿里云实人认证),并在交易流水记录用户实名信息。

    • 显性模块:数据接入层的“金融客户”信息管理及风险组件的“风险分析”。

  • 合规审计(合规中心):

    • 生成反洗钱报告、大额交易记录,并存储至不可篡改的审计日志。

    • 显性模块:“合规中心”和“稽核组件”。

补充说明:架构中未明确数据加密机制,后续可以对敏感数据加密存储(如AES-256加密银行卡号)及传输加密(TLS 1.3)。


4. 透明可追溯

设计考虑

  • 全链路流水记录

    • 每笔交易生成唯一流水号,关联原始订单、清算结果、结算状态,支持按流水号追溯全流程。

    • 显性模块:“清算流水”和“结算流水”存储模块。

  • 审计日志与区块链存证

    • 关键操作(如资金划转、规则修改)记录操作人、时间、参数,并通过区块链哈希存证。

    • 显性模块:“稽核组件”和“合规中心”中的日志管理。

  • 商户与运营查询接口(应用服务层):

    • 提供实时流水查询功能,商户可查看分账明细,运营可导出审计报表。

    • 显性模块:“商户服务后台”和“清结算运营中心”。

补充说明:架构中未体现日志存储技术,后续分布式日志系统(如ELK Stack)以实现高效检索。


5. 资金流动性高效

设计考虑

  • 实时结算支持(结算模块):

    • 通过异步消息队列(如Kafka)和批量处理优化,实现T+0结算。例如,优先处理高优先级商户的实时到账请求。

    • 显性模块:“结算任务管理”和“结算规则”中的实时结算配置。

  • 资金归集与调度

    • 自动将分散资金归集至集团主账户,提升资金利用效率。例如,每日凌晨归集子公司账户余额。

    • 显性模块:资金账户模块的“自动归集”逻辑。

  • 结算失败重试机制

    • 结算失败交易加入重试队列,支持按策略(如指数退避)自动重试,减少人工干预。

    • 显性模块:“结算任务调度管理”中的重试策略配置。

补充说明:架构中未展示资金归集功能,后续可以增加资金池管理模块,支持灵活的资金调拨规则。


总结:架构设计的显性化覆盖

方面显性模块
高准确性数据清洗、清算引擎、对账中心
灵活性与覆盖场景标准化流水、清算规则、权限配置
合规与风控风险组件、合规中心、实名认证
透明可追溯稽核组件、审计日志、查询接口
资金流动性高效结算任务管理、实时结算配置

总结:架构的核心价值

  • 对业务:支持多场景、多渠道的灵活接入,快速响应市场需求。

  • 对技术:通过模块化与标准化,降低系统复杂度,提升开发与运维效率。

  • 对风控与合规:内置全链路防护,保障资金安全与合法合规。
    最终目标:实现“算得准、付得快、管得住”的清结算能力,支撑业务高速增长。

相关文章:

供应链系统设计-供应链中台系统设计(十四)- 清结算中心设计篇(三)

关于清结算中心的设计,我们之前的两篇文章中,对于业务诉求的好的标准进行了初步的描述,如果没有看的同学可以参考一下两篇文章进行了解,这样更有利于理解本篇的内容。链接具体如下: 供应链系统设计-供应链中台系统设计…...

【自学笔记】MySQL的重点知识点-持续更新

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MySQL重点知识点MySQL知识点总结一、数据库基础二、MySQL的基本使用三、数据类型四、触发器(Trigger)五、存储引擎六、索引七、事务处理八、…...

X86路由搭配rtl8367s交换机

x86软路由,买双网口就好。或者单网口主板,外加一个pcie千兆。 华硕h81主板戴尔i350-T2双千兆,做bridge下载,速度忽高忽低。 今天交换机到货,poe供电,还是网管,支持Qvlan及IGMP Snooping&#xf…...

Linux环境基础开发工具的使用(apt, vim, gcc, g++, gbd, make/Makefile)

目录 什么是软件包 Linux 软件包管理器 apt 认识apt 查找软件包 安装软件 如何实现本地机器和云服务器之间的文件互传 卸载软件 Linux编辑器 - vim vim的基本概念 vim下各模式的切换 vim命令模式下各指令汇总 vim底行模式个指令汇总 Linux编译器 - gcc/g gcc/g的作…...

多模态论文笔记——ViViT

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细解读多模态论文《ViViT: A Video Vision Transformer》,2021由google 提出用于视频处理的视觉 Transformer 模型,在视频多模态领域有…...

搜索与图论复习1

1深度优先遍历DFS 2宽度优先遍历BFS 3树与图的存储 4树与图的深度优先遍历 5树与图的宽度优先遍历 6拓扑排序 1DFS&#xff1a; #include<bits/stdc.h> using namespace std; const int N10; int n; int path[N]; bool st[N]; void dfs(int u){if(nu){for(int i0;…...

【数据结构】初识链表

顺序表的优缺点 缺点&#xff1a; 中间/头部的插入删除&#xff0c;时间复杂度效率较低&#xff0c;为O(N) 空间不够的时候需要扩容。 如果是异地扩容&#xff0c;增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间&#xff0c;会有不小的消耗。 扩容可能会存在…...

第11章:根据 ShuffleNet V2 迁移学习医学图像分类任务:甲状腺结节检测

目录 1. Shufflenet V2 2. 甲状腺结节检测 2.1 数据集 2.2 训练参数 2.3 训练结果 2.4 可视化网页推理 3. 下载 1. Shufflenet V2 shufflenet v2 论文中提出衡量轻量级网络的性能不能仅仅依靠FLOPs计算量&#xff0c;还应该多方面的考虑&#xff0c;例如MAC(memory acc…...

deepseek+vscode自动化测试脚本生成

近几日Deepseek大火,我这里也尝试了一下,确实很强。而目前vscode的AI toolkit插件也已经集成了deepseek R1,这里就介绍下在vscode中利用deepseek帮助我们完成自动化测试脚本的实践分享 安装AI ToolKit并启用Deepseek 微软官方提供了一个针对AI辅助的插件,也就是 AI Toolk…...

深入理解Flexbox:弹性盒子布局详解

深入理解Flexbox&#xff1a;弹性盒子布局详解 一、Flexbox 的基本概念二、Flexbox 的核心属性1. display: flex2. flex-direction3. flex-wrap4. justify-content5. align-items6. flex 三、Flexbox 的实际应用1. 创建响应式三列布局2. 实现垂直居中3. 复杂布局的嵌套使用 四、…...

android Camera 的进化

引言 Android 的camera 发展经历了3个阶段 &#xff1a; camera1 -》camera2 -》cameraX。 正文 Camera1 Camera1 的开发中&#xff0c;打开相机&#xff0c;设置参数的过程是同步的&#xff0c;就跟用户实际使用camera的操作步骤一样。但是如果有耗时情况发生时&#xff0c;会…...

仿真设计|基于51单片机的氨气及温湿度检测报警

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 &#xff08;1&#xff09;LCD1602液晶第一行显示当前的氨气值&#xff0c;第二行显示当前的温度…...

关于EDGE IMPULSE的使用与适配,包含如何学习部署在对应的板子

创建好账号后&#xff0c;可以打开主页新建一个工程 跳出这个选no就可以不用标label直接整张图训练&#xff0c;要更改可以去dashboard》labeling method改 然后在这个工程中选择添加自己的照片等数据&#xff0c;他支持这些格式的数据我们现在一般是用在openmv opencv yolo 等…...

【Python蓝桥杯备赛宝典】

文章目录 一、基础数据结构1.1 链表1.2 队列1.3 栈1.4 二叉树1.5 堆二、基本算法2.1 算法复杂度2.2 尺取法2.3 二分法2.4 三分法2.5 倍增法和ST算法2.6 前缀和与差分2.7 离散化2.8 排序与排列2.9 分治法2.10贪心法1.接水时间最短问题2.糖果数量有限问题3.分发时间最短问题4.采摘…...

数据结构 前缀中缀后缀

目录 前言 一&#xff0c;前缀中缀后缀的基本概念 二&#xff0c;前缀与后缀表达式 三&#xff0c;使用栈实现后缀 四&#xff0c;由中缀到后缀 总结 前言 这里学习前缀中缀后缀为我们学习树和图做准备&#xff0c;这个主题主要是对于算术和逻辑表达式求值&#xff0c;这…...

【cocos官方案例改】跳跃牢猫

自制游戏【跳跃牢烟】 案例解析 案例需求&#xff0c;点击鼠标控制白块左右。 资源管理器部分 在body创建一个2d精灵用作玩家。 在地下在创建一个2d精灵用来代表地面。 在body下挂在脚本。 全部脚本如下 &#xff08;在二次进行复刻时候&#xff0c;发现把代码复制上去无法…...

基于Python的药物相互作用预测模型AI构建与优化(上.文字部分)

一、引言 1.1 研究背景与意义 在临床用药过程中,药物相互作用(Drug - Drug Interaction, DDI)是一个不可忽视的重要问题。当患者同时服用两种或两种以上药物时,药物之间可能会发生相互作用,从而改变药物的疗效、增加不良反应的发生风险,甚至危及患者的生命安全。例如,…...

Day51:type()函数

在 Python 中&#xff0c;type() 是一个内置函数&#xff0c;用于返回对象的类型。它可以用于检查变量的类型&#xff0c;也可以用于动态创建新的类型。今天&#xff0c;我们将深入了解 type() 函数的使用方法。 1. 使用 type() 获取变量的类型 最常见的使用方式是将一个对象…...

因果推断与机器学习—用机器学习解决因果推断问题

Judea Pearl 将当前备受瞩目的机器学习研究戏谑地称为“仅限于曲线拟合”,然而,曲线拟合的实现绝非易事。机器学习模型在图像识别、语音识别、自然语言处理、蛋白质分子结构预测以及搜索推荐等多个领域均展现出显著的应用效果。 在因果推断任务中,在完成因果效应识别之后,需…...

计算机网络一点事(21)

第四章 网络层 功能&#xff1a;服务传输层&#xff0c;封装ip数据报&#xff08;主机到主机&#xff09; IP地址以32b表示&#xff0c;以8b为一组记十进制数 异构网络互连&#xff1a;网络结构&#xff0c;主机类型不同 路由器相互配合出IP数据报生成表&#xff0c;根据表…...

springboot使用rabbitmq

使用springboot创建rabbitMQ的链接。 整个项目结构如下&#xff1a; 1.maven依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>3.4.1</version> </dependency>application.y…...

【微服务与分布式实践】探索 Eureka

服务注册中心 心跳检测机制&#xff1a;剔除失效服务自我保护机制 统计心跳失败的比例在15分钟之内是否低于85%&#xff0c;如果出现低于的情况&#xff0c;Eureka Server会将当前的实例注册信息保护起来&#xff0c;让这些实例不会过期。当节点在短时间内丢失过多的心跳时&am…...

Day48:获取字典键的值

在 Python 中&#xff0c;字典是一种无序的集合类型&#xff0c;它以键-值对的形式存储数据。字典的每个元素都有一个唯一的键&#xff0c;并且每个键都对应一个值。获取字典中的值是字典操作的常见任务&#xff0c;今天我们将学习如何从字典中获取键对应的值。 1. 使用方括号…...

Java锁自定义实现到aqs的理解

专栏系列文章地址&#xff1a;https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标&#xff1a; 理解锁&#xff0c;能自定义实现锁通过自定义锁的实现复习Thread和Object的相关方法开始尝试理解Aqs, 这样后续基于Aqs的的各种实现将能更好的理解 目录 锁的…...

仿真设计|基于51单片机的温度与烟雾报警系统

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 &#xff08;1&#xff09;LCD1602实时监测及显示温度值和烟雾浓度值&#xff1b; &#xff08;2…...

文件读写操作

写入文本文件 #include <iostream> #include <fstream>//ofstream类需要包含的头文件 using namespace std;void test01() {//1、包含头文件 fstream//2、创建流对象ofstream fout;/*3、指定打开方式&#xff1a;1.ios::out、ios::trunc 清除文件内容后打开2.ios:…...

【后端开发】字节跳动青训营Cloudwego脚手架

Cloudwego脚手架使用 cwgo脚手架 cwgo脚手架 安装的命令&#xff1a; GOPROXYhttps://goproxy.cn/,direct go install github.com/cloudwego/cwgolatest依赖thriftgo的安装&#xff1a; go install github.com/cloudwego/thriftgolatest编辑echo.thrift文件用于生成项目&…...

SQL UCASE() 函数详解

SQL UCASE() 函数详解 在SQL中&#xff0c;UCASE() 函数是一个非常有用的字符串处理函数&#xff0c;它可以将字符串中的所有小写字母转换为大写字母。本文将详细介绍UCASE() 函数的用法、语法、示例以及其在实际应用中的优势。 一、UCASE() 函数简介 UCASE() 函数是SQL标准…...

99.23 金融难点通俗解释:小卖部经营比喻PPI(生产者物价指数)vsCPI(消费者物价指数)

目录 0. 承前1. 简述&#xff1a;价格指数对比2. 比喻&#xff1a;两大指数对比2.1 简单对比2.2 生动比喻 3. 实际应用3.1 价格传导现象 4. 总结5. 有趣的对比6. 数据获取实现代码7. 数据可视化实现代码 0. 承前 本文主旨&#xff1a; 本文使用小卖部比喻PPI和CPI&#xff0c;…...

【Elasticsearch】match_bool_prefix 查询 vs match_phrase_prefix 查询

Match Bool Prefix Query vs. Match Phrase Prefix Query 在 Elasticsearch 中&#xff0c;match_bool_prefix 查询和 match_phrase_prefix 查询虽然都支持前缀匹配&#xff0c;但它们的行为和用途有所不同。以下是它们之间的主要区别&#xff1a; 1. match_bool_prefix 查询…...