单元化架构的思考

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion WebUI扩展openpose-editor如何使用

先上地址: GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webuiOpenpose Editor for AUTOMATIC1111s stable-diffusion-webui - GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webu…

高校教务系统登录页面JS分析——天津大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍天津大学教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习,勿用于非法用途。 一、密…

第2篇 机器学习基础 —(4)k-means聚类算法

前言:Hello大家好,我是小哥谈。聚类算法是一种无监督学习方法,它将数据集中的对象分成若干个组或者簇,使得同一组内的对象相似度较高,不同组之间的对象相似度较低。聚类算法可以用于数据挖掘、图像分割、文本分类等领域…

Prometheus+Grafana

一、Prometheus 获取配置文件 docker run -d -p 9090:9090 --name prometheus prom/prometheusmkdir -p /app/prometheusdocker cp prometheus:/etc/prometheus/prometheus.yml /app/prometheus/prometheus.yml停止并删除旧的容器,重新启动 docker run -d --name…

什么是NPM(Node Package Manager)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

sort的第三个参数与priority_queue的第三个模板参数

sort 在C的标准库中,std::sort是一个用于对容器的元素进行排序的算法。它接受三个参数: 1、需要排序的容器的起始迭代器(包含)。 2、需要排序的容器的结束迭代器(不包含)。 3、可选参数,用于指…

腾讯云轻量应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像介绍

腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像,腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍: 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像:独有的应用镜像除了包…

[PHP]pearProject协作系统 v2.8.14 前后端

pearProject是一款轻量级的在线项目/任务协作系统,远程办公协作。 概述 PearProject 不支持 IE8 及以下版本,建议使用基于Webkit内核的现代浏览器访问 PearProject 为前后端分离架构,因此安装分为后端和前端两大部分,需要分别进…

艾奇免费KTV电子相册视频制作软件

不得不承认功能特色支持添加导入图形、视频、歌曲、卡啦ok动态歌词字幕文件:图形文件格式支持导入jpg/jpeg/png/bmp/gif等静态图形;视频文件支持导入AVI/MP4/FLV/MTS/MPG/RMVB等几乎所有常见视频文件;歌曲格式支持mp3/wma/acc/ogg/wav等几乎所…

基于SC-LeGO-LOAM的建图和ndt_localizer的定位

link 基于SC-LeGO-LOAM的建图和ndt_localizer的定位 链接: link. SC-LeGO-LOAM 链接: link. ndt_localizer 将建图和定位两部分分开,利用SC-LeGO-LOAM进行建图,相比于LeGO-LOAM,其采用了Scan Context方法,对点云地图进行闭环检测和…

车载电子电器架构 —— 基于AP定义车载HPC

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

Kubernetes 高级调度 - Affinity

Author:rab 目录 前言一、Node 亲和性1.1 NodeAffinity1.1.1 Hard Node Affinity1.1.2 Soft Node Affinity 1.2 NodeAntiAffinity 二、Pod 亲和性2.1 PodAffinity2.1.1 Hard Pod Affinity2.1.2 Soft Pod Affinity 2.2 PodAntiAffinity 总结 前言 Kubernetes 中的 A…

主从复制(gtid方式)

基于事务的Replication,就是利用GTID来实现的复制 GTID(全局事务标示符)最初由google实现,在MySQL 5.6中引入.GTID在事务提交时生成,由UUID和事务ID组成.uuid会在第一次启动MySQL时生成,保存在数据目录下的…

「专题速递」数据驱动赋能、赛事直播优化、RTC技术、低延时传输引擎、多媒体处理框架、GPU加速...

点击文末阅读原文, 免费报名【抖音背后的体验增长实战揭秘】专场 随着全行业视频化的演进,营销、知识、商业和空间的交互体验正在被重塑。这种变化不仅仅是一种抽象的趋势,更是关系到用户留存和业务增长的关键因素。面对这样的挑战&#xff0…

Debookee 8 for Mac网络数据分析工具

Debookee是一款用于网络数据流量分析和嗅探的软件。它为用户提供了一个直观的界面,让他们能够查看和分析来自从网络上的各种设备的数据流量。 Debookee具有以下主要功能: 实时监控:Debookee可以实时监控网络上的数据流量,并将其显…

pwd - 显示当前工作目录的路径

pwd命令来自英文词组“print working directory”的缩写,其功能是用于显示当前工作目录的路径,即显示所在位置的绝对路径。 在实际工作中,我们经常会在不同目录之间进行切换,为了防止“迷路”,可以使用pwd命令快速查看…

NLP学习笔记:使用 Python 进行NLTK

一、说明 本文和接下来的几篇文章将介绍 Python NLTK 库。NLTK — 自然语言工具包 — NLTK 是一个强大的开源库,用于 NLP 的研究和开发。它内置了 50 多个文本语料库和词汇资源。它支持文本标记化、词性标记、词干提取、词形还原、命名实体提取、分割、分类、语义推…

Python 自动化(十六)静态文件处理

准备工作 将不同day下的代码分目录管理,方便后续复习查阅 (testenv) [rootlocalhost projects]# ls day01 day02 (testenv) [rootlocalhost projects]# mkdir day03 (testenv) [rootlocalhost projects]# cd day03 (testenv) [rootlocalhost day03]# django-admi…

windows docker desktop 更换镜像 加速

最近 docker hub 访问不了; 经过研究 可以通过添加 代理镜像网址 添加代理服务器的方式 实现完美访问 1添加镜像网站 修改成国内镜像地址就能享受到飞一般的速度,但有一个问题,部分站点镜像不全或者镜像比较老,建议使用多个镜像站。 https…

【Tomcat Servlet】如何在idea上部署一个maven项目?

目录 1.创建项目 2.引入依赖 3.创建目录 4.编写代码 5.打包程序 6.部署项目 7.验证程序 什么是Tomcat和Servlet? 以idea2019为例: 1.创建项目 1.1 首先创建maven项目 1.2 项目名称 2.引入依赖 2.1 网址输入mvnrepository.com进入maven中央仓库->地址…