- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
究竟啥才是互联⽹架构“⾼可⽤”
⼀、什么是⾼可⽤
⾼可⽤HA (High Availability )是分布式系统架构设计中必须考虑的因素之⼀,它通
常是指,通过设计减少系统不 提供服务的时间。
假设系统⼀直 够提供服务,我们说系统的可⽤性是100%。
如果系统每运⾏100个时间单位,会有1个时间单位⽆法提供服务,我们说系统的可⽤
性是99%。
很多公司的⾼可⽤⽬标是4个9 ,也就是99.99% ,这就意味着,系统的年停机时间为
8.76个⼩时。
百度的搜索⾸页,是业内公认⾼可⽤保障⾮常出⾊的系统,甚⾄⼈们会通过
www .baidu .com 不 访问来判断“ ⽹络的连通性” ,百度⾼可⽤的服务让⼈留下啦“ ⽹
络通畅,百度就 访问” ,“百度打不开,应该是⽹络连不上”的印象,这其实是对百度
HA最⾼的褒奖。
⼆、如何保障系统的⾼可⽤
我们都知道,单点是系统⾼可⽤的⼤敌,单点往往是系统⾼可⽤最⼤的风险和敌⼈,
应该尽量在系统设计的过程中避免单点。⽅法论上,⾼可⽤保证的原则是“集群化” ,
或者叫“冗余” :只有⼀个单点,挂了服务会受影响;如果有冗余备份,挂了还有其他
backup 够顶上。
保证系统⾼可⽤,架构设计的核⼼ 则是:冗余。
有了冗余之后,还不够,每次出现故障需要⼈⼯介⼊恢复势必会增加系统的不可服务
实践。所以,又往往是通过“ ⾃动故障转移”来实现系统的⾼可⽤。
接下来我们看下典型互联⽹架构中,如何通过冗余+⾃动故障转移来保证系统的⾼可
⽤特性。
三、常见的互联⽹分层架构
常见互联⽹分布式架构如上,分为:
(1)客户端层:典型调⽤⽅是浏览器b owse 或者⼿机应⽤APP
(2 )反向代理层:系统⼊⼜,反向代理
(3 )站点应⽤层:实现核⼼应⽤逻辑,返回html或者j son
(4 )服务层:如果实现了服务化,就有这⼀层
(5 )数据-缓存层:缓存加速访问存储
(6 )数据-数据库层:数据库固化数据存储
整个系统的⾼可⽤,又是通过每⼀层的冗余+⾃动故障转移来综合实现的。
四、分层⾼可⽤架构实践
【客户端层-反向代理层】的⾼可⽤
【客户端层】到 【反向代理层】的⾼可⽤,是通过反向代理层的冗余来实现的。以
nginx为例:有两台nginx ,⼀台对线上提供服务,另⼀台冗余以保证⾼可⽤,常见的
实践是keepalived存活探测,相同vi tual IP提供服务。
⾃动故障转移:当nginx挂了的时候,keepalived 够探测到,会⾃动的进⾏故障转
移,将流量⾃动迁移到shadow-nginx ,由于使⽤的是相同的vi tual IP ,这个切换过程
对调⽤⽅是透明的。
【反向代理层-站点层】的⾼可⽤
【反向代理层】到 【站点层】的⾼可⽤,是通过站点层的冗余来实现的。假设反向代
理层是nginx ,nginx .conf⾥ 够配置多个web后端,并且nginx 够探测到多个后端的
存活性。
⾃动故障转移:当web-se ve 挂了的时候,nginx 够探测到,会⾃动的进⾏故障转
移,将流量⾃动迁移到其他的web-se ve ,整个过程由nginx ⾃动完成,对调⽤⽅是透
明的。
【站点层-服务层】的⾼可⽤
【站点层】到 【服务层】的⾼可⽤,是通过服务层的冗余来实现的。“服务连接池”会
建⽴与下游服务多个连接,每次请求会“随机”选取连接来访问下游服务。
⾃动故障转移:当se vice挂了的时候,se vice-connection-pool 够探测到,会⾃动的
进⾏故障转移,将流量⾃动迁移到其他的se vice ,整个过程由连接池⾃动完成,对调
⽤⽅是透明的 (所以说RPC-client 中的服务连接池是很重要的基础组件)。
【服务层缓存层】的⾼可⽤
【服务层】到 【缓存层】的⾼可⽤,是通过缓存数据的冗余来实现的。
缓存层的数据冗余又有⼏种⽅式:第⼀种是利⽤客户端的封装,se vice对cache进⾏双
读或者双写。
缓存层也可以通过⽀持主从同步的缓存集群来解决缓存层的⾼可⽤问题。
以edis为例,edis天然⽀持主从同步,edis官⽅也有sentinel 哨兵机制,来做edis的存
活性检测。
⾃动故障转移:当edis主挂了的时候,sentinel 够探测到,会通知调⽤⽅访问新的
edis ,整个过程由sentinel和 edis集群配合完成,
文档评论(0)