土法炼钢兴趣小组的算法知识备份

【金融科技工程】金融科技工程全景:从支付到交易所的系统分类与读图

文章导航

分类入口
architecturefintech
标签入口
#fintech#roadmap#series-index#payment#clearing#exchange#risk

目录

金融科技工程全景:从支付到交易所的系统分类与读图

你大概率在某个瞬间动过这样的念头:

这些想法都没错,它们都能在周末跑出一个 demo。问题是,这个 demo 离可以真的碰钱的系统,距离比你想象得远得多。真正难的不是写一个能加能减的余额,而是当同一笔钱在网络分区、上下游超时、队列重放、人工补单、监管查询、跨币种汇兑、跨时区对账这些事同时发生时,它还能是正确的一笔钱

这篇文章是【金融科技工程】系列的第 1 篇,承担两件事:

  1. 把”金融科技为什么比普通后端难”这个问题讲清楚,让后续 24 篇的每一条约束都有来处;
  2. 给出一张系统分类骨架与完整阅读地图,读者可以按图索骥,按需跳读。

这个系列的读者画像是:写过几年后端、读过一些分布式系统资料、对钱有敬畏但没做过核心账务/支付/交易所的工程师。不会从零讲 TCP 和 SQL,但会从零讲复式记账和 ISO 8583。

更具体地说,下面四类读者最能从本系列受益:

如果你已经是某个细分领域十年以上的专家(例如资深核心银行工程师),本系列在你的主场可能偏浅,但邻域章节对你依然是有效的补课材料——很多金融事故恰恰发生在”我熟悉的部分边界之外”。


一、为什么金融科技比普通后端更难

用一句话概括:普通后端追求”大部分时候对”,金融系统追求”任何时候都对,且对得起审计”。下面拆成五层来看。

1.1 钱的原子性:不是技术名词,是法律名词

在一般的业务系统里,“原子性”一般指数据库事务的 ACID。订单创建失败了,回滚就好。但在金融系统里,原子性有一层更硬的含义:

工程含义:

  1. 数据库事务的边界不等于业务原子性的边界,跨库/跨系统/跨机构的原子性要用 SAGA、TCC、对账补偿、两阶段提交、外部一致性时钟等工具拼出来(见第 5 篇)。
  2. “软删除”和”直接 UPDATE 余额”在账务系统里是禁忌。账务库应是只追加(append-only)的事件流 + 物化视图,改错只能靠冲正(reversal)分录(见第 3、4 篇)。

1.2 监管边界:这是一条硬约束,不是可配置项

普通业务的”合规”往往是产品经理口中的一句”我们要 GDPR 合规”,实际落地靠打码加协议弹窗。金融系统的监管边界是:

这意味着一个合格的金融后端工程师,读过的不是只有《Designing Data-Intensive Applications》,还有至少三四份监管文件:以中国为例,《非银行支付机构条例》《支付业务许可证》《反洗钱法》《征信业管理条例》。后续每一篇都会在合适的地方指出它所踩的监管边界,但不会罗列条文,只讲这条边界怎么变成了代码里的一行约束

1.3 一个小数点的代价:浮点数是禁区

普通系统里 double 可能够用。金融系统里,double 是工程事故的入口。

工程含义:金额字段一律用定点数(decimal / 大整数 + scale),中间计算保留”全精度”,只在向外展示/入账那一刻做明确的舍入策略,且舍入产生的尾差(rounding residual)要有专门的科目兜底(第 2、3 篇)。

1.4 时间也是钱:T+0、T+1、截止时间与窗口

在一般的 Web 系统里,“时间”是个日志字段,谁不是毫秒精度呢。在金融系统里,时间是:

1.5 错一个小数点的代价:公开事件清单

抽象讲再多不如看真实事件:

这些事件的共性:不是算法不够先进,而是在某个”一般工程师不会想到”的角落,一个本该被守住的不变量(invariant)失守了

我们可以把这些失守点归到几类:

本系列会在每类失守点上给出具体的”守不变量”的工程手法。整个【金融科技工程】系列,本质上是在给读者一张清单:金融系统里有哪些不变量,如何在代码层面守住它们

1.6 一段最小代码,展示一个最常见的不变量

为了让”不变量”这个词落到代码层面,看下面这张最小分录表。它是后续第 3、4 篇的主角,也是整个对账体的原子单位:

-- 仅作示意。真实系统字段会更多,且分片键、时间列、审计列需要额外考虑。
CREATE TABLE journal_entry (
    id              BIGINT       PRIMARY KEY,
    txn_id          VARCHAR(64)  NOT NULL,            -- 业务事务号
    booking_date    DATE         NOT NULL,            -- 记账日
    currency        CHAR(3)      NOT NULL,            -- ISO 4217 币种
    created_at      TIMESTAMP(6) NOT NULL,
    description     VARCHAR(256) NOT NULL
);

CREATE TABLE journal_line (
    id              BIGINT       PRIMARY KEY,
    entry_id        BIGINT       NOT NULL REFERENCES journal_entry(id),
    account_id      BIGINT       NOT NULL,
    direction       CHAR(1)      NOT NULL CHECK (direction IN ('D','C')),
    amount          NUMERIC(32,0) NOT NULL,           -- 最小单位整数(fen/satoshi...)
    scale           SMALLINT     NOT NULL,            -- 该币种小数位
    currency        CHAR(3)      NOT NULL,
    CONSTRAINT amount_positive CHECK (amount > 0)
);

不变量

  1. 同一 entry_id 下,SUM(amount) WHERE direction='D' 必须等于 SUM(amount) WHERE direction='C'(借贷相等);
  2. journal_line.currency 必须与 journal_entry.currency 相同(不跨币种混记);
  3. 任一账户余额 balance(account_id) = SUM(amount * sign(direction, account_type)),其中 sign 依赖科目类型(资产/负债/损益)的借贷方向规则(第 3 篇详解);
  4. 表只允许 INSERT,不允许 UPDATE / DELETE。错账用冲正分录处理。

只要上面四条在代码里被机制化地守住,90% 的资金事故可以被堵在产线之前。本系列的每一篇都会围绕”如何守住某一类不变量”展开。

1.7 一笔 100 元充值的完整旅程

抽象归抽象,用一个最常见的业务流程把 1.1–1.6 串起来,你会对”为什么这么多环节”有直观认识。假设用户 Alice 用工行储蓄卡给某持牌支付平台 P 充值 100 元,最终进入她在 P 内的钱包余额。

阶段 A:用户侧

  1. Alice 在 App 点击”充值 100 元”,客户端生成 client_request_id = uuid(),向平台 P 发起 HTTP 请求。
  2. 平台 P 的支付网关(第 9 篇)收到请求,按 client_request_id 查询幂等表:首次出现则新建,非首次则直接返回上次结果。
  3. 网关把请求交给风控(第 19 篇):检查限额(单日、单月)、设备指纹、命中黑名单与制裁名单(第 21 篇)。返回”放行”。

阶段 B:账务记账(在途)

  1. 平台 P 的账务核心(第 3 篇)创建一笔分录:
    • 借:客户备付金-在途(资产)100.00 CNY
    • 贷:Alice 钱包-可用(负债)100.00 CNY
    注意:此时钱尚未从工行划出,但平台 P 在自己账本上记了”我即将欠 Alice 100 元”,同时以”在途”作为对账依据。这条分录带 state = PENDING 标签,余额物化暂不反映到 Alice 的可用余额。
  2. 账务核心通过事务消息把”待发起支付”事件投递到支付渠道网关。

阶段 C:支付通道

  1. 支付渠道网关按路由规则(第 9 篇)选中一家合作的银行通道(例如快捷支付),发起 ISO 8583 报文或自有协议报文(第 7 篇)。
  2. 工行端做发卡行风控、账户校验、密码/短信验证,扣 Alice 卡 100 元,返回”成功”响应。
  3. 渠道网关收到同步响应后,不直接入账。金融系统里同步响应只作为”引导客户端前端展示”的依据,真正的入账以异步清算回单为准。

阶段 D:清算与结算

  1. 当日日切前,银联/网联(第 12 篇)对所有交易做轧差清算,生成净额结算指令。
  2. 央行 CNAPS 或网联 IBPS 完成资金实际划拨:工行扣 100 元 → 平台 P 的备付金银行账户 +100 元(通常是 T+0 或 T+1,依通道而定)。
  3. 平台 P 收到清算回单(电子对账单 + 明细),由对账系统(第 23 篇)与步骤 4 的 PENDING 分录匹配。匹配成功后:
    • 冲销原 PENDING 分录的在途标记,物化到 Alice 的可用余额;
    • 把”客户备付金-在途”科目的金额转到”客户备付金-已结算”。
  4. 如果匹配失败(金额不符、订单号对不上、超时未到),进入差错处理流程(第 23 篇):短期挂账 + 人工介入 + SLA 内回写或冲正。

阶段 E:监管与审计

  1. 交易进入反洗钱监测(第 21 篇),命中规则则生成 STR 草稿等待人工复核。
  2. T+1 汇总到监管报送批次,按《非银行支付机构条例》相关要求报送人行与外管。
  3. 审计日志永久保留,保留期至少 5 年。

一笔简单的 100 元充值,完整旅程涉及五个阶段、约 15 个关键动作、至少 4 套不同的不变量(幂等、借贷、清算、监管)。每个阶段都可能失败,每种失败都要有对应的补偿路径。这就是”金融工程比普通后端难”的直观证据。

本系列每一篇都会围绕这张旅程图上的某一段展开:第 9 篇讲网关、第 3 篇讲分录、第 11 篇讲清算、第 23 篇讲对账、第 21 篇讲监管报送。读完 25 篇,你会对这张图上每一个小方格都了如指掌。


二、分类学:把金融科技系统拆成四体

25 篇内容多,若不分层,读者会被”账务、支付、清算、撮合、风控、反洗钱、征信”这些词砸晕。我们把整个领域拆成四体

2.1 对账体(Ledger / Accounting Core)

把”钱的状态”固化为不可篡改事实的系统。它是整个金融公司的真相源(source of truth),一切对外报表、对监管报送、对用户展示的余额,都出自它。

关键词:复式记账、科目体系、分录(journal entry)、试算平衡、日终结账、余额物化、对账差错处理。

典型系统:银行核心(core banking)、支付公司总账、交易所账务引擎、记账中台。

这个体的特征:写多读重、强一致、单点账户热点、日切窗口敏感。工程难点集中在”如何让每日万亿级分录仍然满足借贷相等”,以及”热点账户(平台手续费账户、大商户收款账户)如何不成为单点瓶颈”。本系列会在第 4 篇给出分片与热点治理的具体方案。

本系列覆盖:第 2、3、4、5、23 篇。

2.2 支付体(Payment / Clearing / Settlement)

把”钱在机构之间移动”这件事做成一张网的系统。它在对账体之上,负责路由、报文、清算、结算与跨境。

关键词:收单、发卡、聚合支付、支付网关、卡组织、ISO 8583、ISO 20022、清算、结算、CNAPS、CIPS、Fedwire、TARGET2、SWIFT、CBDC、代理行。

典型系统:支付宝收银台、微信支付商户平台、银联 CUPS、第三方支付网关、跨境汇款、央行大小额系统、稳定币发行与赎回。

这个体的特征:长链路、多机构协同、报文标准繁多、对账周期天级。工程难点集中在”链路中任一节点失败后,如何把钱不丢不重地还原到一致状态”,以及”如何用有限的幂等键和补单机制覆盖无限种失败组合”。

本系列覆盖:第 6、7、8、9、10、11、12、13、14 篇。

2.3 交易体(Exchange / Matching / Market Data)

把”价格发现 + 头寸变更”做成一个低延迟、高并发、强一致的系统。与支付体的不同在于:一笔报单进入撮合引擎,不是为了改变一个余额,而是为了发现一个价格;但成交之后,依然要通过对账体落账。

关键词:订单簿、撮合算法、价格优先时间优先、行情分发、做市、FIX、ITCH/OUCH、证券登记结算、DvP、PvP。

典型系统:证券交易所、期货交易所、加密货币交易所、做市系统、订单管理系统(OMS)、执行管理系统(EMS)。

这个体的特征:极低延迟、极高并发、确定性回放、风险实时计算。工程难点在于”用单线程撮合核心 + 外围并行化”的取舍,以及”如何在微秒级延迟下仍然完成盘前/盘中风控(自成交防护、熔断、涨跌停、前端额度)“。

本系列覆盖:第 15、16、17、18 篇。

2.4 风控合规体(Risk / Compliance)

横跨对账、支付、交易三体,负责”这笔交易/客户能不能做”这个判断。分实时风控(交易毫秒级拦截)、批量风控(离线画像、评分卡)、合规监测(反洗钱、反欺诈、制裁筛查)、信用风险(评级、违约)。

关键词:规则引擎、特征平台、决策流、黑产对抗、设备指纹、关系图谱、KYC、AML、STR/SAR、评分卡、巴塞尔协议。

这个体的特征:跨时序(实时拦截 + 离线画像)、跨数据源(交易流 + 行为流 + 第三方征信 + 名单库)、强审计(拒绝必须可解释)。工程难点在”特征一致性(实时链路与离线训练特征口径一致)“、”规则/模型组合决策的可解释性”以及”监管要求的可审计日志”。

本系列覆盖:第 19、20、21、22 篇。

2.5 横切关注点:可靠性与未来

金融级可靠性(两地三中心、单元化、RPO/RTO、灰度发布)是所有四体的共同约束,单独成篇;行业未来趋势(AI 风控、稳定币、开放银行、Web3 合规)作为展望。

本系列覆盖:第 24、25 篇。

2.6 四体之间的接口:事件、报文、指令

四体之间并不是 REST API 式的松耦合调用,而是以事件报文串起来:

下面这张表汇总”四体之间谁找谁、走什么接口、有没有同步要求”,贯穿本系列所有后续章节:

发起方 接收方 载体 同步性 失败处理 相关章节
支付体 对账体 记账事件 异步(事务消息) 重试+幂等+对账差错 5、23
对账体 监管 报送文件 批处理(T+1) 人工复核 21
对账体A 对账体B(跨机构) 清算报文 半同步 冲正再发 11、12
交易体 对账体 成交回报 近实时 重放 15、16
风控体 支付体 决策 RPC 同步 超时降级 19
风控体 监管 可疑报告 批处理 人工复核 21
合规体 支付体 名单/限额 订阅推送 安全默认(拒绝) 21

设计要点:同步调用越少越好,资金相关的调用几乎都应异步化 + 事件溯源;越靠近用户的链路(风控决策)才允许同步。这是金融系统与一般互联网业务在架构取舍上的一个显著差异。


三、一张大图:25 篇与数据流

先说数据流方向。一笔普通支付从用户到监管走过的路是:

用户 → 商户/前端 → 支付网关 → 风控决策 → 账务记账
     → 清算(机构间轧差)→ 结算(资金实际划拨)
     → 总账(对账体终局状态)→ 监管报送

一笔证券交易走过的路是:

客户 → 券商 OMS → 交易所撮合 → 行情发布
     → 清算所(净额/全额)→ 登记结算(DvP)
     → 券商账务 → 托管银行 → 监管报送

两条链路在”账务 + 清算 + 监管”三段上形状相似,差别在中段的”路由 vs 撮合”。把它画成分层图,每一层注明对应的本系列文章:

flowchart TB
    subgraph 用户接入层
        U1[用户/商户 APP]
        U2[券商客户端]
    end
    subgraph 接入网关层
        G1[支付网关<br/>第 9 篇]
        G2[OMS/FIX 网关<br/>第 17 篇]
    end
    subgraph 核心引擎层
        P1[收单/路由<br/>第 7、8 篇]
        E1[撮合引擎<br/>第 16 篇]
        R1[实时风控<br/>第 19、20 篇]
    end
    subgraph 账务层
        L1[复式记账<br/>第 3 篇]
        L2[账务数据库<br/>第 4 篇]
        L3[金额/币种模型<br/>第 2 篇]
        L4[幂等与事务<br/>第 5 篇]
    end
    subgraph 清结算层
        C1[清算与结算<br/>第 11 篇]
        C2[央行支付系统<br/>第 12 篇]
        C3[跨境代理行<br/>第 13 篇]
        C4[证券登记结算<br/>第 18 篇]
        C5[CBDC/稳定币<br/>第 14 篇]
    end
    subgraph 合规与监管
        K1[KYC/AML<br/>第 21 篇]
        K2[信用风险<br/>第 22 篇]
        K3[监管报送]
    end
    subgraph 基础设施
        B1[可靠性<br/>第 24 篇]
        B2[对账系统<br/>第 23 篇]
        B3[订阅计费<br/>第 10 篇]
    end

    U1 --> G1
    U2 --> G2
    G1 --> R1
    G2 --> R1
    R1 --> P1
    R1 --> E1
    P1 --> L1
    E1 --> L1
    L1 --> L2
    L2 --> C1
    C1 --> C2
    C1 --> C3
    C1 --> C4
    C1 --> C5
    L2 --> B2
    L2 --> K1
    K1 --> K3
    K2 --> K3
    C2 --> K3
    L3 -.支撑.-> L1
    L4 -.支撑.-> L1
    B1 -.横切.-> L2
    B1 -.横切.-> E1
    B1 -.横切.-> C2
    B3 -.商业化.-> L1

如果你更习惯阅读静态图,下面这张 SVG 用仓库深色主题重画了同一套分层:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1100 720" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="13">
  <rect width="1100" height="720" fill="#2d333b"/>
  <style>
    .box{stroke-width:1.5;fill:#22272e}
    .lbl{fill:#adbac7}
    .hdr{fill:#adbac7;font-weight:bold;font-size:14px}
    .arrow{stroke:#768390;stroke-width:1.4;fill:none;marker-end:url(#a)}
    .ghost{stroke:#539bf5;stroke-dasharray:4 3;stroke-width:1.2;fill:none;marker-end:url(#a)}
  </style>
  <defs>
    <marker id="a" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto">
      <path d="M0,0 L10,5 L0,10 z" fill="#768390"/>
    </marker>
  </defs>

  <text x="20" y="30" class="hdr">用户接入层</text>
  <rect class="box" x="20" y="40" width="200" height="50" stroke="#388bfd"/>
  <text class="lbl" x="30" y="62">用户 / 商户 APP</text>
  <text class="lbl" x="30" y="80" font-size="11">Web / 小程序 / SDK</text>
  <rect class="box" x="240" y="40" width="200" height="50" stroke="#388bfd"/>
  <text class="lbl" x="250" y="62">券商 / 机构客户端</text>
  <text class="lbl" x="250" y="80" font-size="11">OMS / EMS</text>

  <text x="20" y="120" class="hdr">接入网关层</text>
  <rect class="box" x="20" y="130" width="200" height="50" stroke="#a371f7"/>
  <text class="lbl" x="30" y="152">支付网关(第 9 篇)</text>
  <text class="lbl" x="30" y="170" font-size="11">路由 / 限流 / 签名</text>
  <rect class="box" x="240" y="130" width="200" height="50" stroke="#a371f7"/>
  <text class="lbl" x="250" y="152">FIX / 行情网关(第 17 篇)</text>
  <text class="lbl" x="250" y="170" font-size="11">订单 / 回报</text>

  <text x="20" y="210" class="hdr">核心引擎层</text>
  <rect class="box" x="20" y="220" width="200" height="55" stroke="#3fb950"/>
  <text class="lbl" x="30" y="244">收单 / 路由(第 7、8 篇)</text>
  <text class="lbl" x="30" y="262" font-size="11">卡组织 / 三方支付</text>
  <rect class="box" x="240" y="220" width="200" height="55" stroke="#3fb950"/>
  <text class="lbl" x="250" y="244">撮合引擎(第 16 篇)</text>
  <text class="lbl" x="250" y="262" font-size="11">价格优先 时间优先</text>
  <rect class="box" x="460" y="220" width="220" height="55" stroke="#f0883e"/>
  <text class="lbl" x="470" y="244">实时风控(第 19、20 篇)</text>
  <text class="lbl" x="470" y="262" font-size="11">规则 / 模型 / 决策流</text>

  <text x="20" y="305" class="hdr">账务层</text>
  <rect class="box" x="20" y="315" width="160" height="60" stroke="#f0883e"/>
  <text class="lbl" x="30" y="340">复式记账(第 3 篇)</text>
  <text class="lbl" x="30" y="358" font-size="11">分录 / 试算平衡</text>
  <rect class="box" x="200" y="315" width="160" height="60" stroke="#f0883e"/>
  <text class="lbl" x="210" y="340">账务数据库(第 4 篇)</text>
  <text class="lbl" x="210" y="358" font-size="11">分片 / 热点账户</text>
  <rect class="box" x="380" y="315" width="160" height="60" stroke="#f0883e"/>
  <text class="lbl" x="390" y="340">金额模型(第 2 篇)</text>
  <text class="lbl" x="390" y="358" font-size="11">精度 / 币种 / 舍入</text>
  <rect class="box" x="560" y="315" width="160" height="60" stroke="#f0883e"/>
  <text class="lbl" x="570" y="340">幂等事务(第 5 篇)</text>
  <text class="lbl" x="570" y="358" font-size="11">SAGA / TCC / 对账</text>

  <text x="20" y="405" class="hdr">清结算层</text>
  <rect class="box" x="20" y="415" width="170" height="60" stroke="#539bf5"/>
  <text class="lbl" x="30" y="440">清算 结算(第 11 篇)</text>
  <text class="lbl" x="30" y="458" font-size="11">净额 / 全额 / T+N</text>
  <rect class="box" x="210" y="415" width="180" height="60" stroke="#539bf5"/>
  <text class="lbl" x="220" y="440">央行系统(第 12 篇)</text>
  <text class="lbl" x="220" y="458" font-size="11">CNAPS CIPS Fedwire</text>
  <rect class="box" x="410" y="415" width="170" height="60" stroke="#539bf5"/>
  <text class="lbl" x="420" y="440">跨境(第 13 篇)</text>
  <text class="lbl" x="420" y="458" font-size="11">代理行 nostro/vostro</text>
  <rect class="box" x="600" y="415" width="180" height="60" stroke="#539bf5"/>
  <text class="lbl" x="610" y="440">证券结算(第 18 篇)</text>
  <text class="lbl" x="610" y="458" font-size="11">DvP / 中证登 / DTCC</text>
  <rect class="box" x="800" y="415" width="180" height="60" stroke="#539bf5"/>
  <text class="lbl" x="810" y="440">CBDC 稳定币(第 14 篇)</text>
  <text class="lbl" x="810" y="458" font-size="11">双层运营 / 链上清算</text>

  <text x="20" y="505" class="hdr">合规 / 监管</text>
  <rect class="box" x="20" y="515" width="200" height="55" stroke="#f85149"/>
  <text class="lbl" x="30" y="540">KYC / AML(第 21 篇)</text>
  <text class="lbl" x="30" y="558" font-size="11">STR / SAR / FATF</text>
  <rect class="box" x="240" y="515" width="200" height="55" stroke="#f85149"/>
  <text class="lbl" x="250" y="540">信用风险(第 22 篇)</text>
  <text class="lbl" x="250" y="558" font-size="11">评分卡 / 巴塞尔 III</text>
  <rect class="box" x="460" y="515" width="220" height="55" stroke="#f85149"/>
  <text class="lbl" x="470" y="540">监管报送</text>
  <text class="lbl" x="470" y="558" font-size="11">数据驻留 / 审计留痕</text>

  <text x="20" y="600" class="hdr">基础设施与横切</text>
  <rect class="box" x="20" y="610" width="220" height="55" stroke="#adbac7"/>
  <text class="lbl" x="30" y="635">金融级可靠性(第 24 篇)</text>
  <text class="lbl" x="30" y="653" font-size="11">两地三中心 / 单元化</text>
  <rect class="box" x="260" y="610" width="220" height="55" stroke="#adbac7"/>
  <text class="lbl" x="270" y="635">对账系统(第 23 篇)</text>
  <text class="lbl" x="270" y="653" font-size="11">日切 / 差错 / 资金对账</text>
  <rect class="box" x="500" y="610" width="220" height="55" stroke="#adbac7"/>
  <text class="lbl" x="510" y="635">订阅计费(第 10 篇)</text>
  <text class="lbl" x="510" y="653" font-size="11">计量 / 账单 / 多国税务</text>
  <rect class="box" x="740" y="610" width="240" height="55" stroke="#adbac7"/>
  <text class="lbl" x="750" y="635">总览与展望(第 1、25 篇)</text>
  <text class="lbl" x="750" y="653" font-size="11">本文 / AI / Web3</text>

  <path class="arrow" d="M120,90 L120,130"/>
  <path class="arrow" d="M340,90 L340,130"/>
  <path class="arrow" d="M120,180 L570,220"/>
  <path class="arrow" d="M340,180 L570,220"/>
  <path class="arrow" d="M570,275 L120,315"/>
  <path class="arrow" d="M570,275 L280,315"/>
  <path class="arrow" d="M280,375 L105,415"/>
  <path class="arrow" d="M280,375 L300,415"/>
  <path class="arrow" d="M105,475 L105,515"/>
  <path class="ghost" d="M460,355 L570,355"/>
  <path class="ghost" d="M640,355 L700,355"/>
</svg>

两张图传达同一件事:四体之间不是并列,而是栈式。上层的支付和交易引擎,最后都要落到对账体这一层真相;风控合规体横切每一层;可靠性、对账、计费是横跨整个栈的基础设施。


四、中国 vs 国际基础设施速览

如果你在一家只服务国内用户的公司工作,可能从未碰过 SWIFT 报文;如果你在跨境公司,会发现国内清算与国际清算的术语几乎是两个世界。下表给出一份最小对照,后续专题会在第 7、11、12、13 篇展开。

4.1 大额/跨行清算

功能 中国 美国 欧元区 跨境
本币大额实时 CNAPS HVPS(大额) Fedwire、CHIPS TARGET2、EURO1
本币小额批量 CNAPS BEPS(小额) ACH(NACHA) STEP2
本币即时零售 网联、IBPS 超级网银 FedNow、RTP(TCH) TIPS、SCT Inst
跨境本币 CIPS(人民币跨境)
跨境报文通道 SWIFT / SWIFT gpi
外汇清算 CFETS(人民币对外汇) CLS CLS CLS

读图要点:

4.2 卡组织与零售支付

维度 中国典型 国际典型
卡组织 银联(UnionPay),Visa/Master 外卡收单 Visa、Mastercard、American Express、JCB、Discover
移动支付入口 支付宝、微信支付 Apple Pay、Google Pay(套皮卡);Venmo、Cash App(账户);欧洲 iDEAL、SEPA Instant
监管 中国人民银行 + 国家外汇管理局 + 银联清算 各国央行 + 卡组织规则 + PCI DSS
费率典型 借记卡封顶、贷记卡分档,三方支付普遍 0.6% 左右 美国 Interchange 1.5%–3%,欧盟 IFR 上限 0.2%/0.3%

支付宝 / 微信支付与 Visa / Mastercard 最大的不同是:

这种差异直接决定了接入复杂度和成本结构。第 7 篇会拆卡组织链路,第 8 篇会拆支付宝微信接入。

4.3 资本市场基础设施

功能 中国 美国 欧元区
证券登记结算 中证登(CSDC) DTCC(DTC/NSCC/FICC) Euroclear、Clearstream
主要交易所 上交所、深交所、北交所、港交所 NYSE、Nasdaq Euronext、Deutsche Börse、LSE
衍生品 中金所、上期所、郑商所、大商所 CME、ICE Eurex
典型结算周期 A 股 T+1(2025 起部分 T+0 探讨) 美股 T+1(2024 年起) 欧股 T+2 过渡 T+1
跨境通道 沪深港通、债券通、基金互认 ADR、QFI UCITS

第 15–18 篇会把交易体系从撮合、行情到结算讲透。

4.4 一张快速查询表:术语翻译

跨境工作最痛的不是英文,是术语不对齐。下表是本系列后续会频繁出现的中英文术语速查:

中文 英文 一句话解释
清算 clearing 确认双方债权债务净额的过程
结算 settlement 资金实际划拨完成
全额结算 RTGS(Real-Time Gross Settlement) 每笔逐笔实时全额划拨
净额结算 DNS(Deferred Net Settlement) 日终轧差后净额划拨
券款对付 DvP(Delivery versus Payment) 证券与资金同步交付
款款对付 PvP(Payment versus Payment) 两种货币同步交付
发卡行 issuer 持卡人账户所在银行
收单行 acquirer 商户账户所在银行
代理行 correspondent bank 跨境清算中的对手方银行
同业往来账 nostro/vostro “我们的账/你们的账”
备付金 reserve / client funds 支付机构存放客户资金的专户
对账 reconciliation 两方或多方账目一致性核对
冲正 reversal 用反向分录抵消错账
分录 journal entry 一笔会计记录,含至少一借一贷
试算平衡 trial balance 借贷合计相等的验证
报文 message 金融指令的结构化表示(ISO 8583/20022)
头寸 position 某时点的持仓或余额
敞口 exposure 面对某对手方或市场的风险额
净敞口 net exposure 相互抵扣后的剩余风险
保证金 margin 衍生品交易占用的资金
穿透 look-through 监管要求披露最终实际受益人

把这张表收藏起来。后续章节里,“清算”与”结算”这对术语最容易搞混,请特别留意。


五、绿地项目视角:从零搭一个支付 + 账务 + 风控公司

假设你现在要创建一家小型金融科技公司,做国内企业收付款(B2B 聚合支付 + 资金服务),目标 18 个月内拿下牌照并接入央行清算。你应该按什么顺序建系统?下面是一个务实的最小可用版本,刻意不先讲牌照问题,只讲工程顺序。

5.1 第 0 阶段:确定”真相的形状”

在写第一行业务代码之前,必须先回答四个问题:

  1. 记账单位是什么?——人民币到分,还是到厘?未来要不要接入美元、数字人民币?精度如何统一?(第 2 篇)
  2. 科目体系是什么?——用户余额、商户待结算、平台手续费、备付金(央行专户)、中间过渡户、汇差科目、冲正科目。草图至少 20 个科目起。(第 3 篇)
  3. 不变量有哪些?——任一时刻 SUM(debits) = SUM(credits);任一账户 balance = opening_balance + SUM(journal_lines);备付金账户余额 = 客户待结算合计。
  4. 事件模型是什么?——业务事件(下单、支付、退款)→ 记账事件(借贷分录)→ 清算事件(机构间轧差)→ 结算事件(资金实际划拨)。

5.2 第 1 阶段:对账体先行(月 0–3)

先把账务引擎和对账系统建起来,哪怕先不接外部支付:

没有对账的支付系统不配碰钱。第 23 篇会展开对账工程的全部细节。

5.3 第 2 阶段:支付接入(月 3–9)

拿到初步牌照或以持牌支付公司作为上游后:

5.4 第 3 阶段:风控与合规(与第 2 阶段并行)

风控不是上线前一周加的”拦截层”,它必须从第 1 行交易代码开始就设计好决策点。

5.5 第 4 阶段:清结算与跨境(月 9–18)

5.6 第 5 阶段:横切基础设施(贯穿全程)

5.7 一句话总结

先建对账体,再建支付体,风控合规贯穿,交易体视业务需要再加。如果你的公司不做证券、不做自营撮合,第 15–18 篇可以完全跳过。

5.8 一个典型的 18 个月时间线

把前述阶段落到月度颗粒度,便于与业务方沟通交付预期:

主线 里程碑 风险项
M0–M1 团队与合规立项 科目表初稿、技术栈选型、牌照路径敲定 合规路径不通会推翻技术方案
M2–M3 对账体 MVP 分录表、物化余额、日切对账跑通 科目遗漏,后期返工
M4–M5 支付接入 MVP 首家上游支付通道联调通过,回调入账 上游沙箱与生产差异大
M6 风控 v0 限额、黑名单、设备指纹上线 规则冷启动无数据
M7–M8 对账系统 与上游、银行、内部三方对账日常化 差错处理没预案
M9 牌照与备付金账户 央行/监管现场检查通过 技术与合规文档缺口
M10–M12 多通道 + 结算分离 接入第二、三家上游,清结算分离 路由热切换演练不足
M13–M15 金融级可靠性 同城双活演练、异地灾备切换演练 RTO/RPO 未经真实测试
M16–M18 扩展(跨境/分账/计费) 按业务优先级展开 过早跨境导致成本暴涨

这张表里最容易被忽略的是 M6–M8 的”冷启动期”:风控模型缺数据、对账差错没人处理、监管报送字段不齐。很多公司在这三个月里出事。提前规划影子账(shadow ledger)与人工干预台账能显著降低风险。


六、完整阅读地图

下表给出 25 篇文章的 slug、标题、一句话摘要与推荐阅读顺序。推荐顺序有三种:

# slug 标题 一句话摘要 推荐顺序
01 01-intro 金融科技工程全景 本文。系统分类与阅读地图。 L / P / E / R
02 02-money-model 钱的建模 金额精度、币种、会计单位、多语言金额的工程建模。 L / P / E / R
03 03-double-entry 复式记账工程化 科目、分录、余额、试算平衡在代码里长什么样。 L / P / E / R
04 04-ledger-db 账务数据库设计 TiDB/OceanBase/PG 下的分片、索引、热点账户治理。 L / P
05 05-idempotency-txn 幂等、事务与一致性 SAGA、TCC、对账补偿在金融系统的取舍。 L / P / E
06 06-payment-overview 支付系统全景 收单、发卡、聚合、跨境、B2B、C2C 一次看完。 L / P
07 07-card-payment 卡组织收单链路 银联/Visa/Mastercard、ISO 8583、ISO 20022 迁移。 L / P
08 08-alipay-wechatpay 支付宝、微信支付接入 服务商模式、预授权、分账、退款、对账实战。 L / P
09 09-payment-gateway 支付网关设计 路由、限流、补单、异步通知、签名与防重放。 L / P
10 10-billing-subscription 订阅与计费系统 用量计量、账单、发票、出海 VAT/GST。 L / P
11 11-clearing-settlement 清算、结算与资金归集 T+0/T+1、NDS、PvP/DvP 的工程含义。 L / P / E
12 12-central-banks 央行支付系统 CNAPS、CIPS、Fedwire、TARGET2、SWIFT gpi。 L / P
13 13-cross-border 跨境支付工程 代理行、nostro/vostro、汇率锁定、对手方风险。 L / P
14 14-digital-currency 数字人民币、稳定币与 CBDC 双层运营、离线支付、链上/链下清算。 L / P
15 15-exchange-arch 交易所核心系统架构 撮合、行情、做市、风控、清算五大件。 L / E
16 16-matching-engine 撮合引擎实现 价格时间优先、状态机、低延迟工程。 L / E
17 17-market-data 行情分发 MBP/MBO、快照+增量、组播/TCP、FIX/ITCH。 L / E
18 18-security-settlement 证券登记结算 中证登、DTCC、Euroclear、T+1、DvP。 L / E
19 19-risk-engine 实时风控引擎 规则、特征、模型、决策流、Flink/Spark。 L / R
20 20-fraud-detection 反欺诈 设备指纹、关系图谱、行为序列、黑产对抗。 L / R
21 21-aml-kyc 反洗钱与 KYC 客户尽调、交易监测、STR/SAR、FATF。 L / R
22 22-credit-risk 信用风险 评分卡、违约预测、巴塞尔 III。 L / R
23 23-reconciliation 对账系统工程 账单、总账、资金对账、差错处理全流程。 L / P / E
24 24-reliability-dr 金融级可靠性 两地三中心、单元化、RPO/RTO、灰度。 L / P / E / R
25 25-outlook 金融科技工程展望 AI 风控、稳定币、开放银行、Web3 合规。 L

6.1 针对支付工程师的最短路径

如果你就是做支付网关/聚合支付的,时间有限,建议顺序:

01 → 02 → 03 → 05 → 06 → 09 → 07 或 08 → 11 → 23 → 24

其中第 23 篇(对账)不要跳,它是支付工程师被问得最多的面试题,也是上线后出事最多的系统。

6.2 针对交易所工程师的最短路径

01 → 02 → 03 → 15 → 16 → 17 → 18 → 11 → 24

撮合工程师经常低估清算结算复杂度,第 11、18 篇请认真读。

6.3 针对风控工程师的最短路径

01 → 02 → 05 → 09 → 19 → 20 → 21 → 22 → 23

风控工程师对账务和支付链路的理解深度,决定了规则的质量。

6.4 针对数据库/基础设施工程师的最短路径

如果你是 DBA、SRE、数据库内核或存储工程师,想理解”金融业务对数据库的特殊要求”:

01 → 02 → 03 → 04 → 05 → 11 → 23 → 24

这条路径会让你看到金融场景如何把”一致性、持久化、审计、窗口批处理”这几件事推向工程极限。相比典型的互联网业务,金融业务会逼出一些在普通 OLTP 场景不必考虑的需求——比如”日切窗口内的读写隔离”、“单账户热点写”、“强一致的跨分片借贷分录”。

6.5 针对架构师/技术 Leader 的最短路径

如果你负责一个金融科技中台,需要做跨团队协同的架构决策:

01 → 02 → 03 → 06 → 11 → 19 → 23 → 24 → 25

这条路径偏重”取舍”与”组织边界”,而非具体的代码实现。第 25 篇展望部分会讨论未来 3–5 年可能改变架构假设的几项变化(稳定币主流化、开放银行 API、AI 风控、量子安全迁移),请在做长期规划时纳入考量。


七、与仓库既有系列的交叉引用

本系列不会重复造轮子,涉及底层基础设施时会直接指向仓库中的相关系列:

7.1 数据库与分布式数据库

7.2 分布式系统

7.3 身份与访问管理

7.4 可观测性

7.5 开源与供应链

阅读建议:把本系列当成一部”金融视角的索引”,底层技术细节请循引用深入各专题系列。这样既避免重复,也保证了本系列的篇幅聚焦在”金融业务如何塑造系统设计”这个主线上。

7.6 一张跨系列依赖矩阵

便于你对照阅读,下表给出本系列各篇与仓库其他系列的主要依赖关系:

本系列章节 强依赖 弱依赖
第 3 篇 复式记账 ../db/(事务基础)
第 4 篇 账务数据库 ../db/, ../db-frontier/ ../distributed/
第 5 篇 幂等事务 ../distributed/ ../db/
第 9 篇 支付网关 ../observability/ ../iam/(商户身份)
第 12 篇 央行系统 ../opensource/(闭源 SDK)
第 16 篇 撮合引擎 ../distributed/ ../os/(若已建立)低延迟调优
第 19 篇 实时风控 ../distributed/(流处理) ../db-frontier/(向量特征)
第 21 篇 KYC/AML ../iam/
第 24 篇 可靠性 ../distributed/, ../observability/ ../iam/(双人复核权限)

“强依赖”意味着若完全没读过相应系列,可能会错过细节;“弱依赖”意味着相关章节只是点到即止,读过更佳。


八、本系列的写作原则

在进入正文之前,有几条本系列共同遵循的写作原则,交代给读者,也作为自我约束:

  1. 以不变量为纲:每一篇围绕”这个系统要守住哪些业务不变量”组织,而非围绕”这个技术栈有什么新特性”。技术栈是工具,不变量才是第一位。
  2. 真实胜过理论:每一篇至少引用一个真实公司或真实事件(中国/国际至少各一个),避免只讲抽象模型。
  3. 合规作为约束出现:不堆砌法条,而是指出”这一行代码是为了满足某条监管”。
  4. 工程坑点不回避:每一篇的”工程坑点”小节写的是作者或同行踩过的真实坑,不是从教科书里抄的”常见问题”。
  5. 选型给建议但不绝对:每个选型小节只表达”在某类约束下推荐什么”,不声称”某某是银弹”。金融系统没有银弹。
  6. 数据不伪造:金额、账号、监管编号要么来自公开资料,要么明确标注为”示例”。
  7. 时间锚点:文本以 2026 年 Q2 为写作时点;若某项基础设施在此前后发生过明确变更(例如 ISO 20022 迁移节奏、A 股 T+1 改革),会标注时间。
  8. 交叉引用不重复造轮子:涉及分布式共识、数据库事务、IAM、观测性等底层内容时,直接指向仓库中的相关系列,本系列只保留”金融特有”的那一层。

如果你发现某一篇偏离上述原则,欢迎在仓库里开 issue 指正。


九、工程坑点(总览级别)

每篇正文都会有自己的”工程坑点”小节;这里先列出任何金融系统都会踩的 10 个总览级坑点,后续会被逐一展开。

  1. 用浮点数存金额:上线半年后爆发,尾差难以追溯。第 2 篇。
  2. 直接 UPDATE balance:没有审计轨迹,监管一查全盘崩塌。第 3、4 篇。
  3. 业务主键 = 数据库自增 ID:跨机房同步、分库分表、冲正再插入都会出事。第 4 篇。
  4. 幂等 key 依赖时间窗:重试晚一点就穿透。第 5 篇。
  5. 异步通知不重放、不幂等:对账必定有差错。第 9、23 篇。
  6. 清算时点 = 记账时点:在途资金被当成实际到账,风险敞口巨大。第 11 篇。
  7. 把所有币种装进一列 decimal(18,2):接日元、比特币、稳定币时全部重构。第 2 篇。
  8. 风控规则硬编码:任何一次业务规则调整都要发版,事故率高。第 19 篇。
  9. KYC 数据与业务库同库:违反最小权限与数据驻留,出海直接卡审。第 21 篇。
  10. 两地三中心未做资金路径演练:切换时资金路径不闭合,差错积压。第 24 篇。

下面给出一份”金融系统新人最容易违反的 20 条单句守则”,可以直接当 code review checklist:

  1. 任何金额字段必须是 decimal 或整数 + scale,不允许 float/double;
  2. 任何资金相关的表必须 append-only,错账用冲正;
  3. 任何外部调用必须带幂等键(idempotency key),且键的有效期覆盖业务 SLA;
  4. 任何异步通知必须按”收到即 ACK,处理走本地事件”的两段式,保证重放安全;
  5. 任何跨系统流程必须有补偿分支(SAGA 反向动作),不能只写正向;
  6. 任何签名接口必须防重放(时间戳 + nonce + 服务端去重);
  7. 任何客户数据落盘必须考虑数据驻留区域,不能”默认全球复制”;
  8. 任何涉及资金的发布必须灰度,且可回滚(真正回滚过一次);
  9. 任何金额展示必须标币种,不允许”裸数字 100”;
  10. 任何定时任务必须考虑跨日、跨月、跨时区;
  11. 任何余额查询必须区分”可用余额/冻结余额/在途余额”,不允许合一展示;
  12. 任何汇率应用点必须记录使用汇率与时间戳,不允许”现查现用”不留痕;
  13. 任何手续费计算必须有”谁付、从哪扣、走哪个科目”的三要素记录;
  14. 任何批量文件处理必须校验文件完整性(行数、金额合计、哈希);
  15. 任何对外接口必须有压测报告和降级预案,不能”先上线再说”;
  16. 任何风控规则必须能在不发版的情况下热更新;
  17. 任何账户冻结必须有”由谁发起、依据是什么、何时解冻”的审计字段;
  18. 任何 KYC 数据的访问必须有”按字段最小可见”的权限切分;
  19. 任何对账差异必须有负责人、有 SLA、有结单流程;
  20. 任何”仅此一次的人工运维脚本”必须留档,并进入下一次常规能力规划。

这些守则看起来啰嗦,但正是”一般工程师不会想到”的那几条里,藏着下一次事故。


十、选型与落地建议(总览级别)

以下建议是后续各篇讨论的前置共识,放在这里以免后面每篇重复:

  1. 语言:对账核心建议 Java / Go / Rust 三选一,避免动态语言(精度 bug 难排查)。低延迟撮合建议 C++/Rust。风控规则层可用 Groovy/Kotlin/Lua 脚本化。
  2. 数据库:账务核心首选强一致分布式数据库(TiDB、OceanBase、Spanner 系)或单机 PG + 严格分片。避免 MySQL 主从异步作为唯一真相源。
  3. 消息队列:金融事件总线建议 Kafka + exactly-once 语义或 Pulsar 事务消息;不要用”at-most-once”的队列作为资金事件通道。
  4. 时钟:系统内部统一使用 UTC,业务展示按时区转换。关键路径用 NTP + PTP 做到毫秒内对齐;撮合核心在微秒级场景用 PTP + 硬件时钟。
  5. 密钥与签名:HSM(硬件安全模块)是硬要求,不要把私钥放在配置文件里。金融级签名 + 防重放必须到每一个外部接口。
  6. 人员与流程:生产资金系统的发布必须有”双人复核 + 灰度 + 可回滚”。这是监管要求,不是最佳实践。
  7. 环境隔离:生产、灰度、准生产(影子)、测试、开发五级环境,生产数据不得下放;支付通道的生产沙箱与真实生产密钥必须物理隔离。
  8. 密钥轮换:对外签名密钥与对内数据加密密钥都要有明确的轮换周期(通常 1–2 年),且轮换过程要做到”新旧并存的重叠窗口 + 平滑切换”。
  9. 时间同步:所有核心机房对齐同一 NTP 层级,撮合场景再叠加 PTP;对账系统对时间戳来源(客户端时间 vs 服务端时间 vs 上游回单时间)必须有统一规范。
  10. 容灾演练频率:同城双活每月一次切换演练、异地灾备每季度一次全流程拉起。没演练过的灾备 = 不存在的灾备

再往前一步,组织结构上也存在几条”金融特有”的共识:

这些实践在非金融公司可能被视为”官僚”,但它们是金融监管对任一家持牌机构的最低要求,且统计上确实降低了内部欺诈与误操作概率。本系列会在第 24 篇把”组织工程(organizational engineering)“与”技术工程”一起讨论。


十一、阅读本系列的小建议

  1. 不要跳过第 2 篇:金额模型是整个系列的 ABC。第 3、4、5、7、8、11、13、14 篇全部依赖第 2 篇的精度与币种约定。
  2. 先读骨架,再读分支:第 3、6、11、15、19 篇是五条主干;读懂这五篇,再去看各自下面的细节文章,会清晰得多。
  3. 动手写一张分录表:学复式记账的最快方式是拿一张 Excel,自己把一笔”用户充值 100 元”的事件拆成至少 3 行分录。第 3 篇会给模板。
  4. 合规是约束,不是主角:本系列刻意不把监管条文堆成长篇,而是在每处设计决策旁注明”这一行是为了满足 X”。如果你在做具体项目,仍需找合规同事对齐本地法规。
  5. 跨引用请点链接:凡是出现 ../db/ ../distributed/ 这样的链接,都是”这里的细节在那边系列讲过”的信号。一次深入,下次跳过。
  6. 带着真实业务问题阅读:每读完一章,试着问自己”如果是我们公司的 X 场景,这里的约束落到哪些代码上?“——不动手做一次翻译,读过的东西留存率极低。
  7. 动手写一条冲正:学”为什么不能 UPDATE balance”的最快方法,是故意写一段 UPDATE 代码,让它在分片/幂等/审计三方面同时出事,再用冲正分录把它修回来。这一次体验会胜过十篇论文。
  8. 关注日期与版本:本系列以 2026 年 Q2 为时点,部分基础设施(如 ISO 20022 迁移截止日、A 股结算周期改革)处于过渡期,阅读时请核对你当下的最新状态

希望 25 篇读完之后,你对”金融科技工程”不再是一张模糊的词云,而是一张可以在脑子里索引的地图:看到”清算延迟”你知道去第 11 篇,看到”分录不平”你知道去第 3 篇,看到”央行报文”你知道去第 12 篇,看到”乌龙指”你知道去第 24 篇。

下一篇(第 2 篇)我们从”钱到底是什么数”这个最朴素的问题讲起。


十二、常见误解与快速澄清

系列开篇之际,把几个在面试、团队讨论里反复出现的误解集中澄清一下。这些话题在后续章节会被充分展开,这里先给一个足以防坑的最短回答。

11.1 “有了数据库事务,就不用复式记账了吧?”

不对。数据库事务解决的是单机/单库内多行数据的原子性,复式记账解决的是会计等式恒成立这个业务不变量。两者是正交维度:即使你用最强的事务隔离级别,如果分录本身只记了一边,余额依然错。复式记账是一套”结构性约束”,在它之上才谈得上事务。详见第 3 篇。

11.2 “用区块链就不用对账了吧?”

区块链在”节点之间的账本复制一致性”这一小段上确实可以免对账,但这和金融公司语境下的”对账”不是一回事。真实业务里,对账的对象是:

这几条线只要公司外部还有其他系统存在,对账就永远跑不掉。第 23 篇会专门讲”即使全链路上链,仍然要对账”这一现实。

11.3 “直接用 Redis INCR/DECR 做余额不就够了?”

Redis 的 INCR/DECR 是原子的,但它不是账务。它缺:

Redis 可以做热余额的只读缓存(第 4 篇会讨论),但不能当账务核心。

11.4 “不就是下单扣款两步吗,两阶段提交上就好了?”

2PC 在跨系统协同时的可用性代价和阻塞问题(第三方支付通道 ≠ 你的数据库,无法参与 2PC)使其在金融跨域场景几乎不可用。工业界实际做法是 SAGA + 幂等 + 对账补偿,把原子性从”技术原子”降级为”最终一致 + 可审计 + 可补偿”。第 5 篇会给完整的状态机。

11.5 “风控就是规则引擎 + 黑名单”

规则和黑名单只是风控的”即时拦截层”。完整的风控体系包含特征平台(实时/离线)、模型层(评分卡/XGBoost/图神经网络)、决策流(多规则冲突时如何裁决)、策略回放(新规则上线前的影响评估)、案件中心(人工复核与反馈闭环)。第 19–22 篇会逐层展开。

11.6 “监管文件看不懂,留给合规同学就好”

绝大多数监管条文并不深奥,但它们决定了你字段设计的取舍。举个例子:《个人信息保护法》要求”撤回同意”后可继续进行”履行法定义务所必需”的处理——这意味着你的用户删除功能不能真的把 KYC 记录从库里扫掉,需要”逻辑删除 + 法定保留期”。这一条就能直接改变你的 user 表与 kyc_record 表的隔离策略。工程师不必精读全部法条,但必须理解”这一类约束为什么以这种方式落到代码里”。第 21 篇会给出一份最小法规速查。

11.7 “金融系统不就是慢一点但稳一点的后端吗?”

“慢一点”在零售支付和交易所里是反过来的:

金融系统不是”慢而稳”,而是”在约束条件下追求极致稳,并且该快的地方快到变态”。


十三、本篇要点回顾

  1. 金融科技比普通后端难,不是因为流量大,而是因为不变量多:钱的原子性、监管边界、精度、时间、审计追溯,全部在一条产线上同时生效。
  2. 系统可分为四体:对账体、支付体、交易体、风控合规体,外加可靠性与展望两条横切。25 篇文章逐一展开。
  3. 中国与国际基础设施在清算、报文、卡组织三条链路上结构类似但细节迥异,跨境工作要建立双语速查。
  4. 绿地项目顺序是:先对账体,再支付体,风控合规贯穿,交易体按需。18 个月可以拿下 B2B 聚合支付级别的 MVP。
  5. 本系列的每一篇,都是围绕”识别并守住某一类不变量”展开的。请把每篇的”工程坑点”与”选型建议”当作清单使用。
  6. 金融工程不是”慢而稳的后端”,而是”约束极多的后端”。约束来自业务(钱的守恒)、监管(审计追溯)、技术(低延迟/高一致)的三重交叠。
  7. 真正决定系统质量的往往不是某个”高大上”的技术选型,而是一群”看似琐碎”的工程守则:幂等键、append-only 分录、双人复核、灰度可回滚、备付金隔离、日切对账。这些守则构成了金融系统工程品味的底色。

如果你在阅读过程中发现某一章与你所在公司的实际做法有出入,大概率是场景差异而非对错——金融细分领域多,同一个问题在零售支付、B2B 清结算、证券登记、衍生品结算里可能有截然不同的最佳解。请把本系列当作”方法论脚手架”,而非”标准答案”。


参考资料

中国监管与基础设施

国际基础设施

标准与协议

权威教材与报告

公开事件参考

延伸阅读(书目)

技术与行业博客

标准文档检索入口

把这些链接收藏进浏览器书签栏,后续 24 篇中涉及监管原文的引用几乎全部来自这些入口。


上一篇《金融科技工程》系列首页

下一篇《钱的建模:金额精度、币种、会计单位、多语言金额》

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-04-22 · architecture / fintech

金融科技工程

面向中国工程团队的金融科技系列。从账务底盘、支付、清结算、交易所、风控合规到可靠性与灾备,中国与全球视角并举,讲清楚金融系统在工程落地中的真实挑战。

2026-04-22 · architecture / fintech

【金融科技工程】交易所核心系统架构:撮合、行情、做市、风控、清算

从订单网关到撮合引擎、从 L1/L2/L3 行情到清算与结算,系统梳理证券、期货、加密货币交易所的五大核心子系统;给出低延迟工程技术栈(Disruptor、Kernel Bypass、FPGA)、订单生命周期状态机、主流交易所(NYSE Pillar、Nasdaq INET、上交所新一代、CME Globex、Binance、dYdX v4)对比、以及 Flash Crash 与 Knight Capital 的工程教训。


By .