【弹力设计篇】聊聊灾备设计、异地多活设计

news2024/9/29 14:30:48

单机&集群架构

对于一个高可用系统来说,为了提升系统的稳定性,需要以下常用技术服务拆分、服务冗余、限流降级、高可用架构设计、高可用运维,而本篇主要详细介绍下,高可用架构设计。容灾备份以及同城多活,异地多活架构的设计。

我们知道从最简单的系统来说的话,就是单机系统,然后为了实现高可用,最简单的方式就是使用集群模式,通过冗余服务来实现高可用。
但是这样就需要引入负载均衡、服务健康检查、服务发现,动态路由

一般来对外的服务,都是使用SLB进行提供一个统一的网络IP+PORT,然后SLB进行实时检查服务的网络端口是否在线,不在线则发出报警机制。然后SLB根据一定的负载均衡算法将用户请求打到将康的服务上。

而对于内部的系统,可能使用的是RPC进行交互,那么需要服务注册到注册中心上,zk或者是consul。上游服务根据服务名从注册中心查询到对应的服务地址和端口号。

这样的模式其实对于大多数的中小型公司就可以,而灾备设计和异地多活主要解决的是地理基本的灾难,比如机房断电,网络不可用,地震、火灾等 会直接导致整个机房所提供的服务不可用。对于大型互联网公司来说的话,一般都会做灾备设计和异地多活设计。

灾备设计

灾备 = 容灾+备份
备份 : 将系统所产生的的所有重要数据多备份几份。
容灾 : 在异地建立两个完全相同的系统。当某个地方的系统突然挂掉,整个应用系统可以切换到另一个,这样系统就可以正常提供服务了。

异地多活

异地多活 描述的是将服务部署在异地并且服务同时对外提供服务。和传统的灾备设计的最主要区别在于“多活”,即所有站点都是同时在对外提供服务的。异地多活是为了应对突发状况比如火灾、地震等自然或者人为灾害。

同城多中心

同城异区其实就是 比如在北京 朝阳和通州部署两套IDC机房,提供同样的服务。这种架构在设计上比较简单,使用告诉的专用网络通道,基本等同于同一个机房。设计复杂度降低,以及对应的设计和资源成本。

在这里插入图片描述
可以应对机房级别的灾难,逻辑上同一个机房。

跨城多中心

跨城异地其实就是北京一个IDC机房,上海一个IDC,为了应对城市级别的灾难。
在这里插入图片描述
但是无法避免区域性灾难。

跨国多中心

跨国这种一般针对的都是海内外业务都有的互联网公司,比如字节的抖音和TIKTOK。以及为了合规性,一般本国的数据,服务器都需要在本国内,比如在印尼做电商,那么相关机房数据都需要在印尼。
在这里插入图片描述

整体对比

在这里插入图片描述

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

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

相关文章

Python开发之手动实现一维线性插值

Python开发之手动实现一维线性插值 1.线性插值法介绍2.手动实现线性插值3.案例一手动实现线性插值4.使用pandas的插值方法实现要求(推荐) 前言:主要介绍手动实现一维线性插值以及pandas里面的interpolate方法实现线性插值。 1.线性插值法介绍 线性插值法是一种简单…

MySQL中锁的简介——行级锁之 间隙锁 和 临键锁

1.间隙锁演示 2.临键锁演示 间隙锁锁住的是间隙,不包含对应的数据记录,而临键锁既会包含当前这条数据记录,也会锁定该数据记录之前的间隙。间隙锁的目的是防止其他事务插入间隙造成幻读现象。间隙锁是可以共存的,一个事务采用的间…

maven引入本地jar包的简单方式【IDEA】【SpringBoot】

前言 想必点进来看这篇文章的各位,都是已经习惯了Maven从中央仓库或者阿里仓库直接拉取jar包进行使用。我也是🤡🤡。 前两天遇到一个工作场景,对接三方平台,结果对方就是提供的一个jar包下载链接,可给我整…

sqlSugar应用表值函数

一、新建表值函数 TableIntSplit 二、新建类 var employees _sqlSugarClient.Queryable<Employees>().InnerJoin(_sqlSugarClient.SqlQueryable<TableID>("select * from dbo.TableIntSplit(ids,split)").AddParameters(new { ids "1,2", s…

无涯教程-jQuery - Slide方法函数

幻灯片效果可以与show/hide/toggle一起使用。这会将元素滑出视口。 Slide - 语法 selector.hide|show|toggle( "slide", {arguments}, speed ); 这是所有参数的描述- direction - 效果的方向。可以是"左(left)"&#xff0c;"右(right)"&…

C语言第十一课--------操作符的使用与分类-------基本操作

作者前言 作者介绍&#xff1a; 作者id&#xff1a;老秦包你会&#xff0c; 简单介绍&#xff1a; 喜欢学习C语言和python等编程语言&#xff0c;是一位爱分享的博主&#xff0c;有兴趣的小可爱可以来互讨 个人主页::小小页面 gitee页面:秦大大 一个爱分享的小博主 欢迎小可爱们…

解决 tensorflow 出现的 ImportError: Could not find the DLL(s) ‘msvcp140_1.dll‘. 问题

在安装完tensorflow库后出现 问题详述&#xff1a; ImportError: Could not find the DLL(s) msvcp140_1.dll. TensorFlow requires that these DLLs be installed in a directory that is named in your %PATH% environment variable. You may install these DLLs by downlo…

JSP 文件上传

JSP 可以与 HTML form 标签一起使用&#xff0c;来允许用户上传文件到服务器。上传的文件可以是文本文件或图像文件或任何文档。 本章节我们使用 Servlet 来处理文件上传&#xff0c;使用到的文件有&#xff1a; upload.jsp : 文件上传表单。 message.jsp : 上传成功后跳转页…

超聚变和厦门大学助力兴业银行构建智慧金融隐私计算平台,助力信用卡业务精准营销...

兴业银行与超聚变数字技术有限公司、厦门大学携手&#xff0c;发挥产学研用一体化整体优势联合建设&#xff0c;厦门大学提供先进的算法模型及科研能力&#xff0c;超聚变提供产品解决方案及工程能力&#xff0c;兴业银行提供金融实践能力&#xff0c;三方发挥各自领域优势&…

RTPS规范v2.3(中文版)

实时发布订阅协议 DDS互操作性有线协议 &#xff08;DDSI-RTPS&#xff09; 技术规范 V2.3 &#xff08;2019-04-03正式发布&#xff09; https://www.omg.org/spec/DDSI-RTPS/2.3/PDF   目 录 0. 序言&#xff08;关于对象管理组&#xff09; 4 0.1 OMG 4 0.2 OMG规…

C++之浅拷贝和深拷贝总结(一百七十一)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【SLAM】A-LOAM 算法部署与测试(Win10 + VMWare + Ubuntu18.04)

基础环境 ubuntu及ROS安装&#xff0c;略&#xff1b;安装完ROS以后&#xff0c;默认已经安装好了PCL和Eigen库&#xff1b; 安装Ceres 下载Ceres源文件&#xff1a;&#xff08; Vmware没有网络&#xff0c;到下面的网址手动下载安装包 &#xff09; - https://github.com…

MyBatis-Plus自定义sql注入器

文章目录 一、前言二、MyBatis-Plus自定义sql注入器功能实现2.1、编写自定义sql类2.2、将自定义sql添加到BaseMapper中2.3、编写自己的sql注入器 一、前言 在日常开发过程中&#xff0c;我们可能会发现 MyBatis-Plus 提供的那些自带的 sql 语句无法满足我们的开发需求&#xf…

Java中注解应用场景

1.Parameter注解 Parameter(names "-browser", description "browser name, supported scope [chrome]", required true) Param注解的用法解析_parameter_fFee-ops的博客-CSDN博客 Public User selectUser(param(“userName”) String name, param(“…

C# Solidworks二次开发:向量相关的数学函数API的使用介绍

今天要讲的是Solidworks二次开发时候&#xff0c;如何使用一些与数学相关的API方法的介绍&#xff0c;在Solidworks中本身提供了一个函数用于对数学对象的访问&#xff0c;函数名为MathUtility。借助这个函数&#xff0c;我们来引出今天要介绍的几个API。 &#xff08;1&#…

剑指 Offer. 二叉树的镜像

请完成一个函数&#xff0c;输入一个二叉树&#xff0c;该函数输出它的镜像。 例如输入&#xff1a; 镜像输出&#xff1a; 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 代码如下&#xff1a; class Solution { public:Tre…

android下的app性能测试应主要针对那些方面,如何开展?

如何开展安卓手机下的App性能测试&#xff0c;对于优秀的测试人员而言&#xff0c;除了要懂得性能测试的步骤流程外&#xff0c;还应该懂的性能测试的一些其他知识&#xff0c;比如性能测试指标、各指标的意义&#xff0c;常用的性能测试工具、如何查看结果分析等等知识。所以本…

P1535 [USACO08MAR] Cow Travelling S(dfs+剪枝 or 记忆化搜索)

1:本题暴力做法简单&#xff0c;重点在于我们如何剪枝&#xff1a; :《曼哈顿距离》我们每走一个点就判断&#xff0c;当前点到终点的最短步数是不是小于当前剩余的步数&#xff0c; 如果大于就肯定不符合直接return,或者当步数为0时&#xff0c;当还没到达终点&#xff0c;那…

web流程自动化详解

今天给大家带来Selenium的相关解释操作 一、Selenium Selenium是一个用于自动化Web浏览器操作的开源工具和框架。它提供了一组API&#xff08;应用程序接口&#xff09;&#xff0c;可以让开发人员使用多种编程语言&#xff08;如Java、Python、C#等&#xff09;编写测试脚本&…

JavaWeb+jsp+Tomcat的叮当书城项目

点击以下链接获取源码&#xff1a; https://download.csdn.net/download/qq_64505944/88123111?spm1001.2014.3001.5503 技术&#xff1a;ssm jsp JDK1.8 MySQL5.7 Tomcat8.3 源码数据库课程设计 功能&#xff1a;管理员与普通用户和超级管理员三个角色&#xff0c;管理员可…