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

金融全业务场景的系统分层与微服务域架构切分

构建一个支持金融全业务场景的会员账户体系,是一项复杂但极具战略价值的工程。为了支持跨国收付款、供应链金融、信用账户、票据、银行卡发卡等场景,需要采用清晰的分层架构和服务划分策略,确保系统具备可扩展性、合规性、安全性和高可用性。

以下是建议的系统切分方式和微服务分层架构:


一、宏观分层架构(分为5层)

  1. 接入层(API Gateway + BFF)

    • 负责认证、流控、灰度发布、多租户支持

    • 支持不同前端/渠道的聚合层(Web / App / 第三方平台)
      BFF 是 Backend For Frontend 的缩写,是一种后端架构模式,专门为特定前端应用(如 Web、App、小程序)定制后端接口层。

  2. 服务层(微服务)

    • 核心业务逻辑的实现层,按业务域切分成多个微服务

  3. 域服务层(Domain Service)

    • 实现领域建模、复杂业务规则、事件驱动(DDD聚合根/实体/值对象等)

  4. 基础服务层(共用服务)

    • 包含日志、风控、审计、通知、用户管理、权限系统等

  5. 数据访问层

    • 各服务的私有数据库 + 数据中台或数据湖支撑大数据分析、报表、合规监管等


二、微服务切分建议(按业务域)

1. 会员账户体系服务
  • member-service:会员注册、实名认证、合规信息

  • account-service:账户开户、账户生命周期管理(可细分:主账户、子账户、虚拟账户等)

  • balance-service:账户余额管理(支持多币种)

  • ledger-service:记账服务,双录、T+0/T+1清结算逻辑支持

2. 支付与清结算服务
  • payment-service:支持国际支付、第三方支付对接(SWIFT、SEPA、UPI等)

  • fx-service:外汇汇率服务、实时/定时兑换

  • clearing-service:内部清结算、支付对账

  • settlement-service:跨行、跨境结算流程对接

3. 银行卡/卡产品服务
  • card-issuer-service:虚拟/实体卡发卡管理

  • card-lifecycle-service:激活、挂失、冻结、注销等

  • card-transaction-service:卡交易入账、反欺诈、清分

  • card-network-adapter:对接Visa、Mastercard、银联等网络

4. 信用与风控服务
  • credit-profile-service:用户信用评分、授信额度管理

  • loan-service:贷款产品、还款计划、应计利息

  • risk-engine-service:黑名单、规则引擎、模型评估

  • collateral-service:支持担保品管理(供应链场景)

5. 供应链金融服务
  • supplier-service:供应商信息管理

  • factoring-service:应收账款融资、保理

  • invoice-service:票据管理、电子票据验真验签

  • scf-contract-service:采购合同、融资合同管理

6. 公共与支撑服务
  • auth-service:OAuth2、OpenID Connect 认证鉴权

  • audit-service:操作审计、合规追踪

  • notification-service:短信、邮件、站内消息

  • document-service:协议/合同/KYC文档上传、存储、归档

  • compliance-service:AML、KYC、反恐融资接口


三、关键设计原则

1. 领域驱动设计(DDD)
  • 各微服务围绕业务能力进行切分

  • 每个服务拥有自己的数据存储(数据库私有)

2. 事件驱动架构(EDA)
  • 使用 Kafka、Pulsar 等中间件进行服务解耦

  • 支持补偿机制、幂等性、事务一致性(可用 Saga/Outbox 模式)

3. 多币种与跨境支持
  • 账户、余额、支付等核心服务需内置货币种类、汇率机制

  • 服务支持本地化规则扩展(多地区风控、税务合规)

4. 审计与监管合规
  • 记账、交易、操作均需落日志、带有事务ID和用户ID

  • 提供API给审计、合规、监管上报系统(如 FATCA、CRS)


四、部署与弹性要求

  • 多区域多活部署(主打跨国场景)

  • 核心服务需支持分区高可用(分区记账、交易路由)

  • 使用服务网格(如 Istio)增强 observability、故障恢复

五、技术框架

        底层系统基于Rust构建,仅在接入层考虑使用JAVA,原来系统的主要开发人员都是JAVA技术栈,这个是为团队的延续做的妥协。

类别Crate 名称组件版本
Web 框架actix-web4.11.0
ORMrbatis4.5.51
异步运行时tokio1.45.1
模板引擎MiniJinja2.9.0
国际化rust-i18n3.1.5
中文分词jieba-rs0.7.3
任务调度job_scheduler1.2.1
会话管理actix-session0.10.1
密码加密bcrypt0.15.1
JWTjsonwebtoken9.3.0
序列化serde1.0.206
JSON 处理serde_json1.0.124
日志log4rs1.3.0
配置管理toml0.8.19
ID 生成snowflake-multi-threaded0.1.4
UUIDuuid1.10.0
图像处理image0.25.2
时间处理chrono0.4.38

相关文章:

金融全业务场景的系统分层与微服务域架构切分

构建一个支持金融全业务场景的会员账户体系,是一项复杂但极具战略价值的工程。为了支持跨国收付款、供应链金融、信用账户、票据、银行卡发卡等场景,需要采用清晰的分层架构和服务划分策略,确保系统具备可扩展性、合规性、安全性和高可用性。…...

POJO、DTO和VO:Java应用中的三种关键对象详解

在软件开发特别是Java开发中,常常会遇到POJO、DTO和VO这三类对象。它们在不同场景下扮演着重要角色,有助于优化代码结构、增强系统安全性和提升性能。本文将全面解析这三者的定义、区别及常见使用场景,帮助你更好地理解和应用。 1. POJO&…...

论文阅读笔记——Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

I3D 论文 UCF-101(13000多个视频)和 HMDB-51(7000多个视频)数据集过小,提出了 Kinetics 数据集,并且在其之上预训练之后能够迁移到其他小的数据集。 2DLSTM:使用2D CNN的好处是可以直接从 Ima…...

IDEA,Spring Boot,类路径

在 IDEA 中开发 Spring Boot 项目时,类路径 (classpath) 的正确配置至关重要,它直接影响项目的编译、运行和依赖管理。以下是关于此问题的关键知识点: IDEA 与 Spring Boot 类路径核心概念 类路径定义: 类路径是 JVM 用来搜索类文件 (.class…...

vscode编辑器怎么使用提高开发uVision 项目的效率,如何编译Keil MDK项目?

用vscode编译uVision 项目只需要安装一个Keil Assistant插件,即可用vscode开发“keil 项目”。极大提高开发速度! 1.安装Keil Assistant插件 安装插件成功之后,应该会让安装一个东西,点击安装即可 2.配置安装包路径 3.打开 uVi…...

Beta分布Dirichlet分布

目录 Beta分布Dirichlet分布Beta分布&Dirichlet分布从Dirichlet分布生成Beta样本Beta分布&Dirichlet分布应用 Beta分布 Beta分布是定义在区间 [ 0 , 1 ] [0, 1] [0,1]上的连续概率分布,通常用于模拟概率或比例的随机变量。Beta分布的概率密度函数&#xff…...

AR测量工具:精准测量,多功能集成

在日常生活中,我们常常会遇到需要测量物体长度、距离或角度的情况。无论是装修房屋、制作家具,还是进行户外活动,一个精准的测量工具都能大大提高我们的工作效率。AR测量工具就是这样一款集多种功能于一体的实用测量软件,它利用增…...

【Go-补充】Sync包

并发编程-Sync包 sync.WaitGroup 在代码中生硬的使用time.Sleep肯定是不合适的,Go语言中可以使用sync.WaitGroup来实现并发任务的同步。 sync.WaitGroup有以下几个方法: 方法名功能(wg * WaitGroup) Add(delta int)计数器delta(wg *WaitGroup) Done()…...

云服务器是什么,和服务器有什么区别?

云服务器 vs 传统服务器:通俗对比 一句话总结: 云服务器是「租用」的虚拟服务器(像租房),传统服务器是「自购」的物理机器(像买房)。 1. 本质区别 对比项云服务器传统服务器物理形态虚拟的&am…...

【HTML-14】HTML 列表:从基础到高级的完整指南

列表是HTML中用于组织和展示信息的重要元素。无论是导航菜单、产品特性还是步骤说明,列表都能帮助我们以结构化的方式呈现内容。本文将全面介绍HTML中的列表类型、语法、最佳实践以及一些高级技巧。 1. HTML列表的三种类型 HTML提供了三种主要的列表类型&#xff…...

设备驱动与文件系统:01 I/O与显示器

操作系统设备驱动学习之旅——以显示器驱动为例 从这一节开始,我要学习操作系统的第四个部分,就是i o设备的驱动。今天要讲的是第26讲,内容围绕i o设备中的显示器展开,探究显示器是如何被驱动的,也就是操作系统怎样让…...

.NET 9正式发布,亮点是.NET Aspire和AI

.NET 9 正式发布:.NET Aspire 与 AI 引领新潮流 一、.NET 9 发布概览 Microsoft 正式发布了 .NET 9,这一版本堪称迄今为止最高效、最现代、最安全、最智能且性能最高的 .NET 版本。它凝聚了全球数千名开发人员一年的心血,带来了数千项性能、…...

vue+mitt的简便使用

突然注意到 onMounted 在一个组件中可以多次调用,这不得发挥一下: 把绑定/解绑的逻辑封装到同一个模块中不就简化了吗,只需要在组件中注册一下子再传递一个回调就完事了。简单的组件中甚至不用引入onMounted和onUnmounted cnpm i mitt /src/utils/emi…...

Java正则表达式完全指南

Java正则表达式完全指南 一、正则表达式基础概念1.1 什么是正则表达式1.2 Java中的正则表达式支持 二、正则表达式基本语法2.1 普通字符2.2 元字符2.3 预定义字符类 三、Java中正则表达式的基本用法3.1 编译正则表达式3.2 创建Matcher对象并执行匹配3.3 常用的Matcher方法 四、…...

Windows搭建Swift语言编译环境?如何构建ObjC语言编译环境?Swift如何引入ObjC框架?Interface Builder的历史?

目录 Windows搭建Swift语言编译环境 如何构建ObjC语言编译环境? Swift如何引入ObjC框架? Swift和ObjC中IBOutlet和IBAction代表什么? Interface Builder的历史 Xcode的“Use Storyboards"的作用? Xcode的Playground是什么? Windows搭建Swift语言编译环境 Windo…...

第七部分:第四节 - 在 NestJS 应用中集成 MySQL (使用 TypeORM):结构化厨房的原材料管理系统

在 NestJS 这样一个结构化的框架中,我们更倾向于使用 ORM (Object-Relational Mapper) 来与关系型数据库交互。ORM 就像中央厨房里一套智能化的原材料管理系统,它将数据库中的表格和行映射到我们熟悉的对象和类的实例。我们可以使用面向对象的方式来操作…...

Bug 背后的隐藏剧情

Bug 背后的隐藏剧情 flyfish 1. 「bug」:70多年前那只被拍进史书的飞蛾 故事原型:1947年哈佛实验室的「昆虫命案」 1947年的计算机长啥样?像一间教室那么大,塞满了几万根继电器(类似老式开关)&#xff…...

Golang | 搜索哨兵-对接分布式gRPC服务

哨兵(centennial)负责接待客人,直接与调用方对接。哨兵的核心组件包括service HUB和connection pool。service HUB用于与服务中心通信,获取可提供服务的节点信息。connection pool用于缓存与index worker的连接,避免每…...

智慧充电桩数字化管理平台:环境监测与动态数据可视化技术有哪些作用?

随着新能源汽车的普及,智慧充电桩作为基础设施的重要组成部分,正逐步向数字化、智能化方向发展。环境监测与动态数据可视化技术的应用,为充电桩的高效管理和运维提供了全新解决方案。通过实时采集环境参数与运行数据,并结合可视化…...

debian12.9或ubuntu,vagrant离线安装插件vagrant-libvirt

系统盘: https://mirror.lzu.edu.cn/debian-cd/12.9.0/amd64/iso-dvd/debian-12.9.0-amd64-DVD-1.iso 需要的依赖包,无需安装ruby( sudo apt install -y ruby-full ruby-dev rubygems ) : apt install -y iptables; apt install -y curl;rootdebian129:~# dpkg -l iptables …...

家政小程序开发,开启便捷生活新篇章

在快节奏的现代生活中,家务琐事常常让人分身乏术,如何高效解决家政服务需求成了众多家庭的难题。家政小程序开发,正是为解决这一痛点而生,它将为您带来前所未有的便捷生活体验。 想象一下,您只需打开手机上的家政小程…...

C++ 重载(Overload)、重写(Override)、隐藏(Hiding) 的区别

C 重载(Overload)、重写(Override)、隐藏(Hiding) 的区别 这三个概念是 C 面向对象的核心知识点,也是面试必问内容。下面我们从定义、发生条件、代码示例、底层原理全方位解析它们的区别。 一、核心区别对比表(速记版) 特性重载(Overload)…...

李臻20242817_安全文件传输系统项目报告_第14周

安全文件传输系统项目报告(第 14 周) 1. 代码链接 Gitee 仓库地址:https://gitee.com/li-zhen1215/homework/tree/master/Secure-file 代码结构说明: SecureFileTransfer/ ├── client/ # 客户端主目…...

20250531MATLAB三维绘图

MATLAB三维绘图 三维曲线:plot3功能介绍代码实现过程plot3实现效果 三维曲面空间曲面作图命令:meshmeshgrid语法示例应用meshgrid实操训练 peakspeaks 的基本用法peaks数学表达式实操训练自定义网格大小使用自定义网格 meshMATLAB代码对齐快捷键Ctrli墨西…...

深入理解C#异步编程:原理、实践与最佳方案

在现代软件开发中,应用程序的性能和响应能力至关重要。特别是在处理I/O密集型操作(如网络请求、文件读写、数据库查询)时,传统的同步编程方式会导致线程阻塞,降低程序的吞吐量。C# 的异步编程模型(async/aw…...

基于千帆大模型的AI体检报告解读系统实战:使用OSS与PDFBox实现PDF内容识别

目录 说明 前言 需求 流程说明 表结构说明 整体流程 百度智能云 注册和实名认证 创建应用 费用说明 大模型API说明 集成大模型 设计Prompt 上传体检报告 读取PDF内容 功能实现 智能评测 抽取大模型工具 功能实现 总结 说明 AI体检报告解读、病例小结或者…...

Redis缓存落地总结

最近在优化电子签系统,涉及到缓存相关的也一并优化了,写个文档做个总结,防止以后开发时又考虑不全 1、避免大key 避免缓存大PDF文件: 💡 经验值:单个Redis Value不超过10KB,集合元素不超过500…...

Spring,SpringMVC,SpringBoot

1.Spring最核心包括aop和ioc概念 AOP 能够将将哪些于业务无关的,并且大量重复的业务逻辑进行封装起来,便于减少重复代码,降低模块之间的耦合度,给未来的系统更好的可用性和可维护性。 Spring中AOP是采用动态代理,JDK代…...

npm、pnpm、yarn使用以及区别

npm 使用 安装包&#xff1a;在项目目录下&#xff0c;npm install <包名> 用于本地安装包到 node_modules 目录&#xff0c;并添加到 package.json 的 dependencies 中&#xff1b;npm install -g <包名> 用于全局安装&#xff0c;适用于命令行工具等。初始化项目…...

flutter加载dll 报错问题

解决flutter加载dll 报错问题 LoadLibrary 报错 126 or 193 明确一点&#xff1a;flutter构建exe 时默认是MSVC的。 1. 先检查dll 的位数是否满足 file ***.dll output: PE32 executable (DLL) (console) x86-64, for MS Windows, 19 sections 这种是64位的机器。 满足的话可…...