ebay增强可用性的4个原则(4)

简介: ebay增强可用性的4个原则(4)

微信图片_20220123183311.jpg


规则3——避免系统串联

内容:减少以串联方式连接的组件数量。

场景:每次考虑添加组件的时候。

用法:删除不必要的组件、收起组件或添加多个并行组件以减少影响。

原因:串联组件受多重失败乘法效应的影响。

要点:避免向串联系统添加组件。如果有必要这样做,添加多个版本的组件,如果一个出故障,其他组件可以取代它的位置。

 

电路中的元件有多种连接方式。两种最简单的连接方式是串联和并联。串联电路的元件(可能是电容、电阻或其他元件)沿电路连接。在这种类型的电路中,电流流过每个元件,电阻和电压是在这个基础上产生的。图9-2显示了两个电路,一个有三个电阻,一个有三节电池,由此产生电阻和电压。请注意,在此图中,如果有任何元件出故障,如电阻烧掉,就会造成整个电路出故障。


微信图片_20220123183318.jpg



9-3显示了两个并联电路,上面的有三个电阻(和一个电源或电容),下面的有三节电池。在这个电路中,总电阻的倒数等于每个电阻的倒数之和。定义的总电阻必须小于最小电阻。请注意,电压不改变,但电池只贡献了一小部分的电流,这有延长其使用寿命的效果。请注意,在这些电路中,元件的故障不会导致故障整个电路出故障。


   系统架构和电路在许多方面有相似之处。像电路一样,系统也由不同组件组成,如Web和应用服务器、负载均衡器、数据库和网络设备,而且也可以并联或串联。让我们以一个有大流量的静态网站为例。你可能把相同的静态内容配置在10Web服务器上以提供网站服务。要么使用负载均衡器引导流量,要么利用DNS通过为相关域名指定10个独立的IP地址。这些Web服务器像图9-3中的电池一样是并联的。Web服务器所处理的流量是总量的一小部分,如果一个Web服务器失败,该网站仍然可用,因为还有其他9Web服务器。


作为一个更典型的串联架构例子,让我们添加一些层。如果以一个包括一个网络服务器、一个应用服务器和一个数据库服务器的标准的三层网站为例,我们会有一个串联的架构。要满足请求,Web服务器必须先接受请求,然后将其传递给应用服务器(它查询数据库)。应用服务器接收并处理数据后,将其发送回Web服务器,最终满足客户的请求。如果电路或架构中的任何组件发生故障,整个系统将出故障。


回到现实世界的架构。几乎总是有些组件需要串联。当考虑到负载均衡、Web和应用层、数据库、存储系统等时,为了保持系统运行需要许多组件。当然,添加并联组件,即使层之间串联,有助于降低由组件故障引起系统故障的总风险。如果只有一个Web服务器出故障,多台Web服务器可以分散流量负载并避免系统故障。对于网络与应用层,大多数人很容易接受这个概念。数据库和网络层的这个问题却被大多数人忽视。如果并联的Web和应用服务器都串联到单个数据库,就可能会有一个可以导致灾难性故障的组件


关于网络组件,我们经常看到架构对并联服务器非常关注,但完全忽略网络设备,尤其是防火墙。流量通过防火墙、负载均衡器、防火墙、交换机,然后到Web服务器、应用服务器、数据库服务器,然后再一路返回。这个过程至少有7个串联的组件。如果已经有6个组件了,那么再增加一个有什么大不了的?


串联组件出故障的风险具有乘法效应。举个简单例子,如果我们有两个串联的服务器,各有99.9%的可用性或正常运行时间,那么该系统的总可用性不能大于99.9%×99.9%=99.8%。如果在串联中增加可用性为99.9%的第三个组件,我们就得到一个更低的总可用性99.9%×99.9%×99.9%=99.7%。放置的串联组件越多,系统的总可用性就越低。表9-4列出了一些简单的计算,来说明可用性降低,那么每月由此产生的停机时间增加。对串联的系统,每增加一个组件(可用性99.9%),每月停机时间就增加大约43分钟。然而,对并联系统,每增加一对组件(可用性99.9%),每月停机时间就减少大约26分钟。假如并联的每个组件有更低的可用性,这种改善效果甚至更加显著。


微信图片_20220123183359.jpg


就像今天的大多数电路一样,系统也远比简单的串联和并联更加复杂,对可用性的精确计算要比简单的例子复杂得多。然而,可以明确的是,串联组件显著增加了系统停机的风险。当然,可以通过减少串联组件或增加并联组件来降低风险。


微信图片_20220123183406.jpg

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
Kubernetes Java Nacos
nacos常见问题之通过helm方式部署设置开启授权认证功能如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
1124 0
|
机器学习/深度学习 算法 前端开发
阿里面试官分享+真实面经+笔试模拟题 | 面试充电,就看这篇
阿里面试官分享+真实面经+笔试模拟题+招聘信息汇总,太全了!这篇合辑一定要看,不然就亏大啦!
阿里面试官分享+真实面经+笔试模拟题 | 面试充电,就看这篇
|
缓存 UED 开发者
【专栏:交互与用户体验篇】网页加载动画与用户等待体验
【4月更文挑战第30天】网页加载动画在现代设计中扮演重要角色,通过提供视觉反馈和分散注意力,改善用户体验。本文讨论了设计加载动画的原因和类型,如进度指示器、旋转指针、动态图标、模糊效果和文本提示,并提出了设计最佳实践:简洁相关、快速明确、考虑不同设备和避免误导。优化加载策略,如首屏内容优先加载和懒加载,也是提升用户体验的关键。设计时需注重实用性、品牌一致性和跨平台兼容性,确保在加载延迟时仍能给用户留下良好印象。
349 5
|
Web App开发 编解码 JavaScript
让Chrome支持小于12px的文字方式
【10月更文挑战第24天】不同的方式可能适用于不同的场景和需求,在实际应用中需要根据具体情况进行选择和权衡。同时,也要密切关注不同浏览器对这些方式的支持情况和可能出现的兼容性问题,以确保文字在各种环境下都能得到良好的显示。
|
前端开发 JavaScript
前端 JS 经典:Math 常用方法汇总
前端 JS 经典:Math 常用方法汇总
247 0
|
JSON 数据库 数据格式
Django之Form组件
Django之Form组件
|
搜索推荐 定位技术 索引
iframe 框架有哪些优缺点,怎么使用?
iframe 框架有哪些优缺点,怎么使用?
371 0
|
ARouter
ARouter 源码分析1
ARouter 源码分析
|
小程序 安全 API
小程序云开发实现微信支付,小程序支付常见问题汇总及解决方案
小程序云开发实现微信支付,小程序支付常见问题汇总及解决方案
1082 0