ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

金融核心系统云架构落地:选型、数据拆分与容灾设计要点

金融核心系统云架构落地:选型、数据拆分与容灾设计要点 简介这份PPT以某农业银行控股的中小型寿险公司为例系统讲解金融核心业务系统云架构的规划与落地路径适合保险公司、银行等金融机构的架构师、IT负责人及云平台技术选型团队阅读。内容覆盖项目背景、建设目标与实施约束剖析JDK 1.4.2老旧系统在性能、集成、扩展上的痛点并给出公有云、私有云、混合云及SaaS/PaaS/IaaS分层设计思路。PaaS层十大组件逐一展开重点拆解批处理平台改造成Batch PaaS的实例基于ZooKeeper实现分布式并行计算、动态节点管理、故障自动转移以及多租户下的数据、性能、安全隔离。资源包共1个文件打包为2.58MB的PPTX演示文稿结构清晰、图文并茂适合内部培训与方案汇报直接参考。目前已有91人学习对正在推进核心系统上云或重构的企业具有实战借鉴价值。1. 金融核心业务系统云架构不是换台服务器那么简单不少团队拿到“新一代金融核心业务系统云架构”这类方案需求时第一反应是画一张漂亮的拓扑图把原来的小型机换成x86服务器把集中式存储换成云盘再在后面p一朵云。可真到了做架构设计和技术选型的时候才会发现真正的难点不是计算资源怎么池化而是账务核心赖以生存的事务一致性、容灾切换和性能基线换到云端之后怎么不打折扣地延续下来。本文要聊的就是这套方案背后的落地路径上云形态怎么选、数据层怎么拆、容灾怎么设计、踩坑怎么排。适合正在做金融核心下云规划、参与核心系统改造评审或负责运维容量管理的从业者至少能让你在方案评审时少被问倒三轮。2. 两种落地形态云上复刻与云原生化先分清再动手2.1 为什么“把物理机搬上云主机”不等于云架构金融核心业务系统通常指账务核心、支付核心、总账这类承担交易记账和账务清算的系统特点是强一致性、高并发、低容忍度。这类系统在传统架构下跑在小型机加集中式数据库上数据库层面有共享存储、RAC或者同城灾备应用层通过集群和负载均衡保证可用性。搬到云上之后如果只是把操作系统镜像从物理机挪到云主机数据库仍然跑在单机或者主备复制模式下那充其量算“资源云化”不是云架构。我在看方案时习惯先问一个问题“你上云后应用的故障恢复能力和扩缩容能力相比原来提升在哪里”如果答案是“还是那样只是不用买服务器了”那这套方案大概率只是把TCO报表做漂亮了技术上没有本质变化。真正的云架构至少要具备两个特征一是基础设施可编程环境创建、销毁、扩缩容能通过接口或模板快速完成二是应用具备弹性流量上升时能快速扩展实例流量回落后能安全缩容而不会把账务数据的一致性拖垮。选型上常见的做法是先按“上云深度”分成三档第一档IaaS化复刻物理机变云主机网络和安全组重新梳理数据库尽可能不动第二档PaaS化改造数据库切换为云数据库托管形态应用容器化由编排平台管理生命周期第三档云原生重构应用按领域拆分为微服务数据库走分布式中间件或原生分布式数据库。三档的成本、周期、风险递增收益也递增。核心系统往往不会一步跨到第三档主流路径是一档稳住、二档试行、三档在部分外围模块试点。2.2 最小可用方案用云上可用区复刻同城双活的账务核心如果预算有限或者监管窗口期紧张最稳妥的落地方式是把同城双活架构平移到云上。做法是选择云厂商的两个可用区分别部署核心应用集群和数据库集群中间通过云内专线或VPC对等连接打通网络。关键参数是可用区之间的网络时延账务核心对同步提交的时延极其敏感我一般要求可用区间的单向网络时延小于2毫秒否则数据库同步提交的耗时会出现明显劣化极端情况下会把交易超时率从万分之几推到百分之几这是生产事故级别的变化。复刻架构时最容易忽略的是存储层。传统架构下共享存储由存储厂商保证一致性上云后如果用的是云盘同一份数据无法被两台云主机同时挂载意味着原先基于共享文件系统的集群方案直接不可用。替代方案是数据库层改用云数据库的高可用形态由数据库服务自身管理主备切换应用层保持无状态通过负载均衡挂在数据库前。这套方案的好处是应用代码改动小坏处是数据库迁移本身有风险尤其是Oracle迁移到云数据库所依赖的兼容性评估需要提前做一遍完整的SQL语句兼容性扫描。选参数时云主机规格建议按交易峰值加40%冗余来定不要按平均负载定。数据库实例的规格除了CPU内存更重要的是IOPS上限和吞吐量上限云数据库的IOPS往往和实例规格以及磁盘类型绑定下单前要把峰值时段的读IOPS和写IOPS单独测算出来再对比实例配额避免峰值时段被云厂商限流。网络层面要预留足够的跨可用区带宽主备复制和双活流量同时存在时带宽容易成为隐形瓶颈。2.3 演进版容器化加单元化改造什么时候启动复刻架构跑一段时间后容量管理和发布效率会成为新痛点。核心应用集群扩容要创建云主机、装依赖包、加入负载均衡流程再快也要十几分钟遇到大促或者突发流量手工扩容根本来不及。这时候就该启动容器化改造了。金融核心应用容器化的边界在于有状态部分——账务数据不能放到容器本地存储必须走外部数据库应用本身只要做到无状态镜像构建后通过编排平台滚动发布扩缩容才能变成分钟级操作。单元化是比容器化更大的一步。单元化的核心逻辑是把客户流量按维度通常用客户号或账号哈希成若干分片每个分片由一个独立单元负责单元之间数据隔离。这样做的好处是容量可以线性扩展故障爆炸半径可控。一个单元包含应用、数据库、缓存三件套单元内闭环完成交易跨越单元的请求尽量少。账务系统做单元化时最怕遇到跨单元交易比如A单元的客户给B单元的客户转账如果按客户号分片这类交易占比会直接影响性能。我见过的做法有两类一类是只做按账号维度的分片转账场景中让交易路由到付款方单元收款方账务异步记账另一类是建立全局的客户归属路由表交易时判断两个账户的归属单元对跨单元交易走专门的异步对账通道。核心原则是让跨单元交易比例控制在5%以下否则单元化的性能收益会被跨单元开销吃掉。云原生化改造中还要考虑事务方案的变化。传统数据库事务由数据库保证ACID拆成单元化加分布式数据库后跨分片的本地事务可能变成分布式事务需要引入事务协调者或者采用最终一致性方案。这里有个容易被低估的点账务核心的日切和总分核对本来就是靠数据库事务和锁机制保证的一旦拆成多分片日切就变成对多个分片同时做批次处理的分布式协调任务复杂度上升不止一个量级。所以我的建议是日切相关功能尽量保留在单一分片或者集中批次环境里不要为了架构上的“纯粹”强行分布式化。3. 数据层怎么拆数据库选型、同步链路与迁移切换3.1 分布式数据库与分库分表的选型边界金融核心的数据架构是整套方案中最难动的一块。传统集中式数据库的高峰期每秒事务量可能在几万到几十万之间这个量级下集中式数据库配合高配主机完全扛得住云架构下真正需要拆分数据库的触发点通常不是当前峰值而是未来三年的增长预估。我常用的判断依据是单库写入TPS超过2万或者容量增长导致单次备份和恢复时间超过4小时就要开始考虑拆分否则继续沿用集中的云数据库更划算。拆分有两个方向引入分布式数据库或者在应用层自己做分库分表。分布式数据库的优势是透明分片、自带全局一致性视图、弹性扩缩容缺点是运维门槛高SQL优化器对复杂关联查询和跨分片事务的处理容易变成黑匣子应用层分库分表的优势是可控性强每个分片的数据库仍然是普通数据库排查问题直观缺点是要自己管分片路由、扩容重分布、跨分片查询聚合。金融核心场景里我见过做得稳的团队反而更倾向自研分库分表中间件因为核心账务的表结构相对固定分片键清晰关联查询可控自研中间件能完全掌握路由逻辑出了性能问题可以用一条SQL直接在对应分片复现不用在分布式数据库的黑匣子前干瞪眼。分片键的选择是分库分表成败的关键。账务核心的流量天然按客户账号或协议号走选账号作为分片键最直观但客户信息表、参数配置表这类被高频关联引用的数据不能一并打散需要设计成广播表或者全局表在每个分片里冗余一份。做分片设计时我一般会把表分成三类分片表、广播表、全局表然后画一张矩阵表里标注每张表的访问频次、数据量和关联关系再决定它的归属。分片数建议按照未来三年峰值数据量预估一次性规划到32或64个分片后续扩容时只做库级迁移不做二次哈希。二次哈希重分布在生产环境几乎等于一次事故演练能避免尽量避免。3.2 双写同步与对账切换前夜如何保住数据一致性从集中式数据库迁到分布式数据库或者从一个云数据库迁到另一个云数据库迁移过程的核心是双写。双写的意思是新旧两套数据库同时接写入流量每笔交易在老库执行后通过同步组件把变更数据复制到新库。这里的难点在于顺序和幂等同步组件要保证按事务提交顺序回放否则外键关联或者唯一索引会报错回放过程中如果出现网络闪断重连同一笔变更可能被重复应用所以新库的每一条写入都要做幂等处理最常用的是在每张业务表上增加一个迁移批次号和原始事务ID的唯一索引回放时遇到重复ID直接跳过。双写方案有三种常见实现。第一种是应用层双写业务代码同时写新旧两套库由事务管理器保证两边成功或两边回滚优点是同步实时性最好缺点是侵入应用改造量大而且两边事务的一致性极难保证。第二种是日志采集回放解析老库的redo/undo日志或者二进制日志转换成新库的SQL或数据变更事件回放对应用无侵入但实时性取决于采集组件的调度频率一般能控制在秒级以内。第三种是数据同步工具加消息队列的组合同步工具把变更事件发到消息队列新库的消费端拉取事件写入优点是削峰、异步解耦缺点是链路长故障点增加。核心系统切换前建议至少选两种方案做交叉验证一种主同步一种定时批量校验。对账是双写阶段不能跳过的一步。我见过不少团队迁移失败都是因为只做主同步没有独立的校验机制切换后发现新旧两边账不平又不敢回退最后花了双倍时间手工补救。对账设计分三层行数级对账对比两边每张表的记录数是否一致金额级对账按账户汇总余额和发生额对比两边汇总值明细级对账抽样一定比例的交易流水做逐笔比对。前两层可以每天跑批第三层按业务重要性抽样比例至少覆盖所有大额交易和当天全部的冲正交易。对账结果不平时优先查同步任务的调度状态和幂等冲突不要先怀疑业务代码。3.3 存量数据迁移的步骤与切换参数存量迁移一般分三步走全量导入、增量追平、灰度切换。全量导入阶段先把老库的数据冷备导出导入到新库导入期间老库的增量数据靠双写组件持续回放导入完成后新库的数据处于“初始快照加增量回放”的状态。这里有个关键参数叫追平阈值增量回放滞后老库的时间要压缩到30秒以内才能进入切换准备状态。操作上是先观察增量延迟曲线如果延迟持续在低位稳定再把应用层写流量按比例切到新库。灰度切换的流量配比我一般按10%、30%、50%、100%四步走。每步切换后至少观察一个完整业务周期如果是连续交易的支付系统至少观察30分钟如果是日切型账务系统要观察完一个日切批次再继续。灰度切换期间需要一套开关系统能够在30秒内把流量全部切回老库这个开关叫做“切换回退开关”它不是某个配置项而是一整套预案。常见的做法是在入口网关层做流量染色按客户号尾号或内部测试标记路由到新库染色规则变更下发只需刷新网关配置不用重启应用。切换后还有一步经常被忽略老库不能立刻下线。行业惯例是保留老库只读运行至少一个完整月份覆盖月结、对账、监管报送等长周期批次。老库的只读快照要做好权限控制防止业务人员误连老库写数据导致两边数据分叉。如果监管或安全要求数据不能长期留存也要至少保留跨月结的完整数据以便处理次月出现的账务差错追溯。4. 弹性容量与运维配套压测、灰度与告警基线怎么设4.1 云上容量管理按峰值预估而非平均值核心系统上云后容量管理的责任有一半从运维转移到架构侧。云主机的规格、数据库实例的规格、负载均衡的带宽、消息队列的吞吐配额任何一个环节成为瓶颈整个链路都会感知到。制定容量基线时我通常以过去六个月内最大的连续15分钟交易峰值为基准乘以1.5到2.0的安全系数作为云资源的保底配额同时给关键资源设置自动扩缩容策略。这里有一个常见的翻车点自动扩容策略按CPU使用率触发业务高峰是瞬时的流量脉冲CPU还没来得及升上去请求已经在入口处堆积超时了。正确的做法是同时监控入口吞吐量和队列积压数用这两个指标做扩容触发而不只是看CPU。容量规划表里要单独列出的是数据库连接数。传统架构下应用实例数量固定数据库连接总数是可控的容器化之后实例数量动态变化如果每个实例的连接池上限不收敛数据库连接数会被瞬间打满。我一般要求应用侧的核心服务数据库连接池上限不超过30外围服务不超过20同时数据库侧设置连接数告警阈值超过阈值的70%就触发人工介入。连接池参数里还要注意连接空闲超时和获取连接超时前者建议设成数据库的wait_timeout一半后者建议不超过3秒否则高峰时段应用线程会大量阻塞在等待连接的状态表现为CPU不高但RT飙升。4.2 灰度发布与流量路由策略核心系统的发布风险远高于普通互联网应用一旦新版本存在账务计算逻辑错误影响面可能是全量客户。因此灰度发布不是可选项是必选项。云架构下的灰度发布实质上是流量路由控制一组老版本实例和一组新版本实例同时运行入口网关按规则决定每个请求发往哪组。规则划分建议按来源渠道加客户号尾号组合例如某个渠道的尾号0和1的客户走新版本其余走老版本这样既能控制爆炸半径又能保证测试流量覆盖到真实客户。灰度发布的观察维度不仅仅是错误率和RT对核心系统来说更要看重试比例、资金差错率和日切对账差异。如果新版本在日切批次后出现总分不平哪怕线上成功率是100%也必须立即回滚。为此灰度期间要把新旧两版账务批次结果的核对任务独立出来每个交易日的凌晨自动跑批比对产出差异报告。观测窗口上一般业务连续跑满3个完整交易日且无差错才能把流量比例放到50%以上。这里有一个运维细节灰度部署的Pod调度要配置反亲和性确保新旧版本实例分布在不同的物理节点或可用区否则发布过程中节点故障会把新旧版本一起带走失去灰度保护的意义。4.3 全链路压测参数、水位与压测数据隔离全链路压测是验证云架构容量基线的唯一可靠手段也是让运维团队建立信心的关键活动。压测的流量模型不能只按接口比例压而要从渠道入口按真实业务配比灌流量同时引入事务的关联性。举个例子一个完整的转账交易涉及账户查询、余额校验、记账、通知等多个环节压测脚本如果只压其中一个接口测出来的性能指标没有参考价值。常见的做法是从网关层回放历史流量把过去某一天的真实交易流水脱敏后按时间轴放大这样链路上下游的调用关系和比例天然真实。压测水位设计上第一步先压到当前峰值负载验证系统稳定性第二步逐步加压到峰值的1.5倍找出第一个性能拐点第三步在拐点位置持续施压15至30分钟观察是否存在内存泄漏或连接池耗尽等慢性问题。关于压测数据隔离最好的方案是建立一套独立的压测数据库但资源成本高折中方案是在生产库中打标压测客户号所有压测流量路由到标定的分片并在流量入口做压测标识拦截确保压测数据不会外溢到真实报表和监管报送链路。压测结束后清理历史遗留的压测数据比压测过程本身更容易出错建议在切换或压测预案中专门列一条数据清理清单按表逐项确认清理完成才能关闭压测标识。5. 避坑指南金融核心上云最常见的5个翻车点5.1 分布式事务回滚异常后两边数据不一致现象切到云原生架构后部分跨分片的转账交易偶尔出现“扣款成功但入账失败”日切后总分不平。原因本地事务变成分布式事务后第二阶段提交失败时部分分片已提交、部分分片已回滚而事务协调者没有可靠的补偿机制。多数情况下是回滚日志记录不完整或者补偿逻辑没有实现幂等。解决不要把账务核心的强一致寄托在最终一致性上。设计上优先把交易路由收敛到单分片内完成跨分片场景启用TCC模式并为主要操作表增加事务状态字段在事务协调者侧保存完整的调用链快照具备重放和人工干预界面。上线前用故障注入工具模拟参与方宕机、网络分区和超时三类场景验证补偿流程能自动收敛且重试不会产生重复账。5.2 数据库连接池风暴缩容节点引发雪崩现象业务低谷期自动缩容两个应用节点后瞬间大量交易超时数据库CPU升高然后更多请求超时。原因节点缩容时该节点持有的数据库连接被直接关闭连接池总量突然下降存活节点的连接数瞬时打满新请求在获取连接的环节排队超时。应用线程继续等待触发线程池堆积进而拖垮健康节点。解决缩容前先在网关摘除节点流量等到节点上活跃请求归零后再销毁容器晚30秒而已但能避免一次事故。同时给应用配置连接池预热机制和获取连接超时快速失败策略宁可快速返回失败让上游重试也不要让线程无限阻塞拖垮整个节点。告警规则应该覆盖“单节点连接池占用率持续超过80%”和“获取连接平均耗时超过200毫秒”两个信号它们比CPU和内存告警更早暴露问题。5.3 网络超时与重试导致重复记账现象交易链路偶发超时上游服务做了重试结果客户账户被重复扣款。虽然占比不高但每一起都是客户投诉级别的故障。原因云环境下网络抖动概率高于传统数据中心负载均衡层或微服务框架默认开启了重试。但账务接口本身不具备幂等性同一笔请求被处理了两次自然产生两笔记账。解决所有写接口必须实现幂等控制当前最简单的做法是网关层生成全局唯一请求号业务表记录请求号并建唯一索引重复请求直接返回首次结果同时底层防重表定期归档避免无限膨胀。对重试策略本身也要收敛只允许超时后重试一次且重试间隔至少1秒连接失败与业务失败要区分开业务失败不允许重试。压测时加入重试场景验证幂等逻辑确实有效而不是在故障后依赖开发人员拍胸脯保证。5.4 云盘IOPS配额不足引发局部性能劣化现象迁移上云后系统整体压力不高但数据库偶尔出现大量慢查询监控显示磁盘IOPS接近某一数值后突然平稳疑似被限流。原因云数据库或云硬盘的IOPS有规格上限。传统物理机环境IOPS是硬盘物理能力的上限云环境降配或默认配额不足时峰值流量一冲就触顶限流表现为时延突然跳高而不是缓慢上升非常有迷惑性。解决下单前按峰值流量估算IOPS需求和吞吐需求预留30%余量不要只看云厂商默认配额。上线后监控IOPS使用率曲线一旦出现在峰值前水平说明配额不足扩容要赶在业务增长之前做完。同时把数据库行存参数、批量任务执行时间窗口和在线交易峰值错开减少IOPS争抢。5.5 切换回退方案缺失上线后不敢回滚现象灰度切换50%后出现计算逻辑错误但回退流程要一个小时才能完成期间只能人工暂停部分渠道的交易最终全量回退成本极高。原因切换方案里“往前切”做得充分“往回切”没设计回退时才发现新旧版本的数据已经双向同步回退意味着把新库的数据增量反向回流到老库过程又慢又容易冲突。解决从一开始就设计双向切换能力老库和新库之间建立双向同步链路回退前先停应用写流量把新库增量回放给老库追平后再拉起应用。回退演练要作为上线演练的一部分至少演练一次“切过去再切回来”确保回退路径是真能走通的而不是纸面文档上的几个命令。切换开关的权限要收敛执行回退必须由一人操作、一人复核避免慌乱中敲错命令把流量切到空集群。6. 验证方法三个动作让方案的“可信度”落地方案做得再完整最终还是要落在可验证上。第一个动作是做一张容量验证表把每个核心链路的调用环节、单机吞吐、集群节点数、数据库IOPS、网络带宽各自的上限列出来再和压测实测值对齐填不齐的格就是要返工的地方。第二个动作是部署一套根因诊断链路把应用日志、数据库慢查询日志、负载均衡的请求日志接入同一个追踪平台任何一笔失败交易都能按请求号拉出全链路时间戳这是后续所有排障的基础设施没有它云架构的复杂度会让故障定位时间翻倍。第三个动作是做一次完整的混沌演练人为杀掉一个数据库节点、断掉一条跨可用区网络、打满一个消息队列配额逐个观察系统表现是否符合预期而不是等真实故障来检验方案。这三个动作做完架构师自己心里有底评审会上也有据可依。我养成的一个习惯是每切换一个核心模块就把验证过程中发现的真实数据和最初的参数预估放在一起对比偏差超过预期的部分沉淀成下一轮方案的输入。切换窗口里手忙脚乱的情况多了就知道哪些参数是拍脑袋拍的哪些坑必须提前拿数据验证。希望帮到你。本文还有配套的精品资源点击获取
返回列表