你知道三地五中心吗

两地三中心这个架构,如下图:

 

这种架构具备容灾能力,比如生产数据中心停电了,那么可以把所有流量都切到同城灾备中心或异地灾备中心,那么现在的问题是假如真到了停电的那一天,你敢把所有的流量都切到灾备中心去吗?上篇文章说了,灾备中心它主要的功能是作为生产数据中心的一个备份,所以它并没有如同生产数据中心一样不停的在对外提供服务,那么就有问题了,灾备相当于一个新人,一个一直在模仿大哥的一个新人,现在大哥受伤了,按道理是应该小弟顶上,但是小弟还是个新人,硬顶上去是不是很有可能会出错?也就是说:

  • 第一,不能保证灾备中心有能力接管线上所有的用户流量,可能刚已接收灾备中心被压垮,或者出现其他各种各样预估不到的错误;

  • 第二,如果生产数据中心接收了用户的写请求,还没来得及同步到灾备中心,这个时候停电了,这种情况下,也不能直接把用户流量切到灾备中心。

所以基于上面的分析,并不是说灾备中心一定不能顶上,只是在顶上之前可能还要做很多其他的检查和准备,这个时间是不确定的,至少不会很快...。

那么问题来了,该怎么办?

首先对于上面列出来的两点中的第一点,如果我们能够让灾备中心不再仅仅只能用来做灾备,还能和生产数据中心一样正常的对外提供服务呢?如下图:

可以看到上面的架构图:

  • 不再区分生产数据中心和灾备数据中心,只有数据中心,而且数据中心之间相互备份数据,保证每个数据中心都是全量数据。

  • 用户可以在任意一个数据中心上进行读写操作。

好,首先我们不管这种架构能不能实现,至少它的好处是非常明显的:

  1. 每个数据中心一直在对外提供服务(不是一个新手),所以当一个数据中心停电后,直接把用户流量切到另外一个数据中心也是问题不大的。

  2. 用户可以就近访问数据中心,这样用户的体验更好,并且整个架构的流量也比较平均。

优点很明显,如果能实现就再好不过了,那么这种架构实现起来最重要的一点就是:用户同时向不同数据中心写入数据,数据中心双向同步数据时,如果出现冲突该如何解决?那么这个问题,目前阿里和蚂蚁金服的解决办法是:将用户按某一个规则进行分组,每组用户写入数据时只能写入到指定的数据中心,相当于用户与数据中心绑定在一起了,这样保证了数据中心在双向同步之前数据是不会冲突的,因为按用户分组了,不同用户的数据不会冲突。当然思路非常简单,但是实现起来肯定是非常麻烦的,但是思路肯定是可以的,阿里也用实践证明了,我们先把上面的架构稍微完善一下:

 

用户使用网站时,由运营商网络或CDN选择最近的机房,机房内部署一个负载均衡,由这个负载均衡最终判断用户属于机房(前文中的数据中心),也就是可能出现,用户在注册时在北京,那么他的uid就和北京某个机房绑定了,那么当这个用户在上海使用时,会由上海的负载均衡按照用户分组规则将请求转发到北京绑定的那个机房去(当然并不是所有请求,比如读请求肯定可以直接在上海机房进行读取,所以具体的实现都要看业务怎么实现了,以及负载均衡具体的配置,这里只是把最简单易懂的思路说一下)。

所以,我们现在可以

  • 假设北京机房1应用程序或数据库对应的机器停电了,那么我们可以调整负载均衡是原本属于这个机房的用户流量转移到机房2去,注意这里不要有疑问,将用户进行分组是为了防止用户同时写两个数据库发生冲突,那么现在机房1里其实已经不能写入数据了,所以将流量迁移到机房2是没有问题的。

  • 假设北京机房1整个停电了,那么可以通过运营商网络或CDN将流量迁移到北京机房2。

  • 假设北京停电了,那么一样可以将流量迁移到上海。

这个架构中最重要的其实就是用户分组,所以包括我们的应用程序、数据库负载均衡、数据库分表等等都需要按用户进行分组,我们要保证针对同一个用户的请求与操作都在同一个机房内,不去跨机房,这样才是最快的,这就是单元化

那么上面这个架构实际上就是一个高级版的“两地三中心”,只是这种单元化架构我们可以任意去扩展(只要你足够有钱,因为搭一套全配置的数据中心是需要很高成本的),比如你在上海在增加一个数据中心,在杭州也增加一个,那么就如下图:

这就叫三地五中心。

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

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

相关文章

Win10操作系统隐藏6个实用小功能

目录 功能一、分屏 功能二、录屏 功能三、截图 功能四、便签功能 功能五、视频剪辑 功能六、计算器 功能一、分屏 Win10操作系统其实是自带分屏功能的,这个功能对我来说真的太喜欢了,尤其是核对文档的时候,真的是太方便了! 操作方…

面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景

一、Spring事务管理的两种方式 事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。 编程式事务:是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强&…

JAVA断点调试

1、条件断点,点击添加条件 2、异常断点,点击添加异常 转载于:https://www.cnblogs.com/binbang/p/6378897.html

操作系统:Win10如何彻底卸载自带的Flash软件

Win10操作系统中,Flash功能是系统自带的,我们无法直接通过应用管理来找到Flash,所以也不能从系统设置或者控制面板中卸载它。当然如果你是后期自己安装的话,可以通过控制面板找到Flash然后直接卸载它。 Flash的路径为“C:\Windows…

Java运行时异常和非运行时异常

1.Java异常机制 Java把异常当做对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Java中的异常分为两大类:错误Error和异常Exception,Java异常体系结构如下图所示 2.Throwable Throwable类是所有异常或错误的超类&#xf…

办公技巧:如何快速提取办公文档里面的所有图片

针对一个比较大的办公文档里面有很多图片,有些时候我们需要提取文档里面的所有图片信息,当然你打开文档一个个复制保存就可以了,不过这样太过于繁琐了,有没有更加快速的方法呢?今天给大家分享快速提取办公文档里面的所…

ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)

ELKFilebeatKafkaZooKeeper 构建海量日志分析平台 参考:http://www.tuicool.com/articles/R77fieA 我在做ELK日志平台开始之初选择为ELKRedis直接构建,在采集nginx日志时一切正常,当我采集我司业务报文日志类后,logstash会报大量的…

Spring回滚事务类型

Spring默认抛出了未检查unchecked异常(继承自 RuntimeException的异常)或者 Error才回滚事务,其他异常不会触发回滚事务。

操作系统:Win10操作系统内置的备份功能介绍

今天给大家分享Win10操作系统内置的系统备份功能,感兴趣的可以了解一下!。 Win10的备份:由“旧版备份与还原”、“还原点”和“文件历史记录”三个部分组成。 旧版备份与还原:主要用于系统备份与还原 还原点:还原点 文…

spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

如上: 当我们需要在事务控制的service层类中使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制。怎样才能即使用try catch去捕获异常,而又让出现异常后spring回滚呢&am…

电脑软件:推荐一款本地文档搜索神器,赶快下载试试吧!

1、前言大家在日常办公的时候,经常会涉及各种各样的文档,时间久了文件会越来越多,有时候需要快速找到一个半年前文档可能会耗费你的大量时间,毕竟每个人的大脑记忆都是有限的,不可能每个细节都能够靠大脑记忆&#xff…

JVM系列(一):JVM基本概念知识笔记

今天开始给大家分享JVM系列知识,欢迎大家一起学习交流共同进度! 1、什么是JVM? JVM即Java虚拟机,可以理解为一种抽象计算机,它拥有一个指令集,在运行时操作各种内存区域。JVM对Java语言一无所知&#xff0…

配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件...

配置maven环境变量cmd控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件 首先maven环境变量: 变量名:MAVEN_HOME 变量值:E:\apache-maven-3.2.3 变量名:Path 变量值:;%MVN_HOME…

电脑技巧:Win10任务管理器知识介绍,赶快来看一看吧

Win10操作系统的任务管理器应该是大家比较熟悉的软件,尤其是在你的电脑卡掉的时候,不得不打开任务管理器,结束掉进程卡死的进程,然后电脑就可以恢复正常使用,任务管理器作为Windows操作系统上一款使用频率非常高的软件…

[转]Asp.Net大型项目实践(11)-基于MVC Action粒度的权限管理【续】【源码在这里】(在线demo,全部源码)...

本文转自:http://www.cnblogs.com/legendxian/archive/2010/01/25/1655551.html 接上篇Asp.Net大型项目实践(10)-基于MVC Action粒度的权限管理(在线demo,全部源码) 在线Demo: 地址:http://218.60.8.35:1234/ 服务器&a…

电脑软件:推荐八款电脑必备效率软件

目录 1、PowerToys 微软官方效率神器 2、Ditto 剪切板神器 3、AnyTXT Searcher 文本搜索神器 4、Everything 文件检索神器 5、Monitorian 屏幕亮度调节神器 Monitorian 是一款超级实用的屏幕亮度调节工具,可以在任务栏以滑杆的方式调节屏幕亮度,且…

JVM系列(二):JVM中类加载器相关知识笔记

今天继续给大家分享JVM相关的知识,欢迎互相沟通交流! 1、什么是类的加载和类的卸载 JVM虚拟机运行的文件是class文件,它是由我们的Java程序编译后产生的文件。 类的加载:JVM虚拟机将指定的class文件读取到内存里,并…