单元化架构的思考

银行业“多活”的发展历程

受监管政策的要求,银行一般会在同城、异地或者多地进行数据中心建设,以保证系统的稳定运行,但从目前实际情况来看,“同城双活”目前仍是很多银行采用的主要形式。银行业的“多活”架构在发展过程中存在三种典型的方式,可以形象的归纳为:“基本的活着”、“更好的活着”和“平等的活着”。

什么是“基本的活着”?在信息化建设的早期,银行通过将不同的业务系统部署在不同的数据中心,以保证不同的数据中心都处于活动状态。但是该模式一般逻辑上还是存在主中心的概念。例如,将核心业务系统、支付系统部署在主中心,而另一个中心部署和处理相对不太关键的业务系统。

什么是“更好的活着”?还是以核心系统为例,核心系统在同城两个数据中心同时部署,共同对外提供服务,实现应用层的多活,但是该模式还是存在一个主库,所以在同城另外一个中心发起的交易存在跨中心的数据访问,对于SQL数较多的交易影响明显。

什么是“平等的活着”?也就是数据中心在应用与数据两个层面都完全对等,例如如下解决方案。同城两个数据库都是全量数据库,本中心的核心应用只连本中心的数据库,没有跨中心的数据访问,不同数据中心通过双向同步实现数据备份,但是针对银行业务的复杂性,该模式存在两个挑战。一是可能出现多个中心同时对同一条数据的写操作;二是双向同步受数据库限制较大。所以,这种方案行业内暂时还没实施案例,但行业对“平等的活着”的探索一直没有停止。

核心系统对“多活”的第一性诉求

在进行“多活”架构建设中,需要剖析问题的本质,抓住银行进行“多活”架构建设的第一性诉求。从“高中低”可以划分为三个诉求:

● 数据中心完全对等:数据中心同时对外提供服务,资源使用基本均衡,并且可在不同的数据中心快速切换;

● 更好的性能保证:在满足核心业务场景的前提下,尽量避免跨中心的数据访问及跨地域的交易;

● 故障的影响小:发生各种不同类型的故障时,对系统影响尽可能小,并且出现故障后可以快速恢复。

核心系统“多活”架构的建设实践

结合银行核心应用系统的建设实践,目前行业中一般采用两种方式进行“多活”架构的建设。

一种是“单元化”的解决方式:

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

单元化的架构模式目前也被一些银行所采用,其具有的优势在于,一是可以满足对“多活”模式的需求;二是便于以单元为单位实现扩展、备份和恢复;三是各单元物理隔离,线性增长明显,相互间影响较小。单元化的主要弊端在于,一是架构复杂程度高,由于“单元寻址服务”的引入,对其的稳定性、可靠性及运维都提出了较高的要求,并且还有一些共性的功能需要统一考虑。

二是业务的复杂度增加明显,架构只在入口进行数据拆分及路由,拆分带来的所有问题都需要应用来解决;跨单元查询甚至需要另外独立的系统(或者特定的非数据单元)来处理;某些没有包含拆分字段的业务需要特殊处理。

三是考虑灾备因素,单元化投入成本会更大。

另一种是通过“轻量化”的解决方式:(互联网在用)

什么是“轻量级”的解决方案?“轻量级”是相对比架构级的单元化而言。如果可以用一种“轻量级”的解决方案解决“多活”建设的诉求,其实是为银行的“多活”架构建设提供了一条新的建设路径,尤其是针对很多科技能力、科技投入相对大行较低、较少的中小银行,既满足了诉求,又降低了建设难度。

“轻量级”解决方案的优势在于,一是架构简洁,只需要对数据进行分库处理,不会对应用层带来入侵。二是针对跨中心的访问,可以通过应用层跨中心路由实现,规避跨中心的数据访问,并轻量级解决跨分库查询的问题。三是应用实例完全对等,单个故障几乎无影响,实现高可靠性。但同样对跨中心路由的性能、稳定性、一致性等的要求较高,如果只是简单的逻辑计算,该缺点可以忽略。

综合两种解决思路,明显“轻量级”解决方案硬件资源投入小、架构简单易维护、对应用侵入小,同时也可以支撑亿级以上的数据量。所以,笔者认为单元化只是现阶段银行分布式转型中的一种过渡方式,在云原生时代,轻量级的解决方案更符合技术和架构的发展趋势。

虽然两种方式都可以解决银行“多活”建设过程中的问题,但是结合上面对“多活”建设的第一性诉求,“轻量化”的解决方案不仅可以实现数据中心的完全对等,并且可实现本中心内调用,无跨异地交易,更好的保证了性能。同时,在应用层可以实现故障面更小的影响,满足银行进行“多活”建设的最高诉求,既故障影响最小。

参考:
金融信创 | 神州信息银行核心系统多活架构实践 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/156377.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信道数据传输速率、信号传播速度——参考《天勤计算机网络》

一、缘起题目 二、解析 三、总结 信道数据传输速率和信号传播速度是两个不同的概念。 3.1 信道数据传输速率(Channel Data Transfer Rate) 指的是在通信系统中,通过信道传输的数据量,通常以 比特率(bits per second…

python项目部署代码汇总:目标检测类、人体姿态类

一、AI健身计数 1、图片视频检测 (cpu运行): 注:左上角为fps,左下角为次数统计。 1.哑铃弯举:12,14,16 详细环境安装教程:pyqt5AI健身CPU实时检测mediapipe 可视化界面…

macOS 创建Flutter项目

参考在 macOS 上安装和配置 Flutter 开发环境 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 这个文档,配置好flutter的环境 编辑器可以选择vscode或者IDEA。 我这里以IDEA为例 打开 IDE 并选中 New Flutter Project。 选择 Flutter,验证 F…

【MongoDB】Windows 安装MongoDB 6.0

一、下载安装包 安装包下载地址https://www.mongodb.com/try/download/community这里我选择的是 二、解压并安装 1、解压 这里我将压缩包解压到了D盘,并重命名成了mongodb,解压后的目录如下: 2、创建配置文件 在D:\mongodb下新建conf目录…

前度开发面试题

面试题总结 vue页面跳转会经过两个钩子函数beforeEach、afterEach 组见守卫 beforeRouteEnter前置组见守卫 *beforeRouteUpdate更新之前 watch和computed区别 数据没有改变,则 computed 不会重新计算)。若没改变,计算属性会立即返回之前缓…

OSPF高级特性

OSPF高级特性(1) 一、OSPF不规则区域类型 产生原因:区域划分不合理,导致的问题 1、非骨干区域无法和骨干区域保持连通 2、骨干区域被分割 造成后果:非骨干区域没和骨干区域相连,导致ABR将不会帮忙转发区域间的路由信息。非骨干区…

【TES720D】青翼科技基于复旦微的FMQL20S400全国产化ARM核心模

板卡概述 TES720D是一款基于上海复旦微电子FMQL20S400的全国产化核心模块。该核心模块将复旦微的FMQL20S400(兼容FMQL10S400)的最小系统集成在了一个50*70mm的核心板上,可以作为一个核心模块,进行功能性扩展,特别是用…

测试用例设计——WEB通用测试用例

现在项目做完了,我觉得还是有必要总结一下,学习到的内容。毕竟有总结才能有提高嘛!总结一下通用的东西,不管什么项目基本都可能会遇到,有写地方也有重复的或者有的是按照个人的习惯来总结的不一定都对,有不…

垃圾回收GC

为什么要有垃圾回收? JVM之所以要有垃圾回收,是因为它能够自动管理内存,避免内存泄漏和内存溢出的问题,垃圾回收机制会自动检测和清理不再使用的对象,释放内存空间,使得开发者不需要手动管理内存,降低了开发难度和错误风险,同时,垃圾回收还可以优化内存分配,提高程序性能和响…

【ES专题】ElasticSearch 高级查询语法Query DSL实战

目录 前言阅读对象阅读导航前置知识数据准备笔记正文一、ES高级查询Query DSL1.1 基本介绍1.2 简单查询之——match-all(匹配所有)1.2.1 返回源数据_source1.2.2 返回指定条数size1.2.3 分页查询from&size1.2.4 指定字段排序sort 1.3 简单查询之——…

linux下mysql-8.2.0集群部署(python版本要在2.7以上)

目录 一、三台主机准备工作 1、mysql官方下载地址:https://dev.mysql.com/downloads/ 2、修改/etc/hosts 3、关闭防火墙 二、三台主机安装mysql-8.2.0 1、解压 2、下载相应配置 3、初始化mysql,启动myslq,设置开机自启 4、查看初始密…

高效学习工具之AnkiMobile新手入门指南(ios端,包括ipad、ihpone设备)————创建、使用、备份、设置参数、相关资料

文章目录 0 背景0.1 闭环学习0.2 什么是anki0.3 anki践行者经验分享 1 开始使用1.1 导入1.2 创建空白组1.3 创建卡片1.3.1 利用anki创建卡片的两种方法1.3.2 复习材料分类 1.4 筛选(做减法,拆分学习(做子卡牌集合))&am…