当前位置: 首页 > 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函数用于将字符串转换成格式化数据。 接下来是第一个大问题:我怎么记忆呢&…...

034、LVGL默认主题与自定义主题

LVGL默认主题与自定义主题 一次UI“变脸”引发的血案 上周调试一块基于STM32F429的智能家居面板,LVGL版本8.3.5。客户要求界面风格从“科技蓝”改成“暖木色”,我心想不就是改个颜色主题嘛,简单。结果改完lv_conf.h里的LV_THEME_DEFAULT_COLOR_PRIMARY,编译下载,屏幕一亮…...

OpenClaw-RUH:基于深度学习的机器人灵巧抓取框架解析与实践

1. 项目概述:当AI遇上“机械爪”最近在AI和机器人交叉的圈子里,一个名为“OpenClaw-RUH”的项目引起了我的注意。乍一看这个标题,你可能会觉得它又是一个开源的机械臂控制项目。但当我深入其代码仓库和社区讨论后,发现它的野心远不…...

Squirrel-RIFE实战指南:7步掌握AI视频补帧核心技术

Squirrel-RIFE实战指南:7步掌握AI视频补帧核心技术 【免费下载链接】Squirrel-RIFE 效果更好的补帧软件,显存占用更小,是DAIN速度的10-25倍,包含抽帧处理,去除动漫卡顿感 项目地址: https://gitcode.com/gh_mirrors/…...

物联网技术如何重塑智能电网的底层架构

1. 物联网技术重塑智能电网的底层逻辑2003年美加大停电事故导致5000万人陷入黑暗,这场灾难直接催生了现代智能电网的诞生。如今,当我们谈论智能电网时,本质上是在讨论一个由物联网(IoT)技术重构的能源神经系统。这个系统通过海量智能终端实时…...

WinHex不只是编辑器:手把手教你用它做磁盘镜像与克隆(避坑指南)

WinHex专业磁盘镜像与克隆实战指南:从取证备份到避坑技巧 1. 为什么WinHex是磁盘操作的首选利器 在数据恢复和取证领域,专业工具的选择往往决定了工作的成败。WinHex作为一款久经考验的十六进制编辑器,其功能远超出普通用户的想象。不同于常规…...

如何快速修复分区表:开源数据恢复工具的完整指南

如何快速修复分区表:开源数据恢复工具的完整指南 【免费下载链接】testdisk TestDisk & PhotoRec 项目地址: https://gitcode.com/gh_mirrors/te/testdisk 你是否曾因为误删除重要文件而懊恼不已?是否遇到过分区丢失导致数据无法访问的困境&a…...

从MobileNetV1到RetinaFace:轻量化主干网络在人脸检测中的架构演进与实践

1. 轻量化主干网络的演进背景与需求 在移动端和嵌入式设备上实现实时人脸检测一直是计算机视觉领域的重要挑战。传统的人脸检测算法如Viola-Jones虽然计算量小,但在复杂场景下的检测精度有限。随着深度学习技术的发展,基于卷积神经网络的人脸检测方法逐渐…...

【信息科学与工程学】【制造工程】【通信工程】第一百零一篇 2nm 200Tbps+核心交换机全尺度参数宇宙构建框架02

编号 尺度/层级 参数类型 参数名称 数学表达式/物理模型/关联描述 典型值/范围 (目标) 单位 核心关联参数 依赖关系 互斥/协同/传递关系 设计/制造/应用要求 测试/验证方法 关联学科/领域 Switch-692​ 整机/电磁兼容 独立参数 整机对浪涌(冲击)抗扰度的线-线…...

终极指南:调度系统架构设计的核心原理与实践技巧

终极指南:调度系统架构设计的核心原理与实践技巧 【免费下载链接】system-design-101 Explain complex systems using visuals and simple terms. Help you prepare for system design interviews. 项目地址: https://gitcode.com/GitHub_Trending/sy/system-desi…...

视觉暂留与嵌入式编程:打造动态LED光影艺术装置

1. 项目概述:当LED阵列在空中“作画”如果你见过夜晚挥舞的LED光剑在空中留下绚烂的图案,或者火舞者手中的Poi(火球)划出复杂的光轨,那么你已经亲眼目睹了动态成像(Kinetic Persistence of Vision, Kinetic…...