和性能可扩展性,高可用性,性能和关键任务这些术语

概述

可扩充性,高可用性和性能

可扩充性,高可用性,性能和关键任务这种术语对不同组织或组织内的不同部门来说意味着不同的事情。它们常常被互换,引起混乱,致使管理不善的预期或延后的实现或不现实的指标。本文为您提供了定义这种术语的工具,便于您的团队才能完全了解性能目标来实现目标关键系统。

可扩充性

可扩充性是系统或应用程序的属性,用于处理大量的工作或更易轻松扩充,用于响应对网路,任务处理,数据库访问或文件系统资源需求的降低

水平可扩充性

当系统通过添加具有相同功能的新节点扩充时,系统可以水平扩充,因而在所有节点之间重新分配负载。SOA系统和Web服务器通过向负载均衡网路添加更多服务器来扩充,便于传入的恳求可以在所有这种网路之间分配。集群是描述扩充系统的常用术语。

图1:集群

垂直可扩充性

当系统通过向节点添加处理器,寻址,储存或网路插口进行扩充时,系统可以垂直或向下扩充,以满足每位系统更多的恳求。托管服务公司通过降低处理器数目或寻址来扩充,以在同一硬件中托管更多的虚拟服务器。

图2:虚拟化

高可用性

可用性描述了系统在一段时间内提供有用资源的情况。高可用性保证在正常运行时间和停机时间之间的时间窗口内有绝对的功能连续性。

A=100-(100*D/U),D::=计划外停机时间,U::=正常运行时间;D,U表示分钟

正常运行时间和可用性并不意味着同样的事情。一个系统可能在一个完整的检测期间,但因为网路中断或相关支持系统的停机时间可能不可用。停机时间和不可用性是同义词。

检测可用性

供应商将可用性定义为表1中的给定数目的“九补码”,其中还描述了与365天内的分钟数相关的恐怕停机时间的分钟数或秒数,即525,600,使U为她们的营销目的。

可用性%

停机时间分钟

每年停机时间

供应商术语

90

52,560.00

36.5天

1个9

99

5,256.00

4天

2个9

99.9

525.60

8.8小时

3个9

99.99

52.56

53分钟

4个9

99.999

5.26

5.3分钟

5个9

99.9999

0.53

32秒

6个9

表1:每年总运行时间的比率的可用性

剖析

高可用性取决于系统要求定义的预期正常运行时间;不要被供应商的数字欺骗。具有高可用性系统及其可检测的正常运行时间的涵义是服务级别合同的直接功能。考虑到计划的停机时间,比如每月8小时的维护窗口,可用性会上升。每降低九个可用性的成本可能呈指数下降。可用性是将系统升级或缩小并实现系统,网路和储存冗余的功能。

服务水平合同(SLA)

SLA是磋商条款,概述了涉及交付和使用系统的双方的义务,如:

系统类型(虚拟或专用服务器,共享托管)

可用性级别

最低限度

目标

正常运行时间

网路

功率

维护窗口

操作性能

性能和指标

开票

SLA可以在两个内部组织(比如IT和电子商务部门)之间或组织与外包服务提供商之间承当义务。SLA构建评估系统性能的指标,并提供可用性和可扩充性目标的定义。除非正在勾画SLA或早已存在SLA,否则不要谈论那些主题。

弹性

灵活性是才能依据需求动态地添加和删掉系统中的资源,而且是水平或垂直缩放的专门实现。

随着恳请在繁忙期间降低,当需求退减时,更多的节点可以手动添加到集群中,便于在实体零售商的季节性急聘中进行扩充和删掉。据悉,系统资源可以重新分配,以更好地支持一个动态扩充的系统。

施行可扩充系统

SLA确定系统是否必须扩充或扩充。她们也促进了下降时间表。股票交易系统必须在最小和最大可用性水平内实时扩充。相比之下,电子商务系统可能会在一年的“缓慢”月份扩大,并在零售节周末间扩大,以满足更大的需求。

负载均衡

负载均衡是通过在两个或更多资源之间分发恳求来最小化响应时间和最大化吞吐量的技术。负载均衡器可以在专用硬件设备或软件中实现。图3显示了负载均衡系统怎样通过一个公共的地址曝露给消费者使用。负载均衡器负责按照调度规则将恳求路由到可用系统。

图3:可用性占总年度总运行时间的比率

调度规则是用于确定那个服务器必须为恳求提供服务的算法。Web应用程序和服务一般通过遵守循环调度规则进行平衡,但也可以基于最少联接、IPhash或多个其他选项进行平衡。通过应用频度规则和到期算法来均衡缓存池。无状态恳求以任何数目的服务器的统一机率抵达的应用可以使用伪随机调度器。例如音乐商店之类的应用程序(其中个别内容在统计学上更受欢迎)可能会使用不对称的负载均衡器将较多的恳求转移到更高性能的系统,使用不太强悍的系统或集群服务于其余的恳求。

持久负载均衡器

有状态应用程序须要持久或黏性的负载均衡,其中保证消费者与池中的特定服务器维护会话。图4显示了一个黏性均衡器,用于维护来自多个顾客端的会话。图5显示了群集怎样通过使用数据库共享数据来维护会话。

图4:黏性负载平衡器

负载均衡器的常见特点

不对称负载分配-分配一些服务器来处理比其他服务器更大的负载

内容过滤:入站或出站。

分布式拒绝服务(DDoS)

功击防护

防火墙。

有效负载切换:按照URI,端口和/或合同向不同的服务器发送恳求。

优先激活:将服务器放在池中。

速度整形:能否给不同的流量赋于不同的优先权。

脚本:通过施行编程规则或操作降低人际相处。

SSL中止:硬件辅助加密可以释放Web服务器资源。

TCP缓冲和卸载:对池中的服务器的恳求。

GZIP压缩:减少传输带宽借助率。

图5:数据库会话

缓存策略

有状态的负载均衡技术须要服务提供商之间的数据共享。缓存是一种在估算或获取成本昂贵的多个消费者或服务器之间共享数据的技术。数据被储存和检索在一个子系统中,可以快速访问时常访问的数据的副本。

缓存被实现为索引表数据库的可扩展性,其中使用惟一的键来引用一些基准。消费者首先检测(命中)缓存并从中检索数据来访问数据。若果不存在(缓存未命中),则会进行成本较高的检索操作,消费者或子系统将数据插入高速缓存。

写新政

假如后备储存修改而不更新缓存,缓存可能会显得过时。缓存的写策略定义了缓存数据的刷新方法。一些常见的写策略包括:

直写:每次写入高速缓存就会对后备储存进行同步写操作。

写入:更新的条目在缓存表中被标记为脏,只有在恳求脏数据时才更新。

无写入分配:仅读取恳求被缓存,假设数据不会随时间而变化,但检索成本很高。

应用缓存

隐性缓存发生在程序员甚少或没有参与实现缓存时。该程序使用其本机API执行查询和更新,而且缓存层手动缓存恳求,而不依赖应用程序。示例:Terracotta()。

显式缓存发生在程序员参与实现缓存API而且还可以实现缓存策略时。程序必须将缓存API导出到其流中才会使用它。示例:

memcached(),Redis()和OracleCoherence()。

一般,隐式缓存系统特定于平台或语言。诸如,Terracotta只适用于Java和JVM托管的语言,如Groovy或Kotlin。显式缓存系统可以与许多编程语言一起使用,而且可以在多个平台上同时使用。Memcached和Redis与每种主要的编程语言一起工作,Coherence可与Java,.Net和本机C++应用程序配合工作。

Web缓存

Web缓存用于储存文档或部份文档(“粒子”),以减轻服务器负载,带宽使用和Web应用程序的滞后。Web缓存可以存在于浏览器(用户缓存)或服务器上,本节的主题。Web缓存不可见,顾客端可能会被分类到以下任何类别中:

Web加速器:它们代表原始服务器运行。用于加速访问轻型资源(如媒体文件),但是一般地理位置更接近预期的接收者。内容分发网路(CDN)是Web加速缓存的示例;Akamai,AmazonS3,Nirvanix是这项技术的反例。

代理缓存:它们向可能都可以访问相同资源的一组顾客端提供恳求。它们可用于内容过滤和减轻带宽使用。Squid,Apache,AmazonCloudFront,ISA服务器是这项技术的反例。

分布式缓存

可以跨多个系统实现缓存技术,进而为多个消费者和多个资源提供恳求。那些被称为分布式缓存,如图6中的设置。Akamai是分布式Web缓存的示例,memcached是分布式应用程序缓存的示例。

图6:分布式缓存

集群

集群是一组计算机系统,它们一起工作,让用户觉得似乎是单个系统在服务。布署群集以提升服务可用性或降低估算或数据操纵性能。在等效估算能力方面,与具有相同性能特点的单系统相比,集群更具成本效益。

集群中的系统通过例如万兆以太网,光纤分布式数据插口(FDDI),Infiniband,Myrinet或其他技术的高速局域网互连。

图7:负载均衡集群

负载平衡集群(主/主):在多个前端冗余节点之间分配负载。集群中的所有节点都向消费者提供全方位服务功能,并同时处于活动状态。

高可用性集群(主/备):通过冗余集群提供不间断服务来提升服务可用性,因而去除单点故障。高可用性集群起码须要两个节点,一个“心跳”来测量所有节点是否打算就绪,以及一个路由机制,假如主集群出现故障数据库的可扩展性,则会手动切换流量或故障切换。

图8:群集故障切换

网格:将工作负载定义为不须要进程间数据共享的独立作业。储存或网路可以在网格的所有节点上共享,但中间结果与其他作业进度或网格中的其他节点(比如ClouderaMapReduce集群())无关。

图10:估算集群

估算集群:执行须要原始估算能力而不是执行事务操作(如Web或数据库集群)的进程。节点紧密耦合,均匀,化学接近。她们时常代替超级计算机。

冗余和容错

冗余系统设计取决于任何系统组件故障与其他组件故障无关的期望。

容错系统在组件或子系统故障的情况下继续运行;吞吐量可能会增加,但总体系统可用性保持不变,通过组件冗余或安全回退来处理硬件或软件故障。假如依赖系统不可用,软件中的容错一般被实现为回退方式。容错要求来自SLA。实现取决于硬件和软件组件以及它们交互的规则。

容错SLA要求

没有单点故障:冗余组件确保连续运行,并容许修理而不中断服务。

故障隔离:问题检查必须确定特定故障组件

故障传播遏止:一个组件中的故障不能传播到其他组件。

恢复模式:将系统重新设置为已知状态。

冗余集群系统可以提供更高的可用性,更好的吞吐量和容错能力。图10中的主/主集群为可扩充的无状态应用程序提供了不间断的服务。

图10:主/主完全容忍和恢复

一些有状态的应用程序可能只会扩大;图11中的主/备集群为这种应用程序提供了不间断的服务和灾难恢复。主/主配置提供故障透明度。主/备配置可以以更高的成本提供故障透明度,由于通过反馈控制系统实现手动故障监测和重新配置,反馈控制系统更高昂而且更复杂。

图11:主/备容错和恢复

企业系统一般通过将服务转移到备分系统并将其早日上线,通过故障透明度实现主/备容错和恢复。机器人和生命关键系统可以实现机率,线性模型,故障隐藏和优化控制系统。

多区域

冗余系统一般跨越多个区域,以隔离地理现象,提供故障转移功能,并尽可能紧靠消费者提供内容。这种冗余通过系统级联到所有服务中,而且单个可扩充系统可以在整个过程中具有多个负载均衡的集群。

云估算

云估算描述在第三方拥有和营运的分布式估算资源上运行的应用程序。

最终用户应用程序是最常见的示例。她们借助软件即服务(SaaS)和平台即服务(PaaS)估算模型。

图12:云估算配置

云服务类型

网路服务:Salesforcecom,USPS,GoogleMaps。

服务平台:GoogleAppEngine,AmazonWebServices(EC2,S3,CloudFront),Nirvanix,Akamai,MuleSource。

故障监测方式

故障监测方式必须提供足够的信息来隔离故障并执行手动或辅助故障切换操作。一些最常见的故障监测方式包括:

外置确诊

合同嗅探器

健康检测

看门狗检测

临界性定义为两个或多个测量机制在固定时间段内报告的连续故障的数目。假如报告每位单一故障(噪音)或则在多个监控周期内未能报告真实故障,则故障检查机制是无用的。

系统性能

性能指的是指定时间段内特定工作负载下的系统吞吐量和延后。性能测试验证关于系统吞吐量,可扩充性,可靠性和资源使用情况的施行决策。性能工程师与开发和布署团队合作,确保系统的非功能需求(如SLA)作为系统开发生命周期的一部份实现。系统性能包括硬件,软件和网路优化。

提示:性能测试工作必须与开发项目同时开始,并继续布署。假如可能,应对生产环境的镜像执行测试。

绩效工程师的目标是尽快发觉困局,并与开发布署团队合作,去除那些困局。

系统性能测试

性能尺寸与SLA和系统设计一起记录在案。性能故障排除包括以下类型的测试:

持久性测试:在连续的,预期的负载下辨识资源泄露。

负载测试:确定特定负载下的系统行为。

峰值测试:显示系统怎样运行以响应负载的剧烈变化。

压力测试:在长时间的剧烈负载变化下辨识应用的断点。

软件测试工具

市场上有许多软件性能测试工具。许多挺好的工具已开源。这种工具可适用于包括Java,原生的,PHP,.Net和其他语言和平台等。

© 版权声明
THE END
喜欢就支持一下吧
点赞73 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片