千家信息网

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

发表于:2025-02-16 作者:千家信息网编辑
千家信息网最后更新 2025年02月16日,本文长度为2042字,建议阅读6分钟。所有「」包裹的文字,只对第一次出现进行高亮显示。咳咳,从这篇开始,正式拉开分布式系统关注点中,我认为第二重要的内容 -- 「高可用」。本篇的要点主要是明确「高可用
千家信息网最后更新 2025年02月16日分布式系统关注点——初识「高可用」

本文长度为2042字,建议阅读6分钟。所有「」包裹的文字,只对第一次出现进行高亮显示。


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


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


Tips:「高XX」中的"高"其实是相对的,越满足期望值,就越是"高"的。




一、「高可用」的作用?



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

做个通俗一点的类比:独生子女时代的子女就是"单体应用",如果出意外了,父母就「失独」了,整个家族的传承就断了,"不可用"了。然而,二胎政策就是通过分布式(冗余)来降低出现这个问题的概率,从而提高"可用性"。


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


「高可用」指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。

-- 百度百科


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



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


也因此,我认为「高可用」的价值或者说意义,必定是在我们做分布式系统获得的其它好处之上的,比如「高性能」之类。因为,在一定范围内,所谓的「高性能」其实通过优化单体应用也有可能达到某个期望值,但是「高可用」则必然需要依赖分布式系统才能达到。




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



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


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


▲图片来源于网络,版权归原作者所有


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

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




三、做「高可用」的本质



做「高可用」用一句话来概括就是:


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


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



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

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


「负载均衡」的作用是一个"连接者",让上下游之间以我期望的方式"连接"起来。所以,有必要先了解一下这些上下游的全貌,并且从中找到我们要做「负载均衡」的地方。



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

这些连接处在实际做「负载均衡」的时候,需要结合所处的网络层次。因为在不同的网络层次有不同的做法。如下图。



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

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


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




四、结语



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





作者:Zachary(个人×××号:Zachary-ZF

×××公众号(首发):跨界架构师。<-- 点击查阅近期热门文章

定期发表原创内容:架构设计丨分布式系统丨产品丨运营丨一些深度思考

扫码加入小圈子 ↓



系统 均衡 时间 分布式 服务 就是 应用 冗余 可用性 架构 故障 网络 作用 单体 地方 方式 方案 时候 更快 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 .net 对象数组存数据库 福州安卓系统软件开发公司 房友中介管理系统数据库 nc服务器多少钱 宿州市委网络安全办陈涛 使命召唤16俄区无法连接服务器 上海共享单车软件开发公司 大武口区智能网站服务器 坪山区网络技术进出口诚信服务 数据库系统工程师教程 服务器管理器怎样打开 软件技术企业应用软件开发 数据库系统原理周课后答案 科技和互联网 美业 vs软件怎么连接数据库 这才是软件开发的意义 阿里云镜像服务器 海南服务器机柜云主机 软件开发帮助文档下载 数据库三范式的简单理解 大兴区网络软件开发诚信经营 大武口区智能网站服务器 怎么查询未知软件数据库 网络技术的增值税率 南京正规网络技术代理价钱 微软服务器虚拟化方案 宣传普及网络安全知识海报 win7服务器安装不了软件 网络安全宣传教育情况汇报 武汉应聘软件开发
0