您当前的位置:首页 > 互联网百科 > 百科

究竟啥才是互联网架构“高可用”

时间:2020-07-30 13:49:07  来源:  作者:

一、什么是高可用

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。

假设系统一直能够提供服务,我们说系统的可用性是100%。如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。

很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。

百度的搜索首页,是业内公认高可用保障非常出色的系统,甚至人们会通过 www.baidu.com 能不能访问来判断“网络的连通性”,百度高可用的服务让人留下啦“网络通畅,百度就能访问”,“百度打不开,应该是网络连不上”的印象,这其实是对百度HA最高的褒奖。

 

二、如何保障系统的高可用

我们都知道,单点是系统高可用的大敌,单点往往是系统高可用最大的风险和敌人,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原则是“集群化”,或者叫“冗余”:只有一个单点,挂了服务会受影响;如果有冗余备份,挂了还有其他backup能够顶上。

保证系统高可用,架构设计的核心准则是:冗余

有了冗余之后,还不够,每次出现故障需要人工介入恢复势必会增加系统的不可服务实践。所以,又往往是通过“自动故障转移”来实现系统的高可用。

接下来我们看下典型互联网架构中,如何通过冗余+自动故障转移来保证系统的高可用特性。

 

三、常见的互联网分层架构

究竟啥才是互联网架构“高可用”

 

常见互联网分布式架构如上,分为:

(1)客户端层:典型调用方是浏览器browser或者手机应用App

(2)反向代理层:系统入口,反向代理;

(3)站点应用层:实现核心应用逻辑,返回html或者json;

(4)服务层:如果实现了服务化,就有这一层;

(5)数据-缓存层:缓存加速访问存储;

(6)数据-数据库层:数据库固化数据存储;

整个系统的高可用,又是通过每一层的冗余+自动故障转移来综合实现的。

四、分层高可用架构实践

【客户端层->反向代理层】的高可用

究竟啥才是互联网架构“高可用”

 

【客户端层】到【反向代理层】的高可用,是通过反向代理层的冗余来实现的。以Nginx为例:有两台nginx,一台对线上提供服务,另一台冗余以保证高可用,常见的实践是keepalived存活探测,相同virtual IP提供服务。

 

究竟啥才是互联网架构“高可用”

 

自动故障转移:当nginx挂了的时候,keepalived能够探测到,会自动的进行故障转移,将流量自动迁移到shadow-nginx,由于使用的是相同的virtual IP,这个切换过程对调用方是透明的。

 

【反向代理层->站点层】的高可用

究竟啥才是互联网架构“高可用”

 

【反向代理层】到【站点层】的高可用,是通过站点层的冗余来实现的。假设反向代理层是nginx,nginx.conf里能够配置多个web后端,并且nginx能够探测到多个后端的存活性。

 

究竟啥才是互联网架构“高可用”

 

自动故障转移:当web-server挂了的时候,nginx能够探测到,会自动的进行故障转移,将流量自动迁移到其他的web-server,整个过程由nginx自动完成,对调用方是透明的。

 

【站点层->服务层】的高可用

究竟啥才是互联网架构“高可用”

 

【站点层】到【服务层】的高可用,是通过服务层的冗余来实现的。“服务连接池”会建立与下游服务多个连接,每次请求会“随机”选取连接来访问下游服务。

 

究竟啥才是互联网架构“高可用”

 

自动故障转移:当service挂了的时候,service-connection-pool能够探测到,会自动的进行故障转移,将流量自动迁移到其他的service,整个过程由连接池自动完成,对调用方是透明的(所以说RPC-client中的服务连接池是很重要的基础组件)。

 

【服务层>缓存层】的高可用

究竟啥才是互联网架构“高可用”

 

【服务层】到【缓存层】的高可用,是通过缓存数据的冗余来实现的。

缓存层的数据冗余又有几种方式:第一种是利用客户端的封装,service对cache进行双读或者双写。

 

究竟啥才是互联网架构“高可用”

 

缓存层也可以通过支持主从同步的缓存集群来解决缓存层的高可用问题。

redis为例,redis天然支持主从同步,redis官方也有sentinel哨兵机制,来做redis的存活性检测。

 

究竟啥才是互联网架构“高可用”

 

自动故障转移:当redis主挂了的时候,sentinel能够探测到,会通知调用方访问新的redis,整个过程由sentinel和redis集群配合完成,对调用方是透明的。

 

说完缓存的高可用,这里要多说一句,业务对缓存并不一定有“高可用”要求,更多的对缓存的使用场景,是用来“加速数据访问”:把一部分数据放到缓存里,如果缓存挂了或者缓存没有命中,是可以去后端的数据库中再取数据的。

这类允许“cache miss”的业务场景,缓存架构的建议是:

究竟啥才是互联网架构“高可用”

 

将kv缓存封装成服务集群,上游设置一个代理(代理可以用集群冗余的方式保证高可用),代理的后端根据缓存访问的key水平切分成若干个实例,每个实例的访问并不做高可用。

 

究竟啥才是互联网架构“高可用”

 

缓存实例挂了屏蔽:当有水平切分的实例挂掉时,代理层直接返回cache miss,此时缓存挂掉对调用方也是透明的。key水平切分实例减少,不建议做re-hash,这样容易引发缓存数据的不一致。

 

【服务层>数据库层】的高可用

大部分互联网技术,数据库层都用了“主从同步,读写分离”架构,所以数据库层的高可用,又分为“读库高可用”与“写库高可用”两类。

 

【服务层>数据库层“读”】的高可用

究竟啥才是互联网架构“高可用”

 

【服务层】到【数据库读】的高可用,是通过读库的冗余来实现的。

既然冗余了读库,一般来说就至少有2个从库,“数据库连接池”会建立与读库多个连接,每次请求会路由到这些读库。

 

究竟啥才是互联网架构“高可用”

 

自动故障转移:当读库挂了的时候,db-connection-pool能够探测到,会自动的进行故障转移,将流量自动迁移到其他的读库,整个过程由连接池自动完成,对调用方是透明的(所以说DAO中的数据库连接池是很重要的基础组件)。

 

【服务层>数据库层“写”】的高可用

究竟啥才是互联网架构“高可用”

 

【服务层】到【数据库写】的高可用,是通过写库的冗余来实现的。

MySQL为例,可以设置两个mysql双主同步,一台对线上提供服务,另一台冗余以保证高可用,常见的实践是keepalived存活探测,相同virtual IP提供服务。

 

究竟啥才是互联网架构“高可用”

 

自动故障转移:当写库挂了的时候,keepalived能够探测到,会自动的进行故障转移,将流量自动迁移到shadow-db-master,由于使用的是相同的virtual IP,这个切换过程对调用方是透明的。

 

五、总结

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。

方法论上,高可用是通过冗余+自动故障转移来实现的。

整个互联网分层系统架构的高可用,又是通过每一层的冗余+自动故障转移来综合实现的,具体的:

(1)【客户端层】到【反向代理层】的高可用,是通过反向代理层的冗余实现的,常见实践是keepalived + virtual IP自动故障转移;

(2)【反向代理层】到【站点层】的高可用,是通过站点层的冗余实现的,常见实践是nginx与web-server之间的存活性探测与自动故障转移;

(3)【站点层】到【服务层】的高可用,是通过服务层的冗余实现的,常见实践是通过service-connection-pool来保证自动故障转移;

(4)【服务层】到【缓存层】的高可用,是通过缓存数据的冗余实现的,常见实践是缓存客户端双读双写,或者利用缓存集群的主从数据同步与sentinel保活与自动故障转移;更多的业务场景,对缓存没有高可用要求,可以使用缓存服务化来对调用方屏蔽底层复杂性;

(5)【服务层】到【数据库“读”】的高可用,是通过读库的冗余实现的,常见实践是通过db-connection-pool来保证自动故障转移;

(6)【服务层】到【数据库“写”】的高可用,是通过写库的冗余实现的,常见实践是keepalived + virtual IP自动故障转移;

 

末了,希望文章的思路是清晰的,希望大家对高可用的概念和实践有个系统的认识,感谢大家。

来源公众号:架构师之路

作者:沈剑



Tags:互联网架构 高可用   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、什么是高可用高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系...【详细内容】
2020-07-30  Tags: 互联网架构 高可用  点击:(85)  评论:(0)  加入收藏
▌简易百科推荐
在互联网的江湖里头,每天都有新鲜事。我们昨天还在聊元宇宙,还没有了解元宇宙是个啥,今天又开始了web3.0,站在时代的浪潮之巅,哪怕我们只是一滴最普通的水,也会随着巨浪此起彼伏,直...【详细内容】
2021-12-24  程序员老王聊科技    Tags:Web3.0   点击:(6)  评论:(0)  加入收藏
社交媒体营销的好处: 我们可以使用社交媒体来定义企业的品牌标识以及提供的产品或服务。 社交媒体可以和不了解我们产品和服务的人群建立关系。 社交媒体可以和用户完成互动...【详细内容】
2021-12-22  搜索引擎和短视频推广    Tags:社交媒体   点击:(12)  评论:(0)  加入收藏
之前我们讲到说,有些网站在复制的时候会提示一个弹窗,我们可以去掉网站的copy事件监听就可以了,但是我们经常用到的一个网站,百度文库,网站不是这样设计的。 可以随便打开一个百...【详细内容】
2021-12-03  追风Office    Tags:百度文库   点击:(9)  评论:(0)  加入收藏
都说现在的年轻人网上冲浪有三大痛点:听歌被版权拒之门外,看剧被超前点播劝退,网盘下载文件被无情限速。不巧,这些痛点我刚好都经历过,手机里光是这些类型的APP都有好几个,这不是...【详细内容】
2021-11-11  黑科技工具圈    Tags:网盘   点击:(46)  评论:(0)  加入收藏
今天跟大家分享9个珍藏已久的网站,满满的黑科技,保证看完会让你感觉发现了新大陆,下面一起来看看吧。1.国际空间站模拟器这个网站满满的科技感,它在线真实模拟了宇宙飞船对接国...【详细内容】
2021-11-01  职场办公技能    Tags:网站   点击:(32)  评论:(0)  加入收藏
好用的网站能够受益一生,一些优质的网站用起来的确可以这样说。今天分享6个资源丰富的网站,质量杠杠的。 1.【字由网】推荐理由:免费商用字体、字体库 当工作中需要制作海报或...【详细内容】
2021-10-27  小杰好厉害呀    Tags:资源网站   点击:(18)  评论:(0)  加入收藏
终于准备离开网络了吗?如果您正在阅读本文,则您的个人信息很可能会向公众公开。我所说的“公共”是指任何地方的每个人。那么,如何将自己从互联网上删除以阻止公司获取您的信...【详细内容】
2021-10-27  编程老妖    Tags:互联网   点击:(24)  评论:(0)  加入收藏
经过上次会议的"洗礼",郝自信对于职场"黑话"已经有了一定的了解和学习,这次会议他表现如何呢? 播放视频看来,黑话作为职场通用语,不仅能让经验丰富的职场人彼此心照不宣,也能让一...【详细内容】
2021-10-26    计算机世界  Tags:互联网   点击:(26)  评论:(0)  加入收藏
从开始分享软件工具到现在,询问百度网盘名不限速下载的问题就没有间断过,看来大家也是苦百度网盘已久,本文咱们就分享一下百度网盘不限速下载的方法。 文章比较长,实际上操作...【详细内容】
2021-10-25  网创智慧库    Tags:百度网盘   点击:(525)  评论:(0)  加入收藏
我们使用电脑查询或寻找素材时,会去浏览器搜索,搜索结果五花八门,要花时间去筛选。但如果去对应的网站搜索,那就方便多了,今天分享6个资源超多的网站,个个都是精品。 【办公资源网...【详细内容】
2021-10-21  小杰好厉害呀    Tags:网站   点击:(28)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条