架构训练营学习笔记:4-2 存储架构模式之复制架构

高可用的关键指标

问题:分为故障跟灾难。不是有了多活架构就不在用复制架构 ,还是之前的合适原则:多活架构的技术复杂度 跟成本都比复制架构高。

 高可用的关键指标

  

恢复时间目标(RecoveryTimeObjective,RTO)指为避免在灾难发生后业务连续性中断带来不可接受的结果而使业务流程必须恢复的最早时间期限和服务水平,RTO通常指使得基础设施和系统恢复运行的时间。

恢复点目标(RecoveryPointObjective,RPO)指最大可容忍的数据丢失量,用时间来衡量,这个值代表着数据必须恢复的最早时间点,数据量越大,意味着要投入的资金或者其他资源越多,才能确保在灾难事件中损失的数据越少。

最大允许中断时间(MTD )=RTO+ WRT

工作恢复时间(WorkRecoveryTime,WRT)指系统恢复正常后,恢复业务所需要的时间 ,因为要进行各种业务检查、校验、修复。

主备复制与主从复制

 本质:通过冗余来提升可用性,通过叠加来提升读性能

变化:备机是否提供复制源功能,备机部署地点,主从主备混合部署

优点:实现简单,只需要数据复制,无状态检测和角色切换

缺点:需人工干预,RTO比较大

主备级联复制

变化:备机作为复制源,例如图中备机1就是备机2的复制源

优点:主机故障后,切换备机1为主机,方便快捷,直接修改配置即可,无需修改备机2的配置,无需判断备机1和备机2的数据覆盖问题

缺点:备机1对备份非常关键,备机1宕机会导致两台备份机都备份失效

应用:MySQL、Redis支持这种模式

实际情况下,很少有 团队采用这种方案,这种方案优点减轻多个备机读取主机压力,减轻压力有限,还不如分库分表更实用,此处仅做用对比学习。

主备架构的灾备部署

场景1:IDC-1和IDC-2在同一个城市,可以应对机房级别的灾难

场景2:IDC-1和IDC-2不在同一个城市,可以应对城市级别的灾难

变种:主从架构的灾备部署

场景1:IDC-1 和 IDC-2 在同一个城市,可以应对机房级别的灾难

场景2:IDC-1 和 IDC-2 不在同一个城市,可以应对城市级别的灾难

这里,为啥不把IDC-2的备机改为从机提供读取服务,考虑跨城市的延迟较大。

案例,redis 的模式有主从,主从是client负责的调用。

双机切换架构

主备切换:复杂度很高

优点:可以自动实现故障恢复,RTO短

缺点:实现复杂,需要实现数据复制、状态检测、故障切换、数据冲突处理

应用:内部系统、管理系统(数据量小,业务容忍度高)

主从切换

整体和主备切换类似,差异点在于“切换阶段”,只有主机提供读写服务,主机性能有风险,数据量高情况有可能扛不住。

集群选举架构

 

优点:可以自动实现故障恢复、RTO短,可用性更高

缺点:实现复杂,需要实现数据复制、状态检测、选举算法、故障切换、数据冲突处理

应用:应用广泛,例如Redis、MongoDB等

 案例:

bully\raft\zab\paxos

 

最佳实践-基于ZooKeeper实现

 

基于ZooKeeper来实现双机切换或者集权选举,能够大大降低复杂度,优势有如下几点:

  1. ZooKeeper已经保证了自我的高可用
  2. 基于ZooKeeper,切换或选举过程实现比较简单
  3. ZooKeeper可以有多用途

这里李老师只是普及下,没有深入的展开去讲。es 的7版本后,也有不同于之前的bully算法。这块有待梳理。 

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

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

相关文章

测试基础 Android 应用测试总结

目录 启动: 功能介绍,引导图,流量提示等: 权限: 文件错误 屏幕旋转: 流量: 缓存(/sdcard/data/com.your.package/cache/): 正常中断: 异…

jupyter notebook更换虚拟环境(内核)

jupyter notebook更换虚拟环境(内核) 创建一个新的虚拟环境 # stk_env 虚拟环境的名字,任取。 conda create -n stkenv python3.9激活虚拟环境 conda activate stkenv安装ipykernel # 为该虚拟环境,安装内核。 conda install -c a…

【Spring core学习三】对象装配:获取Bean对象的四种方式

目录 对象装配的四种方式 🌷1、Autowired属性注入(使用最多) 🌷2、Setter注入 🌷3、构造函数注入 🌷4、Resource:另⼀种注⼊关键字 对象装配的四种方式 对象装配:获取bean对象也…

linux之Ubuntu系列(-)常见指令 重定向

Ubuntu 中文 版本 注意点 通过修改语言改成英文 在终端录入:export LANGen_US 在终端录入:xdg-user-dirs-gtk-update 单用户和多用户 命令格式 command [-选项] [参数] –查看命令的帮助 命令 --help man 命令 |操作键| 功能| |空格键|-显示手册的下…

B070-项目实战-用户模块--手机注册

目录 用户模块需求分析静态网站部署与调试两种前端项目的部署两种前端项目的调试(热部署)创建静态web项目 注册分析与设计分析需求设计 界面设计(ui)设计表(后台) 流程设计(后台)三范式表设计流程设计 相关…

Appium+python自动化(十二)- Android UIAutomator终极定位凶器(超详解)

简介 乍眼一看,小伙伴们觉得这部分其实在异性兄弟那里就做过介绍和分享了,其实不然,上次介绍和分享的大哥是uiautomatorviewer,是一款定位工具。今天介绍的是一个java库,提供执行自动化测试的各种API。 Android团队在4…

SPSS中级统计--S05-5多个样本率的卡方检验及两两比较

小伙伴们,今天我们学习SPSS中级统计--多个样本率的卡方检验及两两比较。 例1、2 C列联表资料 上期我们学习了双向无序RC表资料(c2)的检验,案例如下,比较不同污染地区的动物畸形率是否有差异? H0&#xff…

旅游管理系统的设计与实现(论文+源码)_kaic

摘 要 旅游业走过了改革开放,到现在依旧蓬勃发展。但是放眼国际社会,我们在旅游业发展的深度和广度上所做的努力还远远不够。在中国,旅游业也将成为经济崛起中的重要一环。目前,我们生活在一个信息时代里。无论是工作,…

uniapp动态获取列表中每个下标的高度赋值给另一个数组(完整代码附效果图)

uniapp实现动态获取列表中每个下标的高度&#xff0c;赋值给另一个数组。 先看效果图&#xff1a; 完整代码&#xff1a; <template><div class""><div class"">我是A列表&#xff0c;我的高度不是固定的</div><div class&qu…

Docker使用总结

Docker 1.什么是 Docker 官网的介绍是“Docker is the world’s leading software container platform.” 官方给Docker的定位是一个应用容器平台。 Docker 是一个容器平台的领导者 Docker 容器平台 Docker 应用容器平台 application项目 Mysql Redis MongoDB ElasticSeacrh …

我国版式文档格式OFD前端WEB展示之EasyOFD

EasyOFD an ofd file web shower 一个在web端展示ofd文件的控件&#xff0c;该控件基于CANVAS绘制。 该控件使用了以下外部程序 1&#xff09;jszip&#xff1a;解决解压文件。 2&#xff09;x2js: 解决XML文件到JS转换 3&#xff09;easyjbig2: 解决ofd内部使用jb2文件存储的…

java项目之足球赛会管理系统(ssm+mysql+jsp)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的足球赛会管理系统。技术交流和部署相关看文章末尾&#xff01; 项目地址&#xff1a; https://download.csdn.net/download/sinat_26552841…

什么是渲染?一文看懂,萌新赶紧收藏码住!

十四五规划提出“加快数字化发展&#xff0c;建设数字中国”&#xff0c;数字技术的快速发展&#xff0c;从起初的内容创建到最终的效果呈现&#xff0c;都离不开渲染技术。目前&#xff0c;渲染技术被广泛应用于教育、医疗、影视动画、建筑设计等多个领域。它能有效满足用户对…

docker基础1——架构组成、安装配置

文章目录 一、发展起源1.1 传统虚拟化与容器虚拟化1.2 docker底层核心技术1.2.1 命名空间1.2.2 控制组 1.3 docker工作方式1.4 docker容器编排1.5 docker优劣势1.6 docker架构组成 二、yum安装docker三、配置docker加速器 一、发展起源 背景了解&#xff1a; 容器是内核里的一项…

【Python】PyCharm中调用另一个文件的函数或类

&#x1f389;欢迎来到Python专栏~PyCharm中调用另一个文件的函数或类 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;Python学习专栏 文章作者技术和水平有限&#xff0c;如果文中出现错误&…

Langchain-ChatGLM配置文件参数测试

1 已知可能影响对话效果的参数&#xff08;位于configs/model_config.py文件&#xff09;&#xff1a; # 文本分句长度 SENTENCE_SIZE 100# 匹配后单段上下文长度 CHUNK_SIZE 250 # 传入LLM的历史记录长度 LLM_HISTORY_LEN 3 # 知识库检索时返回的匹配内容条数 VECTO…

leetcode 9 回文数

class Solution {public boolean isPalindrome(int x) {if(x < 0){return false;}int num x;int value 0;while(num > 0){value value * 10 num % 10;num num / 10;}return value x;} }

golang 日志库logrus和lumberjack 日志切割库实践

package mainimport (log "github.com/Sirupsen/logrus""gopkg.in/natefinch/lumberjack.v2" )func main() {logger : &lumberjack.Logger{// 日志输出文件路径Filename: "/var/log/myapp/foo.log",// 日志文件最大 size, 单位是 MBMaxSiz…

【问题解决】VSCode 远程安装插件特别慢

【问题描述】 我要配置 VSCode WSL 的开发环境&#xff0c;需要在 WSL 里也装上 C、CMake 系列的插件&#xff0c;如下图的直接下载方式特别慢&#xff1a; 【解决方法】 先去网站下载插件&#xff1a;https://marketplace.visualstudio.com/&#xff0c;后缀名&#xff1a;…

re学习(18)[ACTF新生赛2020]rome1(Z3库+window远程调试)

参考视频: Jamiexu793的个人空间-Jamiexu793个人主页-哔哩哔哩视频 代码分析&#xff1a; 其主要内容在两个while循环中&#xff08;从定义中可知flag位16个字符&#xff09;。 看第二个循环&#xff0c;可知是比较result和经过第一个循环得到的v1比较&#xff08;就是flag…