网络构造的高可用

2020-02-03 作者:计算机知识   |   浏览(198)

转自: 58-沈剑

大器晚成、什么是高可用

高可用HA(High Availability)是布满式系统构造划虚构计中必得寻思的成分之风流洒脱,它常常是指,通过两全减弱系统不可能提供劳动的时光。

万生机勃勃系统直接可以提供劳务,大家说系统的可用性是百分百。

假设系统每运营玖拾陆个小时单位,会有1个时间单位不可能提供服务,我们说系统的可用性是99%。

广大同盟社的高可用指标是4个9,也便是99.99%,那就代表,系统的年停机时间为8.捌拾一个钟头。

百度的搜求首页,是正经公众承认高可用保险充裕精粹的系统,以致大家会透过www.baidu.com能否访谈来判别“互联网的连通性”,百度高可用的劳务令人留下啦“网络通畅,百度就会访问”,“百度打不开,应该是互联网连不上”的影象,那其实是对百度HA最高的赞叹。

二、怎样有限帮助系统的高可用

大家都精晓,单点是系统高可用的敌人,单点往往是系统高可用最大的危机和敌人,应该尽可能在系统规划的进程中幸免单点。方法论上,高可用保证的规范是“集群化”,恐怕叫“冗余”:唯有多个单点,挂了劳务会受影响;纵然有冗余备份,挂了还应该有任何backup能够顶上。

保险系统高可用,布局划伪造计的主干法规是:冗余。

有了冗余之后,还相当不够,每回现身故障需求人工到场复苏势必会扩张系统的不行服务实行。所以,又再三是由此“自动故障转移”来贯彻系统的高可用。

接下去我们看下规范互连网构造中,怎样通过冗余+自动故障转移来保障系统的高可用本性。

三、常见的网络分层结构

图片 1

多如牛毛网络遍及式布局如上,分为:

客商端层:规范调用方是浏览器browser大概手提式有线电话机应用APP

反向代理层:系统入口,反向代理

站点应用层:实现基本应用逻辑,再次回到html大概json

服务层:如若达成了服务化,就有这风度翩翩层

数据-缓存层:缓存加快访谈存款和储蓄

数量-数据库层:数据库固化数据存款和储蓄

总体类别的高可用,又是经过每生龙活虎层的冗余+自动故障转移来综合完毕的。

四、分层高可用布局实行

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

图片 2

到的高可用,是因而反向代理层的冗余来促成的。以nginx为例:有两台nginx,朝气蓬勃台对线上提供劳务,另大器晚成台冗余以有限支撑高可用,何奇之有的进行是keepalived存活探测,相符virtual IP提供服务。

图片 3

机动故障转移:当nginx挂了的时候,keepalived能够探测到,会自行的举办故障转移,将流量自动员搬迁移到shadow-nginx,由于接收的是平等的virtual IP,这几个切换进度对调用方是晶莹剔透的。

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

图片 4

到的高可用,是透过站点层的冗余来促成的。借使反向代理层是nginx,nginx.conf里能够配置几个web后端,况且nginx能够探测到五个后端的存活性。

图片 5

机动故障转移:当web-server挂了的时候,nginx能够探测到,会自动的张开故障转移,将流量自动员搬迁移到别的的web-server,整个经过由nginx自动完毕,对调用方是晶莹剔透的。

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

图片 6

到的高可用,是通过服务层的冗余来贯彻的。“服务连接池”会成立与中游服务三个一连,每一次央求会“随机”选用连接来访问上游服务。

图片 7

机动故障转移:当service挂了的时候,service-connection-pool能够探测到,会自动的进展故障转移,将流量自动员搬迁移到任何的service,整个经过由连接池自动落成,对调用方是晶莹剔透的(所以说RPC-client中的服务连接池是很关键的功底构件)。

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

图片 8

到的高可用,是通过缓存数据的冗余来兑现的。

缓存层的数目冗余又有三种方法:第风度翩翩种是利用客商端的卷入,service对cache实行双读可能双写。

图片 9

缓存层也能够通过帮衬宗旨同步的缓存集群来解决缓存层的高可用问题。

以redis为例,redis天然援救中央同步,redis官方也可能有sentinel哨兵机制,来做redis的存活性检查实验。

图片 10

电动故障转移:当redis主挂了的时候,sentinel能够探测到,会公告调用方访谈新的redis,整个进度由sentinel和redis集群协作到位,对调用方是晶莹的。

说罢缓存的高可用,这里要多说一句,业务对缓存并不一定有“高可用”必要,越来越多的对缓存的应用境况,是用来“加速数据访谈”:把风流倜傥部分多少放到缓存里,即便缓存挂了照旧缓存未有命中,是能够去后端的数据库中再取多少的。

那类允许“cache miss”的职业场景,缓存布局的提议是:

图片 11

将kv缓存封装成服务集群,中游设置三个代理(代理能够用集群冗余的秘籍确定保障高可用),代理的后端依据缓存访谈的key水平切分成若干个实例,各样实例的拜见并不做高可用。

图片 12

缓存实例挂了遮风避雨:当有水平切分的实例挂掉时,代理层直接回到cache miss,那个时候缓存挂掉对调用方也是晶莹的。key水平切分实例收缩,不提出做re-hash,那样便于吸引缓存数据的不等同。

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

大部互连网本事,数据库层都用了“主从同步,读写分离”布局,所以数据库层的高可用,又分为“读库高可用”与“写库高可用”两类。

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

图片 13

到的高可用,是经过读库的冗余来促成的。

既然如此冗余了读库,日常的话就足足有2个从库,“数据库连接池”会树立与读库多少个一而再再而三,每一遍伏乞会路由到这几个读库。

图片 14

机动故障转移:当读库挂了的时候,db-connection-pool能够探测到,会活动的打开故障转移,将流量自动迁移到其余的读库,整个过程由连接池自动达成,对调用方是透明的(所以说DAO中的数据库连接池是很要紧的底工零件)。

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

图片 15

到的高可用,是经过写库的冗余来落到实处的。

以mysql为例,能够设置三个mysql双主同步,后生可畏台对线上提供劳务,另大器晚成台冗余以担保高可用,多如牛毛的实施是keepalived存活探测,雷同virtual IP提供劳动。

图片 16

机关故障转移:当写库挂了的时候,keepalived能够探测到,会自行的扩充故障转移,将流量自动员搬迁移到shadow-db-master,由于选择的是如出大器晚成辙的virtual IP,这一个切换进度对调用方是晶莹剔透的。

五、总结

高可用HA(High Availability)是布满式系统结构划设想计中必需思考的要素之生机勃勃,它通常是指,通过规划收缩系统不能够提供劳动的大运。

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

整个网络分层系统构造的高可用,又是经过每风流倜傥层的冗余+自动故障转移来综合完成的,具体的:

到的高可用,是经过反向代理层的冗余实现的,习认为常施行是keepalived + virtual IP自动故障转移

到的高可用,是经过站点层的冗余完成的,屡见不鲜履行是nginx与web-server之间的存活性探测与机关故障转移

到的高可用,是透过服务层的冗余完成的,数见不鲜实施是因而service-connection-pool来作保自动故障转移

到的高可用,是经过缓存数据的冗余达成的,不足为奇推行是缓存客商端双读双写,或然选择缓存集群的着力数据同步与sentinel保活与机关故障转移;越多的事情场景,对缓存未有高可用须要,能够行使缓存服务化来对调用方屏蔽底层复杂性

到的高可用,是透过读库的冗余达成的,见怪不怪实行是由此db-connection-pool来作保自动故障转移

到的高可用,是由此写库的冗余达成的,经常见到执行是keepalived + virtual IP自动故障转移

末段,希望小说的思路是清楚的,希望大家对高可用的概念和实行有个系统的认知,谢谢大家。

本文由大发体育发布于计算机知识,转载请注明出处:网络构造的高可用

关键词: