单元化架构的思考

news2024/12/25 9:06:57

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件管理怎么清内存?效率提升一倍

定期清理文件管理可以释放存储空间和提高系统性能。随着时间的推移,手机中可能会存储大量无用的数据,例如缓存、垃圾文件等,导致系统运行缓慢。那么如何清理文件管理的内存呢?下面介绍三种方法。 一、搜索无用的文件夹进行清理 1…

钛虎机械臂移植

安装软件 1 安装fcl git clone https://gitee.com/xjEzekiel/fcl.git cd fcl mkdir build cd build cmake .. make sudo make install2 安装octomap sudo apt install ros-melodic-octomap-ros3 其他 sudo apt install ros-melodic-eigen-stl-containers sudo apt install r…

SAP ABAP SALV DEMO

这几天听了翱翔云天的几个分享视频,发现做了这么多年的ABAP,更多的是实现功能,但是在优化和原理层面,还是相当欠缺,虽然在甲方是属于6边形战士的存在(ABAP,BASIS,BW,PO&a…

【React】P2 create-react-app基础操作

文章目录 当前以及未来的开发,一定是:组件化开发如何划分组件React的工程化/组件化开发create-react-app基础运用运用react常用版本一个React项目中,默认会安装 2023年最新珠峰React全家桶【react基础-进阶-项目-源码-淘系-面试题】 当前以及…

生产者-消费者模型

目录 1、生产者-消费者模型是什么 2、Java中的实现 3、应用于消息队列 3.1 引入依赖 3.2 rabbitmq网站新建队列queue 3.3 模块中配置application.yml 3.4 生产者实现类 3.5 单元测试,发送msg到rabbitmq的队列(my_simple_queue) 3.6 消费者实现类 3.7 从ra…

E1基于线性表的图书管理系统

需求分析 【提示:以无歧义的陈述说明程序设计的任务,主要说明内容是程序要做什么。并明确规定:(1) 输入的形式和输入值的范围;(2) 输出的形式;(3) 程序所能达到的功能。】 图书信息管理: 定义一个包含图…

C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)

懒大王感谢大家的关注和三连支持~ 目录 前言 一、UDP编程 UDP特点: UDP框架: UDP函数学习 发送端代码案例如下: 二、多路复用 前提讲述 select poll 三、图解如下 总结 前言 作者简介: 懒大王敲代码,…

OpenLayers实战,OpenLayers解析渲染TopoJson格式区划边界数据和实现鼠标经过高亮显示区划边界和文字

专栏目录: OpenLayers实战进阶专栏目录 前言 本章使用OpenLayers实现从vue项目中加载assets资源目录中的TopoJson格式数据,解析渲染TopoJson格式行政区划边界数据,并且实现鼠标经过区域高亮显示区划边界和文字的功能。 本章是综合应用,为方便大家理解代码,拆分为简单的…

强化学习中的值函数

一、值函数 几乎所有的强化学习算法都涉及到估计值函数——状态(或状态-动作对)的函数,这些函数估计代理处于给定状态(或在给定状态下执行给定动作)的好坏。这里的“好坏”概念是根据可以预期的未来奖励来定义的&#…

动手学深度学习 - 学习环境配置

学习环境配置 1、安装 Miniconda1.1 下载 miniconda31.2 环境变量配置1.3 安装成功测试1.4 配置文件1.5 使用conda创建、使用、删除环境1.6 conda 常用命令 2、使用 miniconda 安装 d2l2.1 下载 d2l 安装包2.2 安装 d2l 1、安装 Miniconda 参考: https://www.jb51.n…

云尘-JIS-CTF-VulnUpload

继续做渗透 一样给了c段 开扫 存在一个站点 去看看 扫一下吧 第一个flag出来了 存在robots.txt 去看看 admin 页面源代码 第二个flag和账号密码 登入 就一个上传点 这不明显死了哈哈哈哈哈哈哈 直接开喽 上传修改后缀一气呵成 发现只有success 但是我们刚刚robots存在uploa…

十五、redis的使用

目录 一、简介1.1 nosql介绍1.2 redis特性1.3 redis优势1.4 redis应用场景 二、安装2.1 Macos下安装2.2 Linux下安装2.4 客户端连接2.5 切换数据库 三、数据库操作3.1 string类型3.2 键的操作3.3 Hash类型3.4 list类型3.5 set类型3.6 zset类型 四、和python交互4.1 安装redis包…

3.2每日一题(定积分求抽水做工问题)

1、画图,把题目的容器画出来:球形容器,半径为R 2、根据容器的形状进行分析: 抽水的实质是不同深度的水抽出去走的位移是不一样的>抽水的过程 : (1)先考虑深度为 x到xdx 的薄层水抽出去做多少…

草料资料库丨2023年全国消防宣传月资料合集,免费下载

2023年11月9日是第32个全国消防日,国务院安委会办公室决定于11月份在全国开展消防宣传月活动,主题是“预防为主,生命至上”。 结合今年消防安全月相关要求,我们特邀 注册安全工程师 邵悦 为大家整理了2023年全国消防宣传月的资料…

2023-在mac下安装Homebrew的国内镜像

mac安装Homebrew的国内镜像 尝试使用其他下载源:GitHub 可能会受到访问限制,尝试使用其他镜像或下载源。您可以使用清华大学、中科大或阿里云的 Homebrew 镜像,以提高下载速度和可靠性。例如,可以使用阿里云的镜像来安装 Homebre…

myCobot 320 APP 控制技术案例

引言 机械臂是现代工业和科研领域中的重要工具,它们在制造业、医疗、农业、教育等多个领域都有广泛的应用。这些机器臂不仅可以进行精密操作,而且能够在人类无法进入的危险环境中工作,大大提高了工作效率和安全性。然而,传统的机械…

UE5 日记(人物连招:蒙太奇动画通知(含视频链接))

教程https://www.youtube.com/watch?vsWpENaVGj2M&listPLiSlOaRBfgkcPAhYpGps16PT_9f28amXi&index10&ppiAQB 相关蓝图 连招逻辑 动画通知类 逻辑分析 1.用户输入 已搭载战斗系统模块,可以收到输入指令 2.连击 第一次攻击: 第一次攻击,…

camtasia studio 2024功能介绍安装教程

Camtasia studio 2024是一款功能强大的屏幕录制和视频编辑软件。它可以帮助用户轻松地记录电脑屏幕上的任何操作,并可以将录制的视频进行编辑和制作成高质量的视频教程、演示文稿、培训课程等。 Camtasia studio 2024具有直观的界面和易于使用的工具,包…

springboot动态数据源【非伪数据源】

说明&#xff1a;本文章的数据源不是在配置文件中配置两个或多个数据源&#xff0c;在业务方面对这些数据源来回切换&#xff0c;本文章中的数据源是可以动态添加&#xff0c;修改&#xff0c;切换的&#xff0c;废话不多说。 先看工程图&#xff1a; 1.pom.xml文件 <?x…

第五章 I/O管理 三、I/O控制方式(程序直接控制、中断驱动方式、DMA方式、通道控制方式)

目录 一、程序直接控制方式 1、以读操作为例 2、CPU的干预 3、数据传送的单位 4、数据的流向 5、优点 6、缺点 二、中断驱动方式 1、定义&#xff1a; 2、CPU干预的频率 3、数据传送的单位 4、数据的流向 5、主要缺点和主要优点 优点: 缺点: 三、DMA方式&#x…