返回金融系统设计
系统集成与跨切面 · 总结

横切关注点设计

summary/cross-cutting-concerns.md

横切关注点设计

设计日期: 2026-04-14 定位: Week 6 综合演练 — 5个金融系统共享的横切关注点 关联: 支付网关 / 记账引擎 / 风控引擎 / 信贷系统 / 清算结算


一、安全设计

1.1 安全分层

┌──────────────────────────────────────────────┐
│  Layer 1: 网络安全                             │
│  ├── WAF (Web Application Firewall)           │
│  ├── DDoS 防护                                │
│  ├── VPN / 专线(内部通信)                     │
│  └── 网络隔离(DMZ / 内网 / 核心区)            │
├──────────────────────────────────────────────┤
│  Layer 2: 应用安全                             │
│  ├── API 认证(OAuth2 / JWT / mTLS)           │
│  ├── 接口签名验签(RSA / HMAC-SHA256)          │
│  ├── 请求防重放(Nonce + Timestamp)            │
│  ├── 输入校验(防注入)                         │
│  └── 接口限流(令牌桶 / 滑动窗口)              │
├──────────────────────────────────────────────┤
│  Layer 3: 数据安全                             │
│  ├── 传输加密(TLS 1.3)                       │
│  ├── 存储加密(AES-256)                       │
│  ├── 敏感字段脱敏(卡号/身份证/手机)            │
│  ├── 密钥管理(HSM / KMS)                     │
│  └── 数据分类分级                              │
├──────────────────────────────────────────────┤
│  Layer 4: 访问控制                             │
│  ├── RBAC(角色权限)                          │
│  ├── 数据权限(行级/列级)                      │
│  ├── 操作审计(who/when/what)                 │
│  └── 特权操作双人复核                           │
└──────────────────────────────────────────────┘

1.2 各系统安全要点

系统关键安全要求合规标准
支付网关PCI-DSS合规、卡号Token化、签名验签PCI-DSS Level 1
记账引擎数据不可篡改、操作审计、备份加密SOX合规
风控引擎规则保密、模型防逆向、决策日志内部安全策略
信贷系统征信数据保护、利率合规、合同存证个人信息保护法/征信管理条例
清算结算大额资金操作双签、SWIFT安全、对账完整性SWIFT CSP

1.3 密钥管理

┌───────────────────────────────────────┐
│          密钥管理系统 (KMS)             │
│                                        │
│  ┌─────────┐  ┌─────────┐  ┌────────┐ │
│  │ 主密钥   │  │ 数据密钥 │  │ 签名密钥│ │
│  │ (HSM存储)│  │ (加密DB) │  │ (API签名)│ │
│  └─────────┘  └─────────┘  └────────┘ │
│                                        │
│  密钥轮换策略:                         │
│  ├── 主密钥:年度轮换                    │
│  ├── 数据密钥:季度轮换                  │
│  ├── 签名密钥:月度轮换                  │
│  └── 紧急轮换:安全事件触发              │
└───────────────────────────────────────┘

二、可观测性设计

2.1 三大支柱

Metrics(指标监控)

系统关键指标告警阈值
支付网关成功率、P99延迟、通道健康度、TPS成功率<99%→P0
记账引擎记账TPS、试算平衡状态、日终进度不平衡→P0
风控引擎决策延迟P99、拦截率、误杀率P99>100ms→P1
信贷系统放款成功率、逾期率、审批通过率逾期率突增→P1
清算结算清算进度、轧差准确率、头寸水位头寸不足→P0

RED指标(每个服务必须有):

  • Rate: 请求速率(QPS)
  • Error: 错误率(4xx/5xx比例)
  • Duration: 延迟分布(P50/P95/P99)

USE指标(每个资源必须有):

  • Utilization: 资源利用率(CPU/内存/磁盘/连接池)
  • Saturation: 饱和度(队列深度/等待线程数)
  • Errors: 资源错误(OOM/连接超时/磁盘满)

Tracing(链路追踪)

统一 TraceID 贯穿全链路:

  支付请求 [TraceID: abc-123]
    │
    ├─ SpanA: 支付网关.createOrder (12ms)
    │   ├─ SpanB: 风控引擎.evaluate (35ms)
    │   │   ├─ SpanC: 特征提取 (8ms)
    │   │   ├─ SpanD: 规则执行 (12ms)
    │   │   └─ SpanE: 模型推理 (15ms)
    │   ├─ SpanF: 路由引擎.route (5ms)
    │   ├─ SpanG: 通道适配器.call (1200ms)
    │   └─ SpanH: 记账引擎.post (45ms)
    │       ├─ SpanI: 幂等检查 (2ms)
    │       ├─ SpanJ: 分录生成 (8ms)
    │       └─ SpanK: 余额更新 (35ms)
    │
    总耗时: 1297ms

Logging(日志规范)

{
  "timestamp": "2026-04-14T10:30:00.123Z",
  "level": "INFO",
  "service": "payment-gateway",
  "traceId": "abc-123",
  "spanId": "span-001",
  "userId": "U***789",
  "action": "CREATE_PAYMENT",
  "status": "SUCCESS",
  "amount": 100.00,
  "currency": "CNY",
  "channel": "ALIPAY",
  "latencyMs": 1297,
  "extra": {}
}

日志规范:

  • 敏感字段必须脱敏(卡号/身份证/手机/金额视场景)
  • 统一JSON格式
  • 必含TraceID
  • 错误日志必含堆栈

2.2 告警分级

级别定义响应时间通知方式示例
P0资金损失/系统不可用5分钟电话+短信记账不平衡/支付通道全挂/清算失败
P1严重功能受损15分钟短信+企微风控延迟飙升/放款失败率>5%
P2性能下降/部分功能异常1小时企微单通道成功率下降/日终延迟
P3预警/趋势异常4小时邮件资源使用率>80%/逾期率上升趋势

2.3 业务监控大盘

┌─────────────────────────────────────────────────────────┐
│                  金融系统监控大盘                          │
│                                                          │
│  ┌──────────────────┐  ┌──────────────────┐              │
│  │  支付健康度        │  │  资金对账状态     │              │
│  │  成功率: 99.87%   │  │  差异笔数: 3     │              │
│  │  P99: 1.2s       │  │  差异金额: ¥0.03 │              │
│  │  QPS: 12,345     │  │  状态: ✅ 正常    │              │
│  └──────────────────┘  └──────────────────┘              │
│                                                          │
│  ┌──────────────────┐  ┌──────────────────┐              │
│  │  风控效果          │  │  信贷健康度       │              │
│  │  拦截率: 0.23%    │  │  逾期率: 1.2%    │              │
│  │  误杀率: 0.01%    │  │  放款成功: 99.5% │              │
│  │  P99: 38ms       │  │  日放款: ¥2.3亿  │              │
│  └──────────────────┘  └──────────────────┘              │
│                                                          │
│  ┌──────────────────┐  ┌──────────────────┐              │
│  │  清算进度          │  │  记账状态         │              │
│  │  批次: CLR-0414   │  │  TPS: 8,500     │              │
│  │  进度: 100% ✅    │  │  试算平衡: ✅    │              │
│  │  耗时: 1h 42min  │  │  日终: 完成 ✅   │              │
│  └──────────────────┘  └──────────────────┘              │
└─────────────────────────────────────────────────────────┘

三、数据治理

3.1 数据分类分级

级别定义示例处理要求
L4-极敏感泄露即重大损失密钥、密码、完整卡号加密存储+HSM+最小授权
L3-敏感个人隐私数据身份证、手机号、地址加密存储+脱敏展示+审计
L2-内部业务数据交易记录、余额、合同访问控制+审计
L1-公开可公开数据产品说明、费率公示无特殊要求

3.2 数据生命周期

在线存储 (0-6月)
  │  热数据,高频读写
  │  MySQL/PostgreSQL主库
  │
  ├─ 温数据归档 (6月-2年)
  │  │  低频查询
  │  │  读副本/归档库
  │  │
  │  └─ 冷数据归档 (2年-10年)
  │     │  监管要求保留
  │     │  对象存储 (S3/OSS)
  │     │
  │     └─ 销毁 (>10年)
  │        合规销毁+审计记录
  │
  各系统保留期:
  ├── 支付交易: 5年
  ├── 记账凭证: 10年(会计法)
  ├── 风控决策: 3年
  ├── 信贷合同: 合同终止后5年
  └── 清算记录: 5年

3.3 数据质量

维度定义检查方式
完整性必填字段不能为空Schema校验+入库检查
准确性数据反映真实情况对账+交叉验证
一致性跨系统数据一致T+1对账Job
及时性数据及时更新SLA监控+延迟告警
唯一性无重复记录唯一索引+幂等

四、DevOps与发布

4.1 CI/CD流水线

代码提交 → 代码扫描 → 单元测试 → 集成测试 → 安全扫描
    │                                            │
    │         ← 失败反馈 ←                         │
    │                                            │
    └─ 构建镜像 → 部署预发 → 预发验证 → 灰度发布 → 全量发布
                                │
                           回归测试
                           性能测试
                           安全测试

4.2 发布策略

策略适用场景回滚方式
蓝绿发布记账引擎(不能中断)切换流量到旧版本
金丝雀发布支付网关(按流量比例)停止灰度,全量旧版本
滚动发布风控引擎(无状态服务)滚动回退
影子模式ML模型上线(不影响生产)直接关闭影子流量

4.3 金融系统发布特殊要求

发布窗口:
├── 支付网关: 凌晨 2:00-5:00(交易低谷)
├── 记账引擎: 日终完成后(约 6:00-8:00)
├── 风控引擎: 随时(无状态,灰度发布)
├── 信贷系统: 凌晨 3:00-5:00(避开跑批)
└── 清算结算: 清算完成后(约 6:00-8:00)

发布检查清单:
├── 数据库变更已审核 ✅
├── 配置变更已复核 ✅
├── 回滚方案已就绪 ✅
├── 监控告警已调整 ✅
├── 值班人员已到位 ✅
└── 关联系统已通知 ✅

五、容灾与高可用

5.1 容灾等级

系统可用性目标RPORTO容灾方案
支付网关99.99%0<5min同城双活+异地灾备
记账引擎99.99%0<10min同城主备+异地灾备
风控引擎99.99%<1min<5min同城双活+降级策略
信贷系统99.95%<5min<30min同城主备
清算结算99.95%0<30min同城主备+延迟清算

5.2 降级策略矩阵

故障场景影响降级措施恢复后处理
风控超时无法评估风险小额放行/大额拒绝异步补判
记账不可用无法入账本地记录→恢复后补账批量补账+对账
数据库主库故障写入失败切从库提升为主数据同步检查
Redis集群故障缓存失效降级穿透到DB缓存预热
Kafka不可用异步消息中断本地文件暂存文件回放
外部PSP不可用支付通道中断切换备用通道通道恢复后验证

5.3 混沌工程

定期演练:

  1. 数据库主从切换 — 月度演练
  2. 支付通道降级 — 月度演练
  3. 风控引擎超时 — 季度演练
  4. 全链路压测 — 季度(大促前加频)
  5. 异地灾备切换 — 年度演练

六、合规与监管

6.1 监管报送矩阵

报送内容监管方频率系统来源
大额交易报告人民银行实时支付网关+风控引擎
可疑交易报告人民银行T+1风控引擎
征信数据报送征信中心T+1信贷系统
支付业务统计人民银行月度支付网关+清算结算
贷款统计报表银保监月度/季度信贷系统
资本充足率银保监季度记账引擎

6.2 等保要求

  • 等保三级(金融核心系统标配)
  • 网络安全:防火墙+入侵检测+日志审计
  • 主机安全:漏洞管理+基线配置+防病毒
  • 应用安全:安全开发生命周期(SDL)+渗透测试
  • 数据安全:加密+脱敏+备份+销毁
  • 运维安全:堡垒机+操作审计+变更管理

七、面试综合题

Q1: 如何保证跨系统的数据一致性?

分层策略:

  1. 同步阶段: 本地事务保证单系统一致性
  2. 异步阶段: 消息队列+重试保证最终一致
  3. 兜底阶段: T+1对账发现并修复差异
  4. 人工阶段: 对账无法自动处理的→人工介入

Q2: 你会如何设计一套统一的监控告警体系?

要点: RED+USE指标体系 / 统一TraceID / 分级告警 / 业务监控大盘 / 告警收敛(防风暴)

Q3: 金融系统的安全架构有哪些特殊考虑?

要点: 纵深防御 / 密钥管理(HSM) / 数据分类分级 / 等保三级 / PCI-DSS / 操作审计 / 双人复核