从两地三中心到多地多中心,OceanBase如何实现金融级高可用

“两地三中心”已成为金融领域基准的容灾部署模式。本文将简要阐述金融行业容灾架构中“两地三中心”的具体要求和部署,并进一步探讨OceanBase在实现“两地三中心”标准后,再至“多地多中心”部署中所展现的独特优势与特点。

商业银行的容灾要求

《商业银行数据中心监管指引》中明确规定了商业银行数据中心的要求。

第七条 总资产规模一千亿元人民币以上且跨省设立分支机构的法人商业银行,及省级农村信用联合社应设立 异地模式灾备中心 ,重要信息系统灾难恢复能力应达到《信息安全技术信息系统灾难恢复规范》中定义的灾难恢复等级 第5级 (含)以上;其他法人商业银行应设立同城模式灾备中心并实现数据异地备份,重要信息系统灾难恢复能力应达到《信息安全技术信息系统灾难恢复规范》中定义的灾难恢复等级第4级(含)以上。

灾难恢复第5级是个什么意思呢?可以参考 这篇文档, 简单地说,灾难恢复级别有一到六,共六个级别,级别越高要求就越高。一到三级不要求热备,只要有定时的冷备即可;四到六级要求有热备,区别如下:

  • 第四级不要求有远程备份,也不要求实时备份。(RPO数小时到一天,RTO数小时到两天)
  • 第五级要求有远程备份和实时备份。(RPO小于30分钟,RTO数分钟到两天)
  • 第六级要求数据零丢失,灾难自动切换(RPO = 0, RTO数分钟)

总结起来就是商业银行数据中心一定要有实时备份和异地热备,否则就不符合要求。

两地三中心

"两地三中心"指的是一种可以满足要求的容灾架构。两地是指同城、异地,三中心是指生产中心、同城容灾中心、异地容灾中心。同城双中心加异地灾备中心即“两地三中心”,这一方案兼具高可用性和灾难备份的能力。

  • 同城双中心是指在同城或邻近城市建立两个可独立承担关键系统运行的数据中心,并可切换运行;灾难情况下可在基本不丢失数据的情况下进行灾备应急切换,保持业务连续运行。
  • 异地灾备中心是指在异地的城市建立一个备份的灾备中心,用于双中心的数据备份,当双中心出现自然灾害等原因而发生故障时,异地灾备中心可以用备份数据进行业务的恢复。

同城两中心、异地两中心、两地三中心如下图所示:

ldszx.png

从两地三中心的定义来看,实际上阿里和蚂蚁内部的一些业务部署已经实现甚至超过了两地三中心的要求了。

RPO和RTO

两地三中心模式下,有两种灾难恢复。

  • 同城切换:生产中心故障,切换到同城容灾中心。
  • 异地切换:生产中心和同城容灾中心都故障,切换到异地容灾中心。

指引中并不要求同城和异地切换的不丢数据,对RTO的要求其实也是比较宽松的(切换时间小于60分钟)。现有的实际系统也基本没有能做到RPO = 0的。

双活的问题

两地三中心是个比较笼统的概念,并不要求同城的双中心都可以提供读写服务,实际的系统可以分为三类:

  • 同城容灾中心不能提供读写服务
  • 同城容灾中心可以提供读服务
  • 同城容灾中心可以提供读写服务

只有第三类才能叫做"双活", 一种双活的部署示意图图如下:

实现双活,数据要做双向复制,所以通常只能选择逻辑复制,比如Oracle的GoldenGate和Alibaba集团的DRC。

容灾方案的各种权衡

  • 容灾能力和成本的权衡:备份越多,数据就越安全,但同时成本就越高。
  • 强一致和高可用的权衡:如果采用Oracle的最大保护模式,那么当热备不可用的时候,主库也不可写入,可用性降低,无法接受;如果不采用最大保护模式,就无法保证切换时不丢数据,也不完美。这是典型的CAP权衡.
  • RPO和RTO的权衡:假设备份是异步复制的,当灾难发生时,如果立即切换,可以保证RTO较小,但会丢数据;如果等主库恢复,可以不丢数据,但保证不了RTO,如果主库永远恢复不了,那么RTO就是无穷大了。
  • 异地强同步和事务延迟的矛盾:如果要做到异地切换不丢数据,那么就要把数据强同步到异地,这样事务commit延迟就会变大,业务可能无法接受。如果要做到commit延迟小,那么异地备份就只能是异步的,这也就意味着异地切换一定会有丢数据的风险。

OceanBase如何处理上面的各种选择题的

  • 容灾能力 vs 成本:不牺牲容灾能力, 想办法降低成本。我们相信有足够的技术手段在不降低容灾能力的前提下有效降成本。
  • 强一致vs 高可用:放弃主备模式,采用Paxos协议,同时达到强一致和实践上的高可用。这个区别对容灾方案来说是根本性的。
  • RPO vs RTO:因为我们坚持强同步,因此不存在RPO和RTO的权衡。
  • 异地强同步和事务延迟的矛盾:这是唯一一个无法完美解决的矛盾, 最终需要由业务决策。OceanBase即支持远程强同步,也支持远程异步同步。但OceanBase作为一个分布式数据库有潜力能帮助业务更好地解决事务延迟的问题。

总结一下,RPO > 0是一种妥协,长远来看,RPO = 0会变得越来越重要,如果不能保证RPO = 0,数据库系统就把本质的复杂性暴露出去了。就好比ACID这些年逐渐成为分布式数据库的标配(new SQL vs No SQL),我们可以期待某一天RPO = 0也成为容灾的标配。

OceanBase支持的多地多中心部署方式

OceanBase作为分布式数据库,以Partition为单位管理数据,每个Partition有多个副本,多副本之间使用Paxos协议同步日志,任意时刻,只要多数派的副本正常,这个Partition就可以提供读写服务。

OceanBase支持的最常见的部署方法是两地三中心、三地三中心及三地五中心,这三种方案都要求每个Partition有5个副本。

两地三中心

ob-221.png

假设深圳有两个机房,上海一个机房。对于每个分区,深圳机房分别部署两个副本,上海机房只部署一个副本,形成“2 + 2 + 1”部署。每个分区总共包含五个副本。

这种方案的好处是:

  • 正常情况下,只需要强同步深圳的三个副本即可,每次事务提交增加的网络延时在1.9毫秒之内。
  • 任意一个机房故障,不丢数据,并且事务延迟不受影响。当上海机房出现故障时,仍然只需要强同步深圳的三个副本,系统无影响。当深圳机房出现故障时,例如深圳2机房故障,OceanBase的做法是利用Paxos协议做一次成员变更操作,将深圳2机房的副本从Paxos选举组中剔除,副本总数由五个变成三个。这样,以后只需要同步三个副本中的两个即可,避免了跨地区同步。

三地三中心和三地五中心

三地三中心和两地三中心部署是很相似的,不过把三个机房分布在了三个城市,这样任何一个城市故障,都不会丢数据。

三地五中心相比于三地三中心, 需要五个机房,把每个副本部署到不同的机房,进一步强化机房容灾能力。

三地部署,实现了城市级容灾,但牺牲了事务延迟,是否采用三地部署需要业务的权衡。蚂蚁的业务通常要操作多个数据库,数据库的commit延迟到业务层面会被放大很多倍。通常业务需要改造才能容忍commit延迟从1ms放大到几十ms, 业务改造的问题这里不详细讨论,但是OceanBase作为一个容量可扩展的分布式数据库,理论上是可以把蚂蚁的业务要操作的表都放到一个OceanBase数据库里,相比于单机数据库有更多的可能减小网络延迟的影响,

交叉部署

OceanBase以Partition为单位组织数据,不同Partition都是独立管理的,不同Partition的leader可以是不同的。这样的话,我们把不同Partition的leader分布在不同的机房,就可以把写流量分布在不同的机房,避免浪费机房资源。这本质是实现了双活。

传统主备模式用两份机器资源,提供了一份的写能力,OceanBase用三分机器资源,实现了两份的写能力,算起来主备模式的机器利用率只有OceanBase的3/4.

日志副本

一个副本的占用的资源包括:磁盘,内存,CPU。

为了进一步节省机器成本,OceanBase可以选择让一个Partition的5个副本中的部分副本不回放redo log,这样可以省掉CPU和内存资源,甚至不保存静态数据,这样可以省掉磁盘空间。只同步redo log,不保存静态数据,也不回放redo log的副本我们叫日志副本, 对应地,正常的副本也叫全量副本。

实际"2 + 2 + 1"部署的时候,可以选择(全 + 日, 全 + 日,全) 这种部署方法。也即前两个机房各有一个全量副本,一个日志副本,最后一个机房只有一个全量副本。

redo log的量相比于静态数据是较少的,所以日志副本占用的资源相比于全量副本是很小的,可以认为OceanBase虽然部署了5副本,但只占用了三副本的资源。

OceanBase灾备方案的优点

传统主备模式只能做到第五级的灾难恢复,OceanBase能达到第六级的灾难恢复,同时还能做到较高的资源利用率。

  • RPO: 同城切换不丢数据, 如果采用三地部署,可以做到异地切换不丢数据。
  • RTO: 不管是同城还是异地,只要是不丢数据的切换,都可以做到一分钟内完成。丢数据的切换也可以在数分钟之内完成。
  • 多活:把不同Partition的leader分到不同的机房,可以实现双活或多活。
  • 运维: 数据同步是数据库内置的功能,不依赖于数据库之外的设施,运维方便。

总结

两地三中心是一类实现高可用和异地容灾的部署模式,这种模式也是对金融行业数据中心的基本要求。

容灾方案要考虑各种权衡,其中最核心的一个决定是是否做到RPO = 0,传统数据库主备模式实现的两地三中心放弃了RPO = 0的目标,无法保证同城切换不丢数据,更不用说异地切换了。OceanBase底层采用Paxos协议做多副本数据复制,支持两地三中心部署,可以做到同城机房切换不丢数据。

除此之外,OceanBase还支持三地三中心,三地五中心等部署方法,如果采用三地部署,可以做到异地切换不丢数据。传统数据库要实现双活通常要采用双向逻辑复制,OceanBase可以通过把不同Partition的leader分布在不同的机房来实现双活或多活,相比于双向逻辑复制,更为可靠,运维也更方便。

最后,通过引入日志副本,OceanBase虽然部署了五副本来实现高可用,但实际占用的资源相当于三副本。

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

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

相关文章

九、数据治理架构流程

一、总体结构 《数据治理架构流程图》(Data Governance Architecture Flowchart) 水平结构:流程图采用水平组织,显示从数据源到数据应用的进程。 垂直结构:每个水平部分进一步划分为垂直列,代表数据治理的…

6.将cr打包成网络服务|使用postman进行测试|编写oj_server的服务路由功能(C++)

将cr打包成网络服务 compile_server.cc #include "compile_run.hpp" #include "../comm/httplib.h"using namespace ns_compile_and_run; using namespace httplib;//编译服务随时可能被多个人请求,必须保证传递上来的code,形成源…

js前端数据加密 CryptoJS库加密 黑盒情况下寻找web的加密算法 代码混淆

前言 前端的数据加密是对用户的输入的一个常见的加密方法 还有的就是防止我们的sql注入 如 idMQ 这个其实解密出来就是 id 1 所以注入的思路就是 把 1和payload 一起加密然后 再进行注入 客户端的加密 > 数据加密传输 > 服务端解密 > 服务端的处理 传输的…

window平台上qtcreator上使用opencv报错

平台:win11 随便在网上下载一个别人编译好的opencv,发现运行报错 发现此次下载的opencv,别人在编译时选用的mingw版本应该和我电脑目前安装的mingw的版本不太一致 右键桌面的qtcreator图标,进入Tools目录,可以看到mingw的版本是…

Android之APP更新(通过接口更新)

文章目录 前言一、效果图二、实现步骤1.AndroidManifest权限申请2.activity实现3.有版本更新弹框UpdateappUtilDialog4.下载弹框DownloadAppUtils5.弹框背景图 总结 前言 对于做Android的朋友来说,APP更新功能再常见不过了,因为平台更新审核时间较长&am…

数字信任的底层逻辑:密码学核心技术与现实应用

安全和密码学 --The Missing Semester of Your CS Education 目录 熵与密码强度密码散列函数密钥体系 3.1 对称加密 3.2 非对称加密信任模型对比典型应用案例安全实践建议扩展练习杂项 密码学是构建数字信任的基石。 本文浅析密码学在现实工具中的应用,涵盖 1&…

达梦有没有类似oerr的功能

在oracle 23ai的sqlplus中&#xff0c;直接看异常信息说明&#xff1a; 达梦没有此功能&#xff0c;但是可以造一个 cd /home/dmdba cat >err.sql<<eof set echo off set ver off set timing off set lineshow off set feedback off select * from V\$ERR_INFO wher…

linux--多进程开发(5)--进程

进程间通讯概念 每两个进程之间都是独立的资源分配单元&#xff0c;不同进程之间不能直接访问另一个进程的资源。 但不同的进程需要进行信息的交互和状态的传递等&#xff0c;因此需要进程间通信&#xff08;IPC,inter processes cimmunication) 进程通信的目的&#xff1a; …

(二)趣学设计模式 之 工厂方法模式!

目录 一、 啥是工厂方法模式&#xff1f;二、 为什么要用工厂方法模式&#xff1f;三、 工厂方法模式怎么实现&#xff1f;四、 工厂方法模式的应用场景五、 工厂方法模式的优点和缺点六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博…

【c语言】字符函数和字符串函数(1)

一、字符分类函数 c语言中有部分函数是专门做字符分类的&#xff0c;也就是一个字符是属于什么类型的字符&#xff0c;这些函 数的使用要包含一个头文件ctype.h中。 其具体如下图所示&#xff1a; 这些函数的使用方式都类似&#xff0c;下面我们通过一个函数来看其…

网络安全 机器学习算法 计算机网络安全机制

&#xff08;一&#xff09;网络操作系统 安全 网络操作系统安全是整个网络系统安全的基础。操作系统安全机制主要包括访问控制和隔离控制。 访问控制系统一般包括主体、客体和安全访问政策 访问控制类型&#xff1a; 自主访问控制强制访问控制 访问控制措施&#xff1a; 入…

企业级大模型应用的Java-Python异构融合架构实践

一、后端语言相关技术生态 Python语言 Python在AI计算领域拥有全面的生态支持&#xff1a; 底层工具库: Pandas、NumPy、SciPy、Matplotlib深度学习框架: PyTorch、TensorFlow领域专用框架: HuggingFace Transformers&#xff08;社区生态为主&#xff09; 常见Python框架 …

Apache Doris 索引的全面剖析与使用指南

搞大数据开发的都知道&#xff0c;想要在海量数据里快速查数据&#xff0c;就像在星图里找一颗特定的星星&#xff0c;贼费劲。不过别慌&#xff0c;数据库索引就是咱们的 “定位神器”&#xff0c;能让查询效率直接起飞&#xff01;就拿 Apache Doris 这个超火的分析型数据库来…

HTTP/HTTPS 服务端口监测的简易实现

一 HTTP/HTTPS 服务端口监测的简易实现方法 在当今快节奏的工作环境中&#xff0c;工作忙碌成为了许多职场人的常态。就拿我们团队最近经历的事情来说&#xff0c;工作任务一个接一个&#xff0c;大家都在各自的岗位上争分夺秒地忙碌着。然而&#xff0c;就在这样高强度的工作…

基于数据可视化学习的卡路里消耗预测分析

数据分析实操集合&#xff1a; 1、关于房间传感器监测数据集的探索 2、EEMD-LSTM模型择时策略 — 1.EEMD分解与LSTM模型搭建 3、EEMD-LSTM模型择时策略 — 2. 量化回测 4、国际超市电商销售数据分析 5、基于问卷调查数据的多元统计数据分析与预测&#xff08;因子分析、对应分…

【初阶数据结构】链表的柔光之美

目录 一、为什么需要链表&#xff1f; 二、链表与数组的对比 三、链表节点定义 四、链表基本操作 1. 创建链表 2. 插入节点 头插法&#xff08;时间复杂度O(1)&#xff09; 尾插法&#xff08;时间复杂度O(n)&#xff09; 3. 删除节点 4. 遍历链表 五、进阶操作 1. 反…

计算机网络:应用层 —— 电子邮件

文章目录 电子邮件的起源与发展电子邮件的组成电子邮件协议邮件发送和接收过程邮件发送协议SMTP协议多用途因特网邮件扩展MIME 电子邮件的信息格式 邮件读取协议邮局协议POP因特网邮件访问协议IMAP 基于万维网的电子邮件 电子邮件&#xff08;E-mail&#xff09;是因特网上最早…

AWVS(web)扫描器安装与使用

目录 前言 1. AWVS 简介与功能特性 1.1 什么是 AWVS&#xff1f; 1.2 主要功能特性 2. AWVS 的安装步骤 2.1 系统要求 2.2 安装步骤&#xff08;以 Windows 为例&#xff09; 3. 配置与初始化 3.1 设置扫描目标 3.2 配置扫描选项 4. AWVS 的使用方法 4.1 自动扫描 …

opencv的C++遇到找不到opencv_worldxxxd.dll

如图所示&#xff1a; 将你缺的这个dll文件复制到 C:\Windows\System32 即可

AI提示工程的挑战与演进

目前让AI按照工作流正确的工作依然存在着提示挑战&#xff0c;提示工程实际上是一套逻辑严密的工作。 根据当前技术发展及行业实践&#xff0c;AI按照工作流正确执行任务仍面临显著的提示工程挑战&#xff0c;而提示工程本身也正在从零散经验向系统化、逻辑严密的方法论演进。以…