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

news2024/11/28 16:38:35

高可用的关键指标

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

 高可用的关键指标

  

恢复时间目标(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算法。这块有待梳理。 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

rabbitmq部署(docker方式)

前言:rabbitmq一旦有漏洞,版本升级麻烦,于是改为docker部署 环境:centos7 #停掉之前的服务 systemctl stop rabbitmq-server systemctl disable rabbitmq-server 查了官网,当前3.11.x 最高版本是3.11.19, 虽然3.12…

【开源分享】在线客服系统源代码-thinphp网站在线客服系统源码(附源码完整搭建教程)...

本文的核心是一个多国语言在线客服聊天系统源码。我们将在这里保持非常简单。 这是一款旧版本的PHP客服源码。 基于ThinkPHP5 workerman,整体架构比较老,PHP客服端以及界面等需要在php-fpm下运行,即时通讯websocket服务端需要命令行执行。 源…

N-gram模型学习

网上有很多比较细节比较复杂比较清晰的介绍,我这里就不再细细的描述了,之前看文献的时候看到了这个模型,脑子里又没有印象,结果发现是python的学习范畴。 总的来说,这是一种文字,甚至可以上升到符号关联性…

基于Python的工业图像异常检测基础技术详解

引言 博文字数7000,建议阅读时间20分钟。 这篇博客对当前几种典型的图像异常检测算法进行了比较,包括Kmeans、Kmeans以及大津法(OTSU),并给出了相关的代码实现与测试方法。总结的比较结果如下表所示: 方…

cocosCreator 3.6以上接入腾迅Bugly 捕捉JS错误 Android

cocosCreator3.6以上接入Bugly上报其实很简单,不需要网上那么多弯弯绕,三须三步走。 1. 按照官网方式接入android的bugly 2. android端写一个Bugly上报管理类 3. 修改你工程目录下native\engine\common\Classes\目录下的Game.h, Game.cpp两个文件&…

发电厂主厂房智能照明控制系统的设计和应用

摘要:当前,电厂主厂房的照明规模较大,而且具有许多回路,增加了电厂照明负荷,导致照明过程中的能源消耗较高。对此,电厂需要合理设计智能照明系统,运用智能技术提高电厂照明的运行管理水平&#…

如何在化工行业运用IPD?

化工行业作为国民经济的重要基础性行业,包含数以万计的产品种类,各具有不同的物理化学特性。化工产品的消费同国民经济状况联系非常紧密,主要去向广泛分布于基建、房地产、农业、汽车、服装等国民经济各个领域。按应用领域划分,典…

PCA与SVD

PCA流程: 当数据维度大时,构建协方差矩阵并求其特征值、特征向量会导致计算量大。所以可以利用SVD求解。 PCA算法的优化目标就是: ①降维后同一维度的方差最大。 ②不同维度之间的相关性为0。 根据线性代数,我们可以知道同一元素的协方差就…

Django项目开发快速入门

Django项目开发快速入门 生成Django项目编写module后台管理系统admin自定义管理页面视图函数使用Django模板 生成Django项目 现在cmd中使用命令安装Django框架 pip install django3.2使用命令生成项目 django-admin startproject DjStore使用命令生成应用 python .\manage.…

管道模型--Asp.Net MVC篇 Http请求

管道模型–Asp.Net MVC篇 Http请求 我们自己写的程序,是怎样进行处理的?一个完整的HTTP请求流程: 一. 请求大致流程 拿一个实例了解整个流程的步骤: 用户浏览器输入地址 例如 http://www.csdn.net DNS解析(域名供应商) 将输入的网址解析成IP+端口 请求到达服务器Server I…

ChatGPT的应用场景和局限性,以及发展前景

目录 导语 ChatGPT的应用场景 ChatGPT的局限性 ChatGPT的发展前景 总结 导语 作为一款基于人工智能的自然语言处理(NLP)​​聊天机器人​​程序,ChatGPT通过大量来自互联网的文本进行训练,并使用深度学习和机器学习算法来理解用户的问题并提供回答。…

[RocketMQ] Broker CommitLogDispatcher 异步构建ConsumeQueue和IndexFile源码解析 (十四)

CommitLogDispatcherBuildConsumeQueue: 异步构建ConsumerQueue。CommitLogDispatcherBuildIndex: 异步构建IndexFile。 文章目录 1.CommitLogDispatcherBuildConsumeQueue构建ConsumeQueue1.1 putMessagePositionInfo写入消息位置信息1.2 findConsumeQueue查找ConsumeQueue1.2…

Windows Docker部署springboot微服务

Windows Docker部署springboot微服务 前言 偶然的机会让我能够实操在Windows server 2019版本的服务器上进行springCloud服务的部署 过程中深刻的体会到了为什么Docker要推荐使用Linux系列的系统进行操作 遇到的问题 springboot镜像打包微服务启动后nacos连不上使用的基础…

zabbix企业级监控(监控win10主机)---接小白到大神之路运维第63天

第三阶段基础 zabbix企业级监控监控win10主机 目录 Wind10配置: Web图形操作: Wind10配置: 服务器相关信息: 关闭防火墙、IP地址为192.168.59.128 1.首先在C盘根目录下创建zabbix的文件夹 2.将需要的文件拖到该文件夹内&…

CRM排名前三的的系统有哪些特点?

crm经过多年的发展,不仅可以管理好客户关系还是企业重要的战略武器。让企业的销售、市场营销和客服服务部门建立密切联系,在crm一个平台上处理商机,简化业务流程,为组织降本增效。国内crm系统排名哪些技术商更靠前? 1…

CISCN2023国赛复现

[CISCN 2023 初赛]被加密的生产流量 下载附件打开 他的题目叫modbus modbus是一种协议 在这些流量里都找不到有用信息,但是发现了有tcp的追踪流 打开看看 发现两个一组的这几行数字组合像是base编码 MMYMMX3GNEYMOXZRGAYDA 放到base家族解一下密 最后在base32解…

详解应用层的HTTP协议与HTTPS协议

文章目录 前言HTTP协议1. 理解应用层协议1. 什么是HTTP协议?2. HTTP协议工作流程3. HTTP报文格式3.1 HTTP请求方法3.2 HTTP请求报头3.3 HTTP请求正文3.4 HTTP响应的状态码3.4 HTTP响应的报头3.5 HTTP响应的正文3.6 HTTP请求的URL 4. POST请求与GET请求5. HTTP协议实…

结构型模式 - 装饰者模式

概述 我们先来看一个快餐店的例子。 快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。 使用继承的方式存在的问题&#x…

5G工业路由器实现AGV远程控制,智联物联无线物联网方案

随着AGV在制造业应用逐渐广泛,在生产车间传统的布线网络下,存在着接口不足、网络不稳定、数据丢失、故障异常的情况,技术人员无法及时观察AGV的数据情况,导致AGV出错率高,维护成本高等问题。 传统的AGV通信方式一般是…

【Python基础函数笔记】获取当前时间并写入日志

1.获取当前时间 import os from datetime import datetime import pytzdef get_cur_time():# 获取当前时间return datetime.strftime(datetime.now(pytz.timezone(Asia/Singapore)), %Y-%m-%d_%H-%M-%S)# 基础目录 basedir a logdir os.path.join(basedir, logs, str(args.n…