第7章 性能和可靠性模式

性能、可伸缩性和可靠性是所有企业应用程序的重要特性。尽管可通过多种方法来改善性能和可靠性,但是此模式群集强调如何将为任意数量的应用程序或用户提供服务的系统组合起来,以获得更好的可伸缩性和可用性。本章中的模式为有效地适应负载和高峰通信量的变化以及改善可用性奠定了基础。

满足运行要求

当今的企业应用程序必须满足不断增加的运行要求(包括提高可用性、改善性能以及能够在应用程序负载增加时满足这些要求)。这就要求应用程序和支持性基础结构的设计能够最大程度地实现可伸缩性和可用性。

可伸缩性

可伸缩性是指一个或多个系统在保持可接受的性能级别的同时能够处理不断增加的需求。为了有效地扩展某个系统,必须确定日益增加的需求的本质,并了解它对各个系统组件的影响。在确定限制性组件之后,可以向上扩展或向外扩展。

向上扩展

向上扩展策略是在单个服务器中提高资源(如处理器、内存或存储器)处理负载的能力。例如,可以通过增加处理器或内存的数量来向上扩展在多处理器操作系统之上建立的数据库群集。

向外扩展

向外扩展策略是通过增加服务器(从而增加这些服务器的整体容量)来增加基础结构级处理负载的能力。

可用性

可用性是指服务器、运行于服务器上的软件或应用程序的可测量运行时间,它依靠仔细的设计和运行原则,包括更改控制、严格测试以及快速升级和后备机制)。为了 实现最高级别的可用性,一定要在设计中找出所有故障单点。高可用的设计过程应该分析体系结构中的每个组件,以验证系统的整体性能不依赖于任何一个执行特定功能或提供对某块特定信息的访问的单一硬件或软件。

模式概述

该模式群集从Server Clustering(服务器群集)开始,它强调使用服务器群集来设计基础结构级以满足特定的可用性和可伸缩性要求。服务器群集是通过互连以形成统一虚拟计算资源的两台或更多台服务器。

服务器群集通过以下方式提高了系统的可用性:确保在一个服务器因故障或计划的关机而变得不可用时,群集中的另一个服务器可以负担工作负载,从而确保应用程序 仍对用户可用。群集还通过以下方式来增强可伸缩性:在维持当前性能级别的同时支持更多的用户,或者改善当前用户的应用程序性能。通过服务器群集来增强可伸 缩性的同时还可以增加服务器的冗余,从而有助于提高系统可用性,如上所述。

Server Clustering 模式强调群集是通用性设计技术,该技术将应用于另外两种设计模式:Load-Balanced Cluster (负载平衡群集)和Failover Cluster(故障转移群集)。图 1 显示了性能和可靠性模式群集。

图 1 性能和可靠性模式群集

Load-Balanced Cluster

Load-Balanced Cluster 模式解决如何通过设计和实现可伸缩的基础结构级来维护可接受的性能。此模式描述实现以下功能的常用方法:通过一组只读或应用程序服务器或这些服务器场来平衡传入的 Internet 协议 (IP) 通信量。

负载平衡功能将请求分布到服务器场(请参阅“Server Farm”)中的所有正常工作的服务器上,从而增强了包含 Web 服务器、流媒体服务器和虚拟专用网 (VPN) 服务器等服务器的基础结构级的性能、可用性和可伸缩性。当负载平衡群集中的某台服务器失败时,负载平衡服务器还通过将负载重新分布到其余服务器上来提供故障转移功能。

Failover Cluster

Failover Cluster 模式有助于设计高可用的应用程序基础结构级,以防在单台服务器出现故障或者以它为宿主的软件出现故障时丧失服务。此模式描述故障转移群集以及它们如何为读/写存储(如数据库、消息传递系统以及文件和打印服务)提供高可用性。

在故障转移群集中,如果某台服务器变得不可用,另一台服务器会接管其任务并继续为最终用户提供服务,该过程被称为故障转移。进行故障转移时,用户可以继续使用应用程序,并且不会意识到是另一台服务器在提供服务。

性能和可靠性模式

表 1 列出了性能和可靠性模式群集中的模式。这些模式的排列方式为较晚的模式构建在较早的模式之上。这意味着发展方向是从更一般的模式(如 Server Clustering)发展到更具体的模式(如 Failover Cluster)。

时间: 2024-11-09 00:51:43

第7章 性能和可靠性模式的相关文章

第7章 性能和可靠性模式 Load-Balanced Cluster(负载平衡群集)

上下文 您已经决定在设计或修改基础结构层时使用群集,以便在能够适应不断变化的要求的同时保持良好的性能. 问题 在保持可接受的性能级别的同时,如何设计一个可适应负载变化的.可伸缩的基础结构层? 影响因素 在设计可伸缩的基础结构层时,请考虑下列影响因素: 对于任何指定的应用程序来说,单独的服务器会受到最大负载容量的限制.例如,如果单台服务器将 Web 页作为基于 Web 的应用程序的一部分提供给用户,而且用户或事务负载增加并超过了服务器的限制,则应用程序性能将降至预期值以下,在最坏的情况下还会变得不

第7章 性能和可靠性模式 Failover Cluster(故障转移群集)

上下文 您已经决定在设计或修改基础结构层时使用群集以提供高度可用的服务. 问题 您应该如何设计一个高度可用的基础结构层,来防止因单台服务器或它所运行的软件出现故障而导致的服务丢失? 影响因素 在设计高度可用的基础结构层时,请考虑下列影响因素: 硬件组件.应用程序或服务出现故障可以使应用程序无法使用或不可用. 例如,设想一台正在提供应用程序的服务器出现了电源故障. 如果这是唯一的服务器或服务器中的唯一电源,则存在故障单点,并且应用程序将不可用. 计划内的服务器停机时间可以影响应用程序的可用性. 例

使用Micrisoft.net设计方案 第三章Web表示模式

第三章Web表示模式 体系结构设计者在设计第一个作品时比较精简和干练.在第一次设计时,并清除自己做什么,因此比较小心谨慎.第二个作品是最危险的一个作品,此时他会对第一个作品做修饰和润色,以及把第一次设计的边缘性设计思想都用在第二个作品,结果导致设计过头. 最初的Web很简单,只是有几个简单的Html页面组成,实现信息共享.随着业务的发展,需要根据业务来决定显示什么,于是开发了CGI编程,把大量的业务逻辑写到CGI中,然后输出到页面.随着发展,CGI编程模式受到了挑战,不能满足发展的需求,于是开发

设计模式之第12章-享元模式(Java实现)

设计模式之第12章-享元模式(Java实现) “怎么回事,竟然出现了OutOfMemory的错误.鱼哥,来帮我看看啊.”“有跟踪错误原因么?是内存泄露么?”“不是内存泄露啊,具体原因不知道啊.对了,有说新对象申请不到内存空间.”“这个原因么,我曾写过一篇博文:叫OutOfMemory简单分析.不过你的明显是因为代码问题,产生对象太多,导致内存被耗尽,正好一会有堂课,讲的正好能解决你的问题.”(嘿嘿,轮到我享元模式出场了~) 享元模式之自我介绍 我,享元模式乃是池技术中的重要实现方式,具体定义如下

第11章 享元模式(Flyweight Pattern)

原文 第11章 享元模式(Flyweight Pattern) 概述:   面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题.但是在某些情况下,对象的数量可能会太多,从而导致了运行时的代价.那么我们如何去避免大量细粒度的对象,同时又不影响客户程序使用面向对象的方式进行操作?享元模式j就可以让我们更好的复用我们内存中已存在的对象,降低系统创建对象实例的性能消耗 运用共享技术有效地支持大量细粒度的对象.[GOF <设计模式>] 结构图:   举例: 为了方便说清享元模式的核心,我

第九章 两种模式的比较

#include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <assert.h> #include <stdio.h> #include <unistd.h> #include <errno.h> #include <string.h> #include

《Java并发编程实战》第十一章 性能与可伸缩性 读书笔记

造成开销的操作包括: 1. 线程之间的协调(例如:锁.触发信号以及内存同步等) 2. 增加的上下文切换 3. 线程的创建和销毁 4. 线程的调度 一.对性能的思考 1 性能与可伸缩性 运行速度涉及以下两个指标: 某个指定的任务单元需要"多快"才能处理完成.计算资源一定的情况下,能完成"多少"工作. 可伸缩性: 当增加计算资源时(例如:CPU.内存.存储容器或I/O带宽),程序的吞吐量或者处理能力能相应地增加. 2 评估各种性能权衡因素 避免不成熟的优化.首先使程序正

设计模式之第1章-工厂方法模式(Java实现)

设计模式之第1章-工厂方法模式(Java实现) “我先来”,“不,老公,我先!”.远远的就听到几个人,哦不,是工厂方法模式和抽象工厂模式俩小夫妻在争吵,尼妹,又不是吃东西,谁先来不都一样(吃货的世界~).“抽象工厂模式,赶紧的自我介绍,工厂方法模式,你身为男人,要懂得绅士风度,lady first懂不懂,稍后再来,急什么.”(画外音:鱼哥,这是我家祖传的小吃,还有我爹的好酒blablabla),“哎呀,那个抽象工厂模式,阿姨喊你回家吃饭了.”“哦,我去去就回,等我啊.”工厂方法,赶紧的.“等等,

第3章 抽象工厂模式(Abstract Factory)

原文 第3章 抽象工厂模式(Abstract Factory) 场景我们的系统要同时支持两个数据库  SqlServer 跟Oracle数据库  并且不同的环境要进行随时切换. 看下面的代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54