分布式系统容灾部署方案
本文主要以OceanBase部署来说明分布式系统容灾部署方案
分布式系统提供持续可用的服务尤为重要。
好的分布式系统根据需求提供不同等级的的高可用与容灾级别。
而在分布式系统中,数据库系统又是最核心最关键的系统。
我们以数据库分布式系统为主,考虑其容灾部署方案。
数据库分布式系统容灾部署方案,首先需要满足足业务服务延时的需求,然后需要满足我们约定的容灾原则,再有就是灾部署需要较多物理资源,需要尽可能通过技术降低使用成本。
根据经验,容灾需要遵守以下原则:
-
RPO等于0,可以保证数据不丢
-
RTO为秒级,在发生故障后,恢复服务时间尽可能短
-
分布式系统通过多副本提供高可用
-
通过多数派一致性协议保证多副本数据一致性
根据以上容灾部署原则,我们讨论几种的容灾部署方案:
-
同机房三副本
-
同城三机房三副本
-
两地三中心三副本
-
两地三中心五副本
-
三地三中心五副本
-
三地五中心五副本
容灾部署中基本概念:
-
地域:指数据中心所在的地理区域,通常按照数据中心所在的城市划分。例如,华北1(青岛)地域表示数据中心所在的城市是青岛。
-
容灾部署方案中,机房与中心均指数据中心(IDC)。
-
容灾部署方案中,Zone为一个逻辑概念,表示集群内逻辑划分的一组节点。如属于一个机架的一组节点,属于一个数据中心的一组节点。
考虑网络延时,以下为一组IDC间的网络延时:
-
同城延时2ms
-
相邻异地延时8ms
-
远程异地延时30ms
可以看到相邻异地延时与远程异地延时都非常高,一个事务包含6~15条SQL语句,累计耗时非常高,所以一定要提前考虑好业务对服务延时的需求与业务SQL优化等问题。
同时为了降低成本,可以考虑
-
部署日志副本替代全功能副本
-
部署仲裁服务替代全功能副本
方案对比
容灾方案 | 网络延时 | 容灾级别 | 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个机房,3个Zone,3个副本
-
业务容忍同机房数据同步延时
-
部署
-
1个数据中心(机房)
-
3个Zone
-
2 * 3 = 6个节点
-
1个机房,按照机架部署3个Zone
-
-
容灾
-
单节点故障,不丢数据,服务可用,服务延时不变
-
单Zone故障,不丢数据,服务可用,服务延时不变
-
-
成本优化
同城三机房三副本
这一方案支持机房级容灾。
-
1个城市,3个机房,3个Zone,3个副本
-
业务容忍同城数据同步延时
-
部署
-
3个数据中心(机房)
-
3个Zone
-
2 * 3 = 6个节点
-
同城3个机房,每个机房部署3个Zone
-
-
容灾
-
单节点故障,不丢数据,服务可用,服务延时不变
-
单Zone故障,不丢数据,服务可用,服务延时不变
-
单机房故障,不丢数据,服务可用,服务延时不变
-
-
成本优化
-
为了降低成本,第三机房部署仲裁服务(无需同步日志)。
-
两地三中心三副本
两地三中心是一类实现高可用和异地容灾的部署模式,这种模式也是监管机构对金融行业数据中心的基本要求。
相比传统金融业的两地三中心(一主一备,一冷备),提供RPO=0,RTO在8秒内。传统部署很难做到RPO=0,也很难在秒级内恢复服务。
-
2个城市,3个机房,3个Zone,3个副本
-
业务容忍同城数据同步延时
-
部署
-
3个数据中心(机房)
-
3个Zone
-
2 * 3 = 6个节点
-
主城市2个机房,备城市1个机房,每个机房部署一个Zone
-
-
容灾
-
单节点故障,不丢数据,服务可用,服务延时变大
-
主城市单机房故障,不丢数据,服务可用,服务延时变大
-
-
成本优化
两地三中心五副本
这一方案是两地三中心三副本部署方案的进化,用于解决两地三中心三副本部署方案在多副本所在城市发生机房故障时引入的事务提交跨城市问题 。
这一方案可以在备城市建立备用集群,做到有损地域容灾。
-
2个城市,3个机房,5个Zone,5个副本
-
业务容忍同城数据同步延时
-
部署
-
3个数据中心(机房)
-
5个Zone
-
2 * 5 = 10个节点
-
主城市2个机房,分别部署两个Zone,备城市部署一个Zone
-
-
容灾
-
单节点故障,不丢数据,服务可用,服务延时不变
-
单Zone故障,不丢数据,服务可用,服务延时不变
-
两Zone故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变
-
单机房故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变
-
单地域故障,主地域故障,会丢数据,服务不可用;备地域故障,不丢数据,服务可用,服务延时不变
-
备用城市建设一个独立的 3 副本集群,做为一个备库,从主库 "异步同步" 到备库。一旦主城市遭遇灾难,备城市可以接管业务。(有损地域容灾)
-
-
成本优化
-
为了降低成本,可以分别将 IDC1 和 IDC2 的各 1 个副本部署为日志副本。日志副本不提供服务,仅仅接受日志用于故障恢复,从而只需要存储并服务 3 份数据。
-
为降低成本,Region2可以只部署仲裁服务(无需同步日志)。
-
三地三中心五副本
两地三中心部署方案的问题在于不支持异地容灾。为了支持地域级无损容灾,至少需要 3 个地域.
-
3个城市,3个机房,5个Zone,5个副本
-
业务容忍异地数据同步延时
-
部署
-
3个数据中心(机房)
-
5个Zone
-
2 * 5 = 10个节点
-
每个城市一个机房,相邻两个城市的机房分别署两个Zone,剩下一个城市的机房部署一个Zone
-
-
容灾
-
单节点故障,不丢数据,服务可用,服务延时不变
-
单Zone故障,不丢数据,服务可用,服务延时不变
-
两Zone故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变
-
单机房故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变,此时跨地域容灾RPO不为0
-
单地域故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变,此时跨地域容灾RPO不为0
-
-
成本优化
-
为降低成本,Region3 可以只部署日志型副本(只有日志)。
-
三地五中心五副本
与三地三中心五副本相比,该部署方案进一步强化机房容灾能力。单机房故障不影响服务。
-
3个城市,5个机房,5个Zone,5个副本
-
业务容忍异地数据同步延时
-
部署
-
5个数据中心(机房)
-
2 * 5 = 10个节点
-
两个相邻城市,每个城市部署两个机房,剩下一个城市部署一个机房,每个机房部署一个Zone
-
-
容灾
-
单节点故障,不丢数据,服务可用,服务延时不变
-
单机房故障,不丢数据,服务可用,服务延时不变
-
两机房故障,不丢数据,服务可用,服务延时变大。集群降级为3副本,服务延时不变
-
单地域故障,不丢数据,服务可用,服务延时变大,集群降级为3副本,服务延时不变,此时跨地域容灾RPO不为0
-
-
成本优化
-
为降低成本,Region3 可以只部署日志型副本(只有日志)。
-
为降低成本,Region3 部署仲裁服务以降低成本(无需同步日志)。
-
总结
分布式系统容灾部署需要考虑众多因素
-
服务响应延迟要求
-
服务容灾级别、RPO、RTO
-
服务部署成本
权衡以上因素,选择合适的容灾部署方案。
考虑大部分应用需要做到机房级(IDC)容灾,同时要求服务响应较快,可以使用 两地三中心五副本 容灾部署方案。如果资源有限,应用可以容忍故障期间延时变大,可以采用 两地三中心三副本 容灾部署。
参考
-
ECS的服务地域
-
OceanBase 集群高可用方案简介
-
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一、环境版本使用二、代码实现思路三、代码展示:导入模块伪装(请求头)四、部分好看截图,更多的就自己去采集噜~吃饭放松的时候哇一不小心看见了很多好看的东西 哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈 独乐乐不如众乐乐…...

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) 插入单行数据 插入多行数据 将查询结果插入到新表 更新(…...
面向AI编程的本质是什么?
面向AI编程的本质是什么? 面向AI编程的本质是编程的第五代编程语言,与自然语言非常相似,但是是有区别的。 因此出现了针对与AI通话的提示工程。 简单地回顾一下编程语言的发展史, 第一代编程语言是机器语言,它直接使…...

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

你知道如何用C语言将格式化数据和字符串相互转换吗?
今天重点介绍2个函数,分别是sprintf和sscanf,用来将格式化数据和字符串相互转换。它们的作用分别是: sprintf函数用于将格式化数据转换成字符串。sscanf函数用于将字符串转换成格式化数据。 接下来是第一个大问题:我怎么记忆呢&…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...