
银行业“多活”的发展历程
受监管政策的要求,,,银行一般会在同城、、、异地或者多地进行数据中心建设,,以保证系统的稳定运行,,但从目前实际情况来看,,,,“同城双活”目前仍是很多银行采用的主要形式。。银行业的“多活”架构在发展过程中存在三种典型的方式,,,,可以形象的归纳为:“基本的活着”、、、“更好的活着”和“平等的活着”。。
什么是“基本的活着”????在信息化建设的早期,,,银行通过将不同的业务系统部署在不同的数据中心,,,以保证不同的数据中心都处于活动状态。。。但是该模式一般逻辑上还是存在主中心的概念。。例如,,,,将核心业务系统、、、、支付系统部署在主中心,,,,而另一个中心部署和处理相对不太关键的业务系统。。
什么是“更好的活着”????还是以核心系统为例,,,,核心系统在同城两个数据中心同时部署,,,,共同对外提供服务,,,,实现应用层的多活,,,但是该模式还是存在一个主库,,所以在同城另外一个中心发起的交易存在跨中心的数据访问,,,,对于SQL数较多的交易影响明显。。。。
什么是“平等的活着”???也就是数据中心在应用与数据两个层面都完全对等,,,,例如如下解决方案。。同城两个数据库都是全量数据库,,本中心的核心应用只连本中心的数据库,,,,没有跨中心的数据访问,,,不同数据中心通过双向同步实现数据备份,,,但是针对银行业务的复杂性,,,,该模式存在两个挑战。。。一是可能出现多个中心同时对同一条数据的写操作;二是双向同步受数据库限制较大。。。所以,,,,这种方案行业内暂时还没实施案例,,但行业对“平等的活着”的探索一直没有停止。。
核心系统对“多活”的第一性诉求
在进行“多活”架构建设中,,需要剖析问题的本质,,抓住银行进行“多活”架构建设的第一性诉求。。。从“高中低”可以划分为三个诉求:
● 数据中心完全对等:数据中心同时对外提供服务,,,,资源使用基本均衡,,,,并且可在不同的数据中心快速切换;
● 更好的性能保证:在满足核心业务场景的前提下,,,,尽量避免跨中心的数据访问及跨地域的交易;
● 故障的影响小:发生各种不同类型的故障时,,,,对系统影响尽可能小,,,,并且出现故障后可以快速恢复。。。
核心系统“多活”架构的建设实践
结合银行核心应用系统的建设实践,,目前行业中一般采用两种方式进行“多活”架构的建设。。。一种是“单元化”的解决方式;另一种是通过“轻量化”的解决方式。。。虽然两种方式都可以解决银行“多活”建设过程中的问题,,,,但是结合上面对“多活”建设的第一性诉求,,,“轻量化”的解决方案不仅可以实现数据中心的完全对等,,,,并且可实现本中心内调用,,,,无跨异地交易,,更好的保证了性能。。。同时,,在应用层可以实现故障面更小的影响,,满足银行进行“多活”建设的最高诉求,,,既故障影响最小。。。

什么是单元化????单元化的本质是数据层的分布式。。通过将业务划分为独立,,,,功能相同的业务单元,,,并且每个单元内部都可以处理完整的业务流程,,,,所有单元的数据合并形成完整的数据,,这是对单元化的准确描述。。。理论上单元化是一个架构级的解决方案,,因为实现单元化的前提是需要单元寻址,,通过全局路由首先确定业务需要访问和处理的单元。。。。所以单元化相比后面提到的“轻量化”解决方案,,,对业务层的侵入和影响要大很多。。。。

单元化的架构模式目前也被一些银行所采用,,,其具有的优势在于,,,一是可以满足对“多活”模式的需求;二是便于以单元为单位实现扩展、、、备份和恢复;三是各单元物理隔离,,线性增长明显,,相互间影响较小。。。。单元化的主要弊端在于,,一是架构复杂程度高,,,由于“单元寻址服务”的引入,,对其的稳定性、、、、可靠性及运维都提出了较高的要求,,并且还有一些共性的功能需要统一考虑。。二是业务的复杂度增加明显,,,架构只在入口进行数据拆分及路由,,拆分带来的所有问题都需要应用来解决;跨单元查询甚至需要另外独立的系统来处理;某些没有包含拆分字段的业务需要特殊处理。。。。三是考虑灾备因素,,,,单元化投入成本会更大。。。
什么是“轻量级”的解决方案???“轻量级”是相对比架构级的单元化而言。。如果可以用一种“轻量级”的解决方案解决“多活”建设的诉求,,其实是为银行的“多活”架构建设提供了一条新的建设路径,,,尤其是针对很多科技能力、、科技投入相对大行较低、、、、较少的中小银行,,,既满足了诉求,,,又降低了建设难度。。。

“轻量级”解决方案的优势在于,,,一是架构简洁,,,,只需要对数据进行分库处理,,不会对应用层带来入侵。。。。二是针对跨中心的访问,,,可以通过应用层跨中心路由实现,,,规避跨中心的数据访问,,并轻量级解决跨分库查询的问题。。三是应用实例完全对等,,,单个故障几乎无影响,,实现高可靠性。。但同样对跨中心路由的性能、、、稳定性、、、、一致性等的要求较高,,,如果只是简单的逻辑计算,,该缺点可以忽略。。
综合两种解决思路,,,明显“轻量级”解决方案硬件资源投入小、、、、架构简单易维护、、对应用侵入小,,同时也可以支撑亿级以上的数据量。。。所以,,,,笔者认为单元化只是现阶段银行分布式转型中的一种过渡方式,,,在云原生时代,,,,轻量级的解决方案更符合技术和架构的发展趋势。。。。
■ 作者
z6com·尊龙凯时新动力数字金融研究院应用基础架构专家 薛春雨