
摘要
接触过城市级'一卡通'的同学多半知道,这种卡把'金融级一致性,交通级高并发,每天 24 小时运行'这几件事集于一身,其交易链路比较短,高峰期又特别集中;对账清算时使用的口径较多,链路就变得很长;数据保存的时间常常较长,而且还要符合监管审查以及安全合规的要求。文章联系这个平台选用金仓产品作为核心关系型数据库之后的实际操作情况,针对其架构的选择,数据模型的重点之处,高可用性和容灾能力,性能及稳定性的提升措施,还有迁移上线时的组织形式展开技术回顾,试图把'为什么要这样做,具体应该如何去做,实际效果怎样'阐述清楚,并附上一份可重复利用的列表和实例。
1. 业务与技术挑战拆解



2. 总体架构(从数据库边界看)
这类平台常见的形态是'交易域在线处理 + 清结算批处理 + 对外渠道接入'三段式组合。站在数据库一侧,关键动作有两个:把写热点和读热点分开,以及把强一致的边界收紧到最小闭环。
渠道与终端 复制/同步 闸机/读卡器 接入网关/鉴权限流 APP/小程序 第三方支付渠道 交易服务 查询服务 消息队列 清分清算/对账服务 核心关系型数据库 只读副本/读库 分析/报表/数仓
数据库在这里承担三类负载:
- OLTP 核心交易闭环:写入为主,延迟敏感。
- 对账与清算:读写混合,偏批处理与汇总计算。
- 查询与报表:读为主,跨度大、访问模式多样。
工程落地时,一般会把'核心交易库'当作强一致主库来运营,把查询与报表尽可能引到只读副本或分析系统上;对账清算这类波动明显、资源消耗大的任务,则用消息队列与批处理做削峰填谷,尽量别让主库背上不可控的大查询压力。
3. 数据模型:以'不可变流水'为中心
落到数据模型上,我更愿意先把'三句话原则'摆出来:流水尽量不可变、状态可以派生、对账必须可复算。这么做的直接收益是:并发场景下锁冲突更少、一致性风险更可控,后期审计与追溯也更从容。


