分布式系统关注点——初识「高可用」

本文长度为 2042字,预计读完需 1.0MB流量,建议阅读 6分钟。
tips:全部「」包裹的文字,只对第一次出现进行红色高亮显示。

咳咳,从这篇开始,正式拉开分布式系统关注点中,我认为第二重要的内容 —— 「高可用」。微信

本篇的要点主要是明确「高可用」的定义,以及了解在分布式系统下哪些环节要作「高可用」,为后续要讲的策略、方式方案打下基础。若有1年以上的分布式系统实战经验可酌情选择跳过本篇。网络

Tips:「高XX」中的“高”实际上是相对的,越知足指望值,就越是“高”的。

1、「高可用」的做用?

首先,统一下对「高可用」的认知。架构

作个通俗一点的类比:独生子女时代的子女就是“单体应用”,若是出意外了,父母就「失独」了,整个家族的传承就断了,“不可用”了。然而,二胎政策就是经过分布式(冗余)来下降出现这个问题的几率,从而提升“可用性”。负载均衡

对于「高可用」,专业的解释是:分布式

「高可用」指的是经过尽可能缩短因平常维护操做(计划)和突发的系统崩溃(非计划)所致使的停机时间,以提升系统和应用的可用性。
—— 百度百科

简而言之,无论发生了什么(哪怕是地震、洪水了),可以让用户尽量的无感知,依旧能正常使用系统,也就是越「高可用」的。性能



为何在「数据一致性」后面就聊「高可用」呢?个人理解是,分布式系统的关键是作冗余,可是冗余的最大敌人倒是「数据一致性」。咱们经过冗余打破了原先的瓶颈,打开了一些新的通道。如,能够去争取更高的可用性、更高的性能等等。可是这其中,属「高可用」最重要。从上面引用中的解释也能够看到,要想尽量的下降停机时间,单体应用的天花板总会更快的到来。就比如让一台电脑永远保持运行是困难的,期间总得更新几回操做系统、忽然出现几回硬件故障,甚至机房的光纤被挖断了!那么这个时候就处于“不可用”状态。优化

也所以,我认为「高可用」的价值或者说意义,一定是在咱们作分布式系统得到的其它好处之上的,好比「高性能」之类。由于,在必定范围内,所谓的「高性能」其实经过优化单体应用也有可能达到某个指望值,可是「高可用」则必然须要依赖分布式系统才能达到。spa

2、如何来衡量「高可用」

通常咱们讲到最多的是用Service Level Agrement来衡量高可用指标,简称SLA。不过,其原意表示的是关于网络服务供应商和客户间的一份合同,其中定义了服务类型、服务质量和客户付款等术语,其中还包含除了「有效工做时间」以外的其它概念,如带宽、服务就绪时间(RFSD)、平均故障间隔时间(MTBF)、服务平均恢复时间(MTRS)、平均修理时间(MTTR)等。最初,SLA多用于电信运营商之类的基础设施所提供的服务中,商定用户能够享受什么样的等级什么样的带宽服务等等。操作系统

SLA完整的定义会复杂的多,在软件系统中主要是取了其中的「有效工做时间」部分。只要系统一直可以提供服务,咱们就能够说系统的可用性是100%,但这只停留在理想中。若是系统每运行100个时间单位,会有1个时间单位没法提供服务,咱们说系统的可用性是99%。贴一张常见的表格图:架构设计

图片描述
▲图片来源于网络,版权归原做者全部

现在,咱们的生活愈来愈依赖于移动互联网的一些应用,假设支付宝挂了几个小时,这下好了,刷不了卡了、转不了账了、信用卡也还不了了,慌不慌?

不过,相对的,还能够投机的理解为,只要我能保证系统在你使用它的时候是可用的,那么对外宣传也能够是「高可用」的。这也是在互联网普及以前,不少企业的内部C/S架构的信息系统得以正常使用的缘由,好比银行会在非营业时间更新他们的系统,因此对于服务窗口的营业员来讲,系统并无不可用,由于那个时候我不须要用它。

3、作「高可用」的本质

作「高可用」用一句话来归纳就是:

更快的发现故障,更快的隔离故障。

任何对这2点有帮助的工做就是咱们要作的事情。

作任何事情都有主次之分,作高可用的“主”就是「负载均衡」。



以前的文章中提到过屡次,分布式系统的关键是作冗余,那么让这些冗余能发挥「高可用」做用的就是「负载均衡」。因此,这是最基本的,也是迈向「高可用」的第一步,其它的措施都是创建在「负载均衡」之上的。

「负载均衡」的做用是一个“链接者”,让上下游之间以我指望的方式“链接”起来。因此,有必要先了解一下这些上下游的全貌,而且从中找到咱们要作「负载均衡」的地方。

图片描述

分布式系统有各式各样的架构方式,不过本质上都是上图这样的一个分层架构。图中红点标记出的地方就是咱们须要作「负载均衡」的地方,能够看到,就是每两层之间的链接处。

这些链接处在实际作「负载均衡」的时候,须要结合所处的网络层次。由于在不一样的网络层次有不一样的作法。以下图。

图片描述

通常主流的四层负载均衡和七层负载均衡,前者指的就是传输层,主要涉及的协议是TCP、UDP等,后者指的应用层,主要涉及的协议是Http、Https和FTP等。

用来实现「负载均衡」的解决方案有不少,分为基于硬件或者基于软件的,比较成熟的诸如:F5(支持四层、七层)、LVS(支持四层)、Nginx(支持七层)等等。

近些年,随着Service Mesh的兴起,随着涌现了一大批新一代的「负载均衡」解决方案,如Envoy、Istio、Linkerd、Ribbon等,有兴趣的小伙伴们能够自行研究下。

4、结语

这篇先起个步,下篇聊聊有哪些作「负载均衡」的策略,用图说话。




做者:Zachary( 我的微信号:Zachary-ZF
微信公众号(首发): 跨界架构师。<-- 点击查阅近期热门文章
按期发表原创内容: 架构设计丨分布式系统丨产品丨运营丨一些深度思考
扫码加入小圈子 ↓

图片描述

相关文章
相关标签/搜索