系统集成与跨切面 · 总结
横切关注点设计
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 容灾等级
| 系统 | 可用性目标 | RPO | RTO | 容灾方案 |
|---|---|---|---|---|
| 支付网关 | 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 混沌工程
定期演练:
- 数据库主从切换 — 月度演练
- 支付通道降级 — 月度演练
- 风控引擎超时 — 季度演练
- 全链路压测 — 季度(大促前加频)
- 异地灾备切换 — 年度演练
六、合规与监管
6.1 监管报送矩阵
| 报送内容 | 监管方 | 频率 | 系统来源 |
|---|---|---|---|
| 大额交易报告 | 人民银行 | 实时 | 支付网关+风控引擎 |
| 可疑交易报告 | 人民银行 | T+1 | 风控引擎 |
| 征信数据报送 | 征信中心 | T+1 | 信贷系统 |
| 支付业务统计 | 人民银行 | 月度 | 支付网关+清算结算 |
| 贷款统计报表 | 银保监 | 月度/季度 | 信贷系统 |
| 资本充足率 | 银保监 | 季度 | 记账引擎 |
6.2 等保要求
- 等保三级(金融核心系统标配)
- 网络安全:防火墙+入侵检测+日志审计
- 主机安全:漏洞管理+基线配置+防病毒
- 应用安全:安全开发生命周期(SDL)+渗透测试
- 数据安全:加密+脱敏+备份+销毁
- 运维安全:堡垒机+操作审计+变更管理
七、面试综合题
Q1: 如何保证跨系统的数据一致性?
分层策略:
- 同步阶段: 本地事务保证单系统一致性
- 异步阶段: 消息队列+重试保证最终一致
- 兜底阶段: T+1对账发现并修复差异
- 人工阶段: 对账无法自动处理的→人工介入
Q2: 你会如何设计一套统一的监控告警体系?
要点: RED+USE指标体系 / 统一TraceID / 分级告警 / 业务监控大盘 / 告警收敛(防风暴)
Q3: 金融系统的安全架构有哪些特殊考虑?
要点: 纵深防御 / 密钥管理(HSM) / 数据分类分级 / 等保三级 / PCI-DSS / 操作审计 / 双人复核