当前位置: 首页 > news >正文

分布式系统容灾部署方案

本文主要以OceanBase部署来说明分布式系统容灾部署方案

分布式系统提供持续可用的服务尤为重要。

好的分布式系统根据需求提供不同等级的的高可用与容灾级别。

而在分布式系统中,数据库系统又是最核心最关键的系统。

我们以数据库分布式系统为主,考虑其容灾部署方案。

数据库分布式系统容灾部署方案,首先需要满足足业务服务延时的需求,然后需要满足我们约定的容灾原则,再有就是灾部署需要较多物理资源,需要尽可能通过技术降低使用成本。

根据经验,容灾需要遵守以下原则:

  1. RPO等于0,可以保证数据不丢

  2. RTO为秒级,在发生故障后,恢复服务时间尽可能短

  3. 分布式系统通过多副本提供高可用

  4. 通过多数派一致性协议保证多副本数据一致性

根据以上容灾部署原则,我们讨论几种的容灾部署方案:

  1. 同机房三副本

  2. 同城三机房三副本

  3. 两地三中心三副本

  4. 两地三中心五副本

  5. 三地三中心五副本

  6. 三地五中心五副本

容灾部署中基本概念:

  1. 地域:指数据中心所在的地理区域,通常按照数据中心所在的城市划分。例如,华北1(青岛)地域表示数据中心所在的城市是青岛。

  2. 容灾部署方案中,机房与中心均指数据中心(IDC)。

  3. 容灾部署方案中,Zone为一个逻辑概念,表示集群内逻辑划分的一组节点。如属于一个机架的一组节点,属于一个数据中心的一组节点。

考虑网络延时,以下为一组IDC间的网络延时:

  1. 同城延时2ms

  2. 相邻异地延时8ms

  3. 远程异地延时30ms

可以看到相邻异地延时与远程异地延时都非常高,一个事务包含6~15条SQL语句,累计耗时非常高,所以一定要提前考虑好业务对服务延时的需求与业务SQL优化等问题。

同时为了降低成本,可以考虑

  1. 部署日志副本替代全功能副本

  2. 部署仲裁服务替代全功能副本

方案对比

容灾方案

网络延时

容灾级别

RPO

RTO

部署成本

同机房三副本

1ms

机器/机架

0

8s 内

1个IDC,6个节点

同城三机房三副本

2ms

机房

0

8s 内

3个IDC,6个节点

两地三中心三副本

2ms

机房

0

8s 内

2个城市,3个IDC,6个节点

两地三中心五副本

2ms

机房

0

8s 内

2个城市,3个IDC,10个节点

三地三中心五副本

8ms

地域

0

8s 内

3个城市,3个IDC,10个节点

三地五中心五副本

8ms

地域

0

8s 内

3个城市,5个IDC,10个节点

同机房三副本

这一方案可用于非生产环境,同时可以支持机架容灾级别。

  1. 1个机房,3个Zone,3个副本

  2. 业务容忍同机房数据同步延时

  3. 部署

    1. 1个数据中心(机房)

    2. 3个Zone

    3. 2 * 3 = 6个节点

    4. 1个机房,按照机架部署3个Zone

  4. 容灾

    1. 单节点故障,不丢数据,服务可用,服务延时不变

    2. 单Zone故障,不丢数据,服务可用,服务延时不变

  5. 成本优化

同城三机房三副本

这一方案支持机房级容灾。

  1. 1个城市,3个机房,3个Zone,3个副本

  2. 业务容忍同城数据同步延时

  3. 部署

    1. 3个数据中心(机房)

    2. 3个Zone

    3. 2 * 3 = 6个节点

    4. 同城3个机房,每个机房部署3个Zone

  4. 容灾

    1. 单节点故障,不丢数据,服务可用,服务延时不变

    2. 单Zone故障,不丢数据,服务可用,服务延时不变

    3. 单机房故障,不丢数据,服务可用,服务延时不变

  5. 成本优化

    1. 为了降低成本,第三机房部署仲裁服务(无需同步日志)。

两地三中心三副本

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

相比传统金融业的两地三中心(一主一备,一冷备),提供RPO=0,RTO在8秒内。传统部署很难做到RPO=0,也很难在秒级内恢复服务。

  1. 2个城市,3个机房,3个Zone,3个副本

  2. 业务容忍同城数据同步延时

  3. 部署

    1. 3个数据中心(机房)

    2. 3个Zone

    3. 2 * 3 = 6个节点

    4. 主城市2个机房,备城市1个机房,每个机房部署一个Zone

  4. 容灾

    1. 单节点故障,不丢数据,服务可用,服务延时变大

    2. 主城市单机房故障,不丢数据,服务可用,服务延时变大

  5. 成本优化

两地三中心五副本

这一方案是两地三中心三副本部署方案的进化,用于解决两地三中心三副本部署方案在多副本所在城市发生机房故障时引入的事务提交跨城市问题 。

这一方案可以在备城市建立备用集群,做到有损地域容灾。

  1. 2个城市,3个机房,5个Zone,5个副本

  2. 业务容忍同城数据同步延时

  3. 部署

    1. 3个数据中心(机房)

    2. 5个Zone

    3. 2 * 5 = 10个节点

    4. 主城市2个机房,分别部署两个Zone,备城市部署一个Zone

  4. 容灾

    1. 单节点故障,不丢数据,服务可用,服务延时不变

    2. 单Zone故障,不丢数据,服务可用,服务延时不变

    3. 两Zone故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变

    4. 单机房故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变

    5. 单地域故障,主地域故障,会丢数据,服务不可用;备地域故障,不丢数据,服务可用,服务延时不变

    6. 备用城市建设一个独立的 3 副本集群,做为一个备库,从主库 "异步同步" 到备库。一旦主城市遭遇灾难,备城市可以接管业务。(有损地域容灾)

  5. 成本优化

    1. 为了降低成本,可以分别将 IDC1 和 IDC2 的各 1 个副本部署为日志副本。日志副本不提供服务,仅仅接受日志用于故障恢复,从而只需要存储并服务 3 份数据。

    2. 为降低成本,Region2可以只部署仲裁服务(无需同步日志)。

三地三中心五副本

两地三中心部署方案的问题在于不支持异地容灾。为了支持地域级无损容灾,至少需要 3 个地域.

  1. 3个城市,3个机房,5个Zone,5个副本

  2. 业务容忍异地数据同步延时

  3. 部署

    1. 3个数据中心(机房)

    2. 5个Zone

    3. 2 * 5 = 10个节点

    4. 每个城市一个机房,相邻两个城市的机房分别署两个Zone,剩下一个城市的机房部署一个Zone

  4. 容灾

    1. 单节点故障,不丢数据,服务可用,服务延时不变

    2. 单Zone故障,不丢数据,服务可用,服务延时不变

    3. 两Zone故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变

    4. 单机房故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变,此时跨地域容灾RPO不为0

    5. 单地域故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变,此时跨地域容灾RPO不为0

  5. 成本优化

    1. 为降低成本,Region3 可以只部署日志型副本(只有日志)。

三地五中心五副本

与三地三中心五副本相比,该部署方案进一步强化机房容灾能力。单机房故障不影响服务。

  1. 3个城市,5个机房,5个Zone,5个副本

  2. 业务容忍异地数据同步延时

  3. 部署

    1. 5个数据中心(机房)

    2. 2 * 5 = 10个节点

    3. 两个相邻城市,每个城市部署两个机房,剩下一个城市部署一个机房,每个机房部署一个Zone

  4. 容灾

    1. 单节点故障,不丢数据,服务可用,服务延时不变

    2. 单机房故障,不丢数据,服务可用,服务延时不变

    3. 两机房故障,不丢数据,服务可用,服务延时变大。集群降级为3副本,服务延时不变

    4. 单地域故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变,此时跨地域容灾RPO不为0

  5. 成本优化

    1. 为降低成本,Region3 可以只部署日志型副本(只有日志)。

    2. 为降低成本,Region3 部署仲裁服务以降低成本(无需同步日志)。

总结

分布式系统容灾部署需要考虑众多因素

  1. 服务响应延迟要求

  2. 服务容灾级别、RPO、RTO

  3. 服务部署成本

权衡以上因素,选择合适的容灾部署方案。

考虑大部分应用需要做到机房级(IDC)容灾,同时要求服务响应较快,可以使用 两地三中心五副本 容灾部署方案。如果资源有限,应用可以容忍故障期间延时变大,可以采用 两地三中心三副本 容灾部署。

参考

  1. ECS的服务地域

  2. OceanBase 集群高可用方案简介

  3. OceanBase 容灾部署方案

相关文章:

分布式系统容灾部署方案

本文主要以OceanBase部署来说明分布式系统容灾部署方案 分布式系统提供持续可用的服务尤为重要。 好的分布式系统根据需求提供不同等级的的高可用与容灾级别。 而在分布式系统中,数据库系统又是最核心最关键的系统。 我们以数据库分布式系统为主,考虑…...

Python 爬虫性能相关总结

这里我们通过请求网页例子来一步步理解爬虫性能 当我们有一个列表存放了一些url需要我们获取相关数据,我们首先想到的是循环 简单的循环串行 这一种方法相对来说是最慢的,因为一个一个循环,耗时是最长的,是所有的时间总和 代码…...

Baumer工业相机堡盟工业相机如何设置网口的IP地址(工业相机连接的网口设置IP地址步骤)

Baumer工业相机堡盟工业相机如何设置网口的IP地址(工业相机连接的网口设置IP地址步骤)Baumer工业相机Baumer工业相机设置网络端口IP地址匹配设置网络端口IP地址和工业相机IP地址匹配第一次打开CameraExplorer软件确认问题为IP地址不匹配问题打开网络连接…...

Android MediaCodec设置H264 Profile到High

H264 High Profile压缩率高,能降低码率,这里记录下MediaCodec Profile设置到High遇到的一些问题。 Android 4.1 就引入了MediaCodecInfo.CodecProfileLevel类,下面截取H264(AVC)的Profile和Level定义: /** Copyright (C) 2012 The Android O…...

QT之QSysInfo(查看电脑信息)

文章目录前言一、API使用总结前言 QSysInfo是Qt中用于获取有关运行应用程序的系统信息的类。 我们可以获取以下信息: 返回系统产品类型,如ios,windows,Linux等 返回当前系统的产品版本。 返回当前系统的内核类型。 返回当前系统的…...

中国塑料编织袋产业竞争状况及投资前景预测报告2023-2029年

中国塑料编织袋产业竞争状况及投资前景预测报告2023-2029年 KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK 《报告编号》: BG451639 《出版时间》: 2023年4月 《出版机构》: 中智正业研究院 免费售后 服务一年,具体内容及订购流程欢迎咨询客服人员 内容简介&…...

从头用脚分析FFmpeg源码 - av_read_frame

av_read_frame作用 /*** Return the next frame of a stream.* This function returns what is stored in the file, and does not validate* that what is there are valid frames for the decoder. It will split what is* stored in the file into frames and return one f…...

第17章_触发器

第17章_触发器 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某公…...

3956. 截断数组

3956. 截断数组 - AcWing题库 3956. 截断数组 【题目描述】 给定一个长度为 nn 的数组 a1,a2,…,ana1,a2,…,an。 现在,要将该数组从中间截断,得到三个非空子数组。 要求,三个子数组内各元素之和都相等。 请问,共有多少种不同…...

React Labs: 我们最近在做什么——2023 年 3 月

原文:https://react.dev/blog/2023/03/22/react-labs-what-we-have-been-working-on-march-2023 React Server Components React Server Components(下文简称 RSC) 是由 React 团队设计的新应用程序架构。 我们首先在一个介绍性演讲和一个RFC中分享了我们对 RSC 的…...

文件系统设计详解

抽象的文件系统以目录的形式来组织文件,我们可以利用该文件系统来读取某个文件的内容,也可以对目录或者文件实施监控并及时获取变化的通知。 IChangeToken IChangeToken对象就是一个与某组监控数据相关联的“令牌”(Token)&#x…...

好看~立马启动python实现美女通通下

人生苦短,我用python一、环境版本使用二、代码实现思路三、代码展示:导入模块伪装(请求头)四、部分好看截图,更多的就自己去采集噜~吃饭放松的时候哇一不小心看见了很多好看的东西 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 独乐乐不如众乐乐&#xf…...

Git 安装设置

1、安装 安装以下三个软件: Git-2.13.3-64-bit.exe TortoiseGit-2.4.0.2-64bit.msi TortoiseGit-LanguagePack-2.4.0.0-64bit-zh_CN.msi 安装过程中不用填写、不用选择,全部点"下一步",完成后需要重启机器。 2、基本设…...

Python-闭包

介绍 Python的闭包是一种高级的编程技巧,它可以在函数内部定义另一个函数,并返回该函数的引用。这个内部函数可以访问外部函数的变量和参数,即使外部函数已经执行完毕 好处 1)闭包可以避免全局变量的污染,使得代码更…...

Gitlab中Pipeline语法四

Gitlab中Pipeline语法 cache cache:paths 在job build中定义缓存,将会缓存target目录下的所有*.jar文件当全局定义了cache:paths会被job中覆盖.以下实例将缓存target目录 buld:script: buildcache:paths:- target/*.jar#设置key可以解决cache被覆盖 cache:paths:- my/files…...

Go语言精修(尚硅谷笔记)第五章

五、程序流程控制 5.1 单分支控制 package main import ("fmt" )func main() {//请大家看个案例[ifDemo.go]://编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁,则输出 "你年龄大//于18,要对自己的行为负责!"//分析 //1.年龄 > var age int…...

三、MySQL 高级(DML 增删改)

三、MySQL 高级(DML 增删改) 3.1 DML 数据操纵语言 DML(Data Manipulation Language)DML对数据库中表记录的执行操作 插入(INSERT) 插入单行数据 插入多行数据 将查询结果插入到新表 更新&#xff08…...

面向AI编程的本质是什么?

面向AI编程的本质是什么? 面向AI编程的本质是编程的第五代编程语言,与自然语言非常相似,但是是有区别的。 因此出现了针对与AI通话的提示工程。 简单地回顾一下编程语言的发展史, 第一代编程语言是机器语言,它直接使…...

深入浅出——深度学习训练中的warmup

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…...

你知道如何用C语言将格式化数据和字符串相互转换吗?

今天重点介绍2个函数,分别是sprintf和sscanf,用来将格式化数据和字符串相互转换。它们的作用分别是: sprintf函数用于将格式化数据转换成字符串。sscanf函数用于将字符串转换成格式化数据。 接下来是第一个大问题:我怎么记忆呢&…...

免费一键生成原创文章-原创文章批量生成

免费使用一键生成原创文章,轻松解决写作难题! 您是否因为写作枯竭、文章档次不高,而感到烦恼?现在,我们有一个免费的文章创作工具,帮助您无需付出太多的努力就能高效地创造原创文章。 一键生成&#xff1…...

【数据库管理】④重做日志Redo Log

1. Redo log(重做日志)的功能 重做日志(Redo log)是数据库管理系统中的一种机制,主要作用包括: 提供事务的持久性支持:重做日志记录了每个事务对数据库所做的修改操作,以便在系统故障或崩溃时,通…...

5-python文件操作

文章目录1.打开文件2.文件读取3.文件关闭4.文件写入/追加1.打开文件 当传参顺序不一致时,不能使用位置传参,应使用关键字传参 open(file, mode‘r’, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone) 通常使用&#xf…...

企业级Oracle入门Linux/Unix基础①

1、了解计算机系统的组成、操作系统介绍、IT技术发展与云计算、服务器的分类、存储设备介绍、常用的主机存储有哪些? 1.1 计算机系统的组成: 计算机系统由硬件和软件两部分组成。硬件包括中央处理器(CPU)、内存、输入输出设备、…...

NexNoSQL Client:Elasticsearch、Redis、MongoDB三合一的可视化客户端管理工具

背景: 工作中我们使用了Elasticsearch作为存储,来支持内容的搜索,Elasticsearch这个软件大家都耳熟能详,它是一个分布式、高扩展、高实时的搜索与数据分析引擎,不仅仅支持文本索引,还支持聚合操作&#xf…...

如果大学能重来,我绝对能吊打90%的大学生,早知道这方法就好了

最近收到很多大学生粉丝的私信,大多数粉丝们都迷茫着大学计算机该怎么学,毕业后才能找到好工作。 可能是最近回答这方面的问题有点多,昨晚还真梦回大学…其实工作了20多年,当过高管,创过业,就差没写书了。…...

FactoryBean是现在的执行时机

调用getBean方法,最终到org.springframework.beans.factory.support.DefaultListableBeanFactory#preInstantiateSingletons方法: for (String beanName : beanNames) {RootBeanDefinition bd getMergedLocalBeanDefinition(beanName);if (!bd.isAbstr…...

自定义注解使用

现象: 自定义注解使用 方法: 1:元注解 java.lang.annotation 下定义了元注解 Documented 文档相关 标注了此注解则会包含在javadoc文档中Retention 指定注解生命周期Target 指定注解作用范围Inherited 指定子类可以继承父类的注解Native …...

2023年全国最新高校辅导员精选真题及答案42

百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 89.侵犯行为是一种故意伤害他人的行为,一般包括了动机、行为和后果。 答案&a…...

Python模拟星空

文章目录前言Turtle基础1.1 Turtle画板1.2 Turtle画笔1.3 Turtle画图1.4 Turtle填色1.5 Turtle写字模拟星空模拟星球浪漫星空尾声前言 Python模拟星空,你值得拥有!uu们一周不见啦,本周博主参考网上大佬们的星空,给大家带来了属于…...