登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 679|回复: 0

高可用的本质

[复制链接]

974

主题

974

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2020-12-24 03:42:55 | 显示全部楼层 |阅读模式 来自 河北

原标题:高可用的本质

简介: 无论是一个域,一个BG,照旧一个站点,固然范围有大有小,对象有所差别,但其高可用的理念都是相通的,本日将本身对高可用的一点点思索以及总结的【nPRT公式】分享给各人。

f1Tpt3f3zFYyZ1Zz.jpg

我是乐羊,一个热爱风险防控的人,之前到场过蚂蚁Glocal多个站点从0到1的建站和高可用建立,现在正在到场蚂蚁大安全的高可用建立。无论是一个域,一个BG,照旧一个站点,固然范围有大有小,对象有所差别,但其高可用的理念都是相通的,本日将本身对高可用的一点点思索以及总结的【nPRT公式】分享给各人。

本文接纳“高可用是什么,为什么要高可用,怎么做高可用,为什么这么做,软件风险又在那里”的逻辑来先容。

一 、高可用是一种控制风险的本领

高可用是一种面向风险计划,使体系具备控制风险,提供更高的可用性的本领。

二、 为什么要高可用

对于一个公司而言,“为什么要高可用”可以完备明白为“公司为什么要(做体系)高可用”。以公司为对象,从内看包罗:人,软件(物),硬件(物);从外看包罗:客户,股东,社会;从自身看包罗:公司。

LF4Af4MFBF7FfBgZ.jpg

高可用的大条件:全部事物都不是100%可靠的

  • 全部事物都是变革的(唯一稳定的是变革)。
  • 全部变革的都不是100%可靠的。
  • 结论:全部事物都不是100%可靠的。

内因:人、物都不是100%可靠的

  • 从人的层面:人都是有大概犯错的。
  • 从软件层面:软件都是有大概有BUG的。
  • 从硬件层面:硬件都是有大概会坏的。

从概率学角度分析,凡是有大概会堕落的,只要变革次数充足多,终极堕落的概率会无穷趋向于1。

睁开全文

外因:无高可用,对外影响面是很大的

  • 从客户角度:无高可用,客户服务大概会停止。
  • 从股东层面:无高可用,股价大概会下跌。
  • 从社会角度:无高可用,社会秩序大概受影响。

根因(本质):控制风险

从公司自身角度:控制风险,保障公司代价,制止伤及根本。

三 、怎样做高可用

怎样做高可用,本质上就是:怎样控制风险。

1、 风险相干概念

  • 风险:指将来会发生危害的一种大概性,但现实未发生,记为r。
  • 故障:指已发生或正在发生危害的一种究竟,是风险变实际的效果。
  • 风险概率:指一个风险变故障的概率。用它来表现风险触发为故障的难易水平,记为P(r)。
  • 故障影响范围:指在单元时间内,一个故障造成的危害影响,记为R(r)。
  • 故障影响时长:指一个故障连续的时间,记为T(r)。
  • 故障影响面:指一个故障影响范围乘以故障影响时长的总和。这里用故障影响面来表现故障总的危害水平,记为F(r)。
  • 风险盼望:指每个风险变故障的概率乘以每个风险变故障后的故障影响面的总和。这里用风险盼望来表现风险的潜伏危害水平,记为E(r)。

2、 风险盼望的公式

根据上节的界说,可以推导出风险盼望的公式如下:

a098vwq9Q90X8aEx.jpg

r代表风险,风险盼望会随着风险的数目n和每个风险的P、R、T降落而降落,简称nPRT公式。

注:假如要引用该公式请注明出处。

3 、控制风险的4大因素(nPRT)

淘汰风险数目,n

从源头阔别风险,做到与风险载体无毗连,无关系;那么该风险概率就是0,也不关心该风险发生后的故障影响面是大是小,完全不关心。

  • 比方:庞大节日运动,施行全站封网,变动的数目就会得到一个显着的降落,就是典范的淘汰风险数目。
  • 比方:体系A完全不依靠Oracle,那体系A就不消关心Oracle的任何风险,哪怕美国总统忽然告急公布Oracle立刻立即克制在中国利用,体系A也无所谓。
  • 比方:近来新冠大盛行,人传人很可骇,假如你本日选择不上班不出门,那你本日就不消担心被表面的行人和同事感染。

低落风险变故障的概率(即:增长风险变故障的难度),P

把风险当成一个对象对待,给它层层设卡,增长风险变故障的门槛和难度,不要再让“不警惕多了一个空格或字符,体系就挂了”这种惨案容易出现。

  • 比方:职员B要对体系C举行变动,可以对职员B增长变动认证测验,对变动内容要求线下(或仿真)测试,对变动内容举行CR,体系C提供变动结果预览本领(雷同监控模式或试运行),万一职员B想恶意变动搞粉碎,还可以增长非同人复核,体系C可以增长防错计划举行掩护等等。
  • 比方:以新冠为例,带口罩,勤洗手,多透风等就可以低落染上新冠的概率。

减小故障影响范围,R

以大拆小,将一个团体拆分成N个小的个体,每个个体之间举行相互隔离,单个个体出题目仅影响单个个体,实现小而美。

  • 比方:分布式架构就是这个的范例,会合式一损俱损,分布式一损即N分之一损。
  • 比方:以新冠为例,网格化管理,各省或市间的活动举行限定,跨省必须核酸+隔离14天,有用控制新冠的流传范围。

收缩故障影响时长,T

故障影响时长由故障发现时间和故障止血时间决定,以是要早发现早止血。

发现方式分为:事前的预警,过后的告警。尽大概朝事前预警去做,给止血夺取时间乃至将风险扼杀在摇篮中。

止血方式分为:切换,回滚,扩容,降级 or 限流,BUG修复等。故障出现时第一优先原则为快速止血(如切换、回滚、扩容),严禁去定位根因;当无法快速止血时以少流血为第二优先原则,如降级、限流。

止血服从:主动 vs 人工 ;一键化 vs 多步操纵。尽大概用主动化去取代人工操纵,若人工操纵时只管实现一键化,提拔止血速率。

  • 比方:对于容量水位,可以在警戒线之前划一条预警线,提前预警,从容应对。
  • 比方:分布式应用集群,任何一台应用服务器有题目时,负载平衡会通过心跳查抄主动把有题目的应用服务器剔除,将哀求转发给其他(热)备份冗余的服务器上。
  • 比方:以新冠为例,但由于每个生命都是独一无二的,没有办法切换,也没有办法回滚,也不能降级(涉及人性主义),只能对症下药逐步治疗。

4 、高可用架构计划的7大焦点原则

根据nPRT公式,在高可用架构计划时有以下7个焦点原则:

少依靠原则:能不依靠的,尽大概不依靠,越少越好(n)

由于全部事物都不是100%可靠的,当2个事物之间有了关系,那么就会相互影响,就互为对方的一个风险,一个出题目大概会影响别的一个。我们同一用依靠来泛指这里的“关系”。

  • 比方:一个体系同时依靠Oracle,Mysql,OB三种关系型数据库,少依靠原则是改成仅依靠最成熟稳固的OB,不依靠Oracle和Mysql。

什么场景得当多依靠?

当引入依靠(n变大)可以减小PRT中的一个或多个,且使E(r)团体降落时。

  • 比方:为办理DB风险,引入分布式缓存,只要2者差别时挂的时间依然可用。

弱依靠原则:肯定要依靠的,尽大概弱依靠,越弱越好(P)

事物a强依靠事物b,一旦b出题目时,那么a也会出题目,一损俱损。

以是任何强依靠都要尽大概的转化成弱依靠,可以直接低落出题目的概率。

  • 比方:生意业务焦点链路在生意业务乐成后要要给用户发放积分权益;生意业务焦点体系必要依靠积分权益体系,好的方式是接纳弱依靠,利用异步化的方式,如许积分权益体系不可用时,大概率不会影响生意业务焦点链路。

分散原则:鸡蛋不要放一个篮子,分散风险(R)

GFAu71F17Q1U0lvq.jpg

打散拆分成N份;制止全局只有1份,否则一有题目影响范围就是100%。

  • 比方:全部生意业务数据都放在同一个库同一张表内里,万一这个库挂了,此时影响全部生意业务。
  • 比方:将本身全部的钱买了同一只股票,万一这只股票是乐视就惨了。

平衡原则:匀称分散风险,制止不平衡(R)

MraoaaA2tSvgrvfk.jpg

最好N份中的每份都是平衡的;制止某个份额过大,否则过大的那份一有题目就影响范围过大了。

  • 比方:xx应用集群有1000台,但由于引流组件BUG,导致全部流量引到了此中100台上面,导致负载严峻不平衡,末了因负载无法扛着全面瓦解。雷同庞大故障已经发生了多次。
  • 比方:将本身全部的钱买了10只股票,此中一只占比99%,万一这只股票是乐视就惨了。

隔离原则:控制风险不扩散,不放大(R)

L4JxrJV0rkV4R64Z.jpg

每份之间是相互隔离的;制止一份有题目影响其他的也有题目,流传扩散了影响范围。

  • 比方:生意业务数据拆分成10库100表,但是摆设在同一台物理机上;万一某张表有一条大SQL把网卡打满了,那10库100表都会受影响。
  • 比方:将本身全部的钱均分买了10只股票,每只都占10%,但10只都是乐视系的。
  • 比方:古代赤壁之战就是一个典范的反面例子,铁锁连船导致隔离性被粉碎,一把大火烧了80w雄师。

隔离是有级别的,隔离级别越高,风险流传扩散的难度就越大,容灾本领越强。

  • 比方:一个应用集群由N台服务器构成,摆设在同一台物理机上,或同一个机房的差别物理机上,或同一个都会的差别机房里,或差别都会里,差别的摆设代表差别的容灾本领。
  • 比方:人类由无数人构成,生存在同一个地球的差别洲上,这意味着人类不具备星球级别的隔离本领,本地球出现扑灭性影响时,人类是不具备容灾的。

隔离原则是一个极其紧张的原则,它是前面4个原则的条件。没有做好隔离,前面4个原则都是脆弱的,风险很轻易流传扩散开,粉碎前面4个原则的结果。大量真实体系故障是由于隔离性做得欠好导致的,如:线下影响线上,离线影响在线,预发影响生产,一条烂SQL影响整个库(或整个集群)等等。

分散,平衡,隔离是控制风险影响范围的3个焦点原则。打散拆分成N份,每一份都是平衡的,且相互隔离,一份有题目,影响范围为1/N。

无单点原则:要有冗余或其他版本,做到有路可退(T)

快速止血的方式是切换,回滚,扩容等;回滚和扩容属于特别的切换,回滚指的是切换到某个版本,扩容指的是将流量切换到新扩容的呆板上。

切换得有地方可切才行,以是不能有单点(这里特指强依靠的单点,弱依靠的可以降级),要有冗余备份或其他版本;单点会限定团体的可靠性。

假设单点的可靠性假设是99.99%,它要提拔到99.999%黑白常困难的,但是假如无单点而是依靠2个(1个挂掉没有关系,只要差别时挂就行),那团体可靠性就是99.999999% 会有质的提拔。

单点故障会导致无法快速止血,拉长整个止血时间,去单点至关紧张。这里的单点不但仅指的是体系节点,也包罗职员,如订阅告警的人,应急的人等等。

对于(紧张)数据节点,必须满意无单点原则,否则极度环境下大概造成数据永世丢失,永久无法规复;(紧张)数据节点满意无单点原则后,保障数据同等性比可用性要求更紧张。

  • 比方:一个商户仅支持一个付出渠道,就是典范的单点,万一这个付出渠道挂了就不能付出了。
  • 比方:一个家庭的全部收入仅依靠父亲一个的薪资收入,万一这个父亲病了,就没有收入了。

无单点原则和分散原则的区别:

  • 当节点无状态的环境下,打散拆分成N份,每份都是雷同的功能,互为冗余,即:节点无状态环境下,分散原则和无单点原则等价,满意一个即可。
  • 当节点有状态的环境下,打散拆分成N份,每份都是不雷同的,每份都没有冗余,必要针对每份再做冗余,即:节点有状态环境下,既要满意分散原则又要满意单点原则。

自我掩护原则:少流血,捐躯一部门,掩护别的一部门(P&R&T)

外部的输入都不是100%可靠的,有时间是偶然的错误,有时间乃至是恶意的粉碎,因此针对外部输入要有防错计划,给本身多一些掩护。

极度环境下大概无法(快速)止血,可以思量少流血,捐躯一部门掩护别的一部门。比方:限流,降级等。

  • 比方:大促峰值期间,一样平常会提前降级掉许多功能,同时限流,重要是为了掩护峰值绝大部门人的生意业务付出体验。
  • 比方:人体在失血过多或疼痛过分时就会触发休克征象,这也是一种典范的自我掩护机制。

四、 软件风险在何方

前面先容了控制风险的方法,回到软件体系这个范畴,它的风险又在那里?

以软件体系为对象,从内看包罗:盘算体系和存储体系;从外看包罗:职员,硬件,上游体系,卑鄙体系;以及(隐含的)时间。

izZBKn3Xx5N2vY22.jpg

由于每个对象都是由其他对象构成的,因此每个对象还可以继承往细分解(理论上可以无穷分解下去),上面的分解方式重要是为了简化明白。

1 、软件体系风险的泉源

风险源于(有危害的)变革,一个对象的风险泉源于全部跟它有关系的对象的(有危害的)变革。因此,软件体系风险的泉源,分为以下7大类:

盘算体系变革:运行变慢,运行错误

体系运行所依靠的服务器资源(如CPU,MEM,IO等),应用资源(RPC线程数,DB毗连数等),业务资源(业务ID满了,余额不敷,业务额度不敷等)的负载等都会影响体系运行的风险盼望。

存储体系变革:运行变慢,运行错误,数据错误

体系运行所依靠的服务器资源(如CPU,MEM,IO等),存储资源(并发数等),数据资源(单库容量,单表容量等)的负载和数据同等性等都会影响存储体系运行的风险盼望。

人的变革:变动堕落

变动职员的数目,安全生产意识,纯熟水平,变动的数目,变动的方式等都会影响变动的风险盼望。

由于变动的人多,变动的次数也多,导致变动成为蚂蚁全部故障泉源里的TOP1,这也是为什么“变动三板斧”这么着名的缘故原由。

“变动三板斧”精确的排序应该是“可灰度,可监控,可应急”;可灰度代表的是R,可监控和可应急代表的是T。

思索:假如变动三板斧让你再加一板斧,你以为应该是什么?

硬件变革:破坏

硬件的数目,质量,利用年限,调养等都会影响硬件的风险盼望,硬件破坏会影响上层软件体系不可用。

上游变革:哀求变大

哀求分为3个维度:(由无数API搜集而成的)网络流量,(由无数KEY哀求构成的)API,KEY。

  • 网络流量过大会造成网络堵塞,影响网络通道中的全部网络流量哀求。
  • API哀求过大会造成对应服务集群过载,影响整个服务呆板上的全部API哀求,乃至往外流传。
  • KEY哀求过大(俗称“热门KEY”)会造成单机过载,影响单机上全部KEY哀求,乃至往外流传。

以是大促保障的时间,不但仅是关注焦点API的容量保障,还必要思量网络流量和热门KEY。

卑鄙变革:相应变慢,相应错误

卑鄙服务的数目,服务品级,服务可用率等影响卑鄙服务的风险盼望。卑鄙相应变慢大概会拖慢上游,卑鄙相应错误大概会影响上游运行效果。

时间变革:时间到期

时间到期每每被人忽视,但它每每具有忽然性和全局粉碎性,一旦时间到期触发故障会导致非常被动,以是要提前辨认,尽早预警,如:秘钥到期,证书到期,费用到期,跨时区,跨年,跨月,跨日等。

  • 比方:2019年日本运营商软银因证书到期引发3000w用户长达4小时通讯停止。
以上每一大类风险都可以基于nPRT公式举行逐一分析处置惩罚。

2、 风险的数目:一生三,三生万物

任何一个事物既是由其他事物构成的又是其他事物的构成部门,无穷循环下去;一生三,三生万物,风险的数目是无穷无尽的。

向内看,内含内,可以无穷小下去;当原子粒度的题目流传开时,也大概影响软件体系的可用性,就像100纳米的新冠病毒就可以影响人体的可用性一样。

向外看,外有外,可以无穷大下去;当太阳系扑灭,软件体系的可用性天然就不复存在。

固然风险无穷无尽,但是只要我们对风险多一些相识,根据控制风险的一些理念和原则,照旧可以更好的低落风险盼望。

谈一谈敬畏之心:

  • 我们对天下的认知是有限的,这也让我们少了很多恐惊,同时也让我们少了一些敬畏之心。
  • 我们真正要敬畏的不是处罚条例,而是我们不知道的,以及我们不知道我们不知道。

五、 竣事语

  • 全部事物都是变革的。
  • 全部事物都不是100%可靠的。
  • 因此才有了风险,风险是不可见的,可见的是故障。
  • 风险是不能清除光的,但是可以阔别,可以淘汰。
  • 故障是不可制止的,但是可以推迟,可以缩小影响范围,收缩影响时间。

nPRT公式不但仅实用于软件体系风险,也实用于其他风险范畴,盼望对各人有效。

作者:开辟者小助手_LS

本文为阿里云原创内容,未经答应不得转载返回搜狐,检察更多

责任编辑:





上一篇:教诲部:中小学不得要求家长查抄修正作业
下一篇:原创一加OnePlus9Pro/9E规格曝光:配6400万像素摄像头和大电池 ...
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-12 21:48 , Processed in 0.204328 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表