什么是高可用

什么是高可用

维稳

「维稳」,顾名思义就是维持稳定,那什么叫稳定。

回想一下,生活上一些可以找到稳定的地方:

  • 住的自己买的且不需要还贷房子,我们会觉得稳定,因为不需要担心被房东无故房租加价或赶出来、或者自己现金流出现问题导致断供,不可控不能预期的情况较少。
  • 看NBA比赛,湖人3节过后领先30分的时候,我觉得稳了,因为被翻盘的几率太小了。
  • 某个软件用起来,不会用着用着挂掉蓝屏,内存使用不会忽高忽低,那就叫稳。
  • 你看到一个陌生人走在大街上,他是在正常的往前走,不会无故摇摇晃晃,不会随便跟别人搭话,不会突然扑过来打你,他的行为是符合常理的,所以感觉稳定。

所以「稳定」其实是一种心理的预期管理。一个东西稳定,意思就是,他是什么样子、有哪些状态、出现什么结果可以怎么处理,是已经事先预知的。

我们看一下IT系统,“不稳”有以下症状:

1、变更之后就算通过了验证,也会有可能被用户报障某块功能不可用,我明明没动这一块哇怎么会踩坑呢,原来代码千丝万缕太复杂,对影响范围判断错误导致漏测最终用户报障才知晓不可用。

2、负责的某个被不少系统依赖的基础服务,出了问题就容易乱了手脚,判断影响范围、找运维找研发、升级事件、同步故障、补偿措施等,混乱操作会直接证明了你能力不行。

3、公共资源使用没有规范,大家都在用,突然出现一个滥用、或者真的超过了使用的资源瓶颈,一大片关联系统都会收到影响。

…………

所以,不管是我们“为或不为”,“不稳”的感觉如影随形。

你自己的问题、还是别的系统问题、还是网络问题、还是云服务的问题,都有可能导致自己负责的系统不可用。故障也许会迟到但不会缺席,虽然我们陆陆续续提了一些优化,但貌似并没有增加太多安全感,总觉得离挂掉的不远。

高可用定义

「维稳」是大白话,对应软件架构上叫高可用,High Availability,简称HA。维基百科是这么解释,

高可用性(英语:high availability,缩写为 HA),IT术语,指系统无中断地执行其功能的能力,代表系统的可用性程度。是进行系统设计时的准则之一。高可用性系统与构成该系统的各个组件相比可以更长时间运行。

整个概念里面重点就在「无中断」,就是系统“不死”。

不稳定就是系统时而输出不了,高可用保持输出的无中断,所以高可用和稳定,我认为可以划等号。

可用性和可靠性

需要澄清一下,可用性和可靠性是两个概念。比如对于一个API来讲,

  • 可靠性,系统是否具备无差错地执行预期操作的能力,专注的是输出质量;API返回的是否符合预期?是否是正确的?
  • 可用性,为了执行这些操作,系统当前可运行的能力,专注的是执行能力;API有返回吗?

可靠性更多地可以靠测试保证,但可用性比可靠性需要考虑的维度和复杂度都要高得多。

我们现在只讨论可用性问题。

低可用原因

怎么才可以高可用呢,既然高可用难以达到,我们可以反过来用逆向思维考虑。

造成程序低可用的原因是什么?针对每个原因再优化,那我们就可以一步步接近理想的高可用。

资源耗尽

资源指的是服务器、网路之类的有限资源,资源肯定都是有限的,有限体现在容积和期限。

  • 服务器cpu、内存等都有能力的上限,花光了就没了,只能扩容。
  • 服务器运行都有损耗,故障的一天总会到来。

资源是程序最底层的依赖,如果耗尽了那程序运行就会越来越慢直至无法响应。

举个例子,就是前一阵子google大面积宕机就是硬盘用完的问题。

预期外压力

程序设计也是有极限,架构、成本、压力,没有三者兼顾的最优选择。

所以一个程序最初的方案和架构可能是较为简陋的,但可以适应当时的压力;然而随着应用程序被越来越多的人使用,就很可能需要对代码和应用程序进行修改以支撑不断增加的压力。

比如某些系统突然搞一些定时抢奖品的活动,这种就容易人为造成压力,如果没有事先做好突增的压力评估,特别是系统所依赖的某些环境容易疏漏,那在活动期间的压力就很可能把服务压死。

团队协作

这是沟通管理的问题,项目复杂度高了,需要的团队成员和角色就越来越多;人多沟通就会有损耗,人员流动也有损耗,最后实现的架构未必是原来设计的样子,会打折扣。

每个人的编程方式风格也有可能各异,引入的组件也可能功能重叠、版本不一致等问题。

架构也会有破窗效应,架构慢慢被腐蚀,最终就会破坏原有架构可制成的可用性。

外部依赖

绝大部分程序不可能独立运行,都需要外部saas服务、中间件等依赖,这些通用的服务虽然稳定,但也会有不可用的风险。

由于这层依赖链的存在,基础服务的不可用就会导致我们程序不可用。

技术债务

技术方案、时间、质量、金钱,这些成本在实现一个功能的时候都需要取舍,有时候为保当前的业务快速上线,的确会把技术舍弃,选择优先发布的方式。

这样就会造成技术债务,技术债务就是,原本应该考虑的、设计的技术环节,债务越多就越影响系统的可用性。

具体来说,技术债务包括:

  • 缺乏设计,每个系统都需要设计,而且设计是有容量极限,随着时间和用户量增加,就容易超出容量极限造成不可用。
  • 遗留bug,每个版本迭代为了按时发布,遗留一些bug,bug的堆积就有可能形成不可用的后患。
  • 技术能力缺乏,开发人员技术能力不足,考虑不周,缺乏宏观把握和预见性,对框架、技术细节了解不够深入,没考虑并发场景,这种债务层层叠加之下,也容易造成不可用。

参考:
1、《可伸缩架构(第2版):云环境下的高可用与风险管理》https://book.douban.com/subject/35178755/

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345

推荐阅读更多精彩内容