上下文

您正在设计要部署应用程序的基础结构层。运行要求包括无法满足的可用性或性能能力,因为基础结构中存在性能瓶颈或故障单点。

影响因素

设计基础结构时,请考虑下列影响因素:

  • 用户希望在使用应用程序时这些应用程序可以使用并且能够作出响应。
  • 在生产环境中(无论是支持重要客户端/服务器应用程序的数据库,还是电子商务网站)的连续运行时间日益成为普遍的业务要求。
  • 应用程序故障可能会造成严重的经济损失。例如,由于基础结构中一个服务器出现故障,某大销售量在线商店每小时 25,000 美元的收入即会降低。如果故障持续数小时,其资金影响则可能相当严重。
  • " 应用程序基础结构中的所有系统都需要维护。各个系统必须既能适应硬件升级,又能适应软件升级,而不会导致应用程序停止运行。例如,发布了修补程序,以修复 运行于某服务器(提供了应用程序)的组件的相关安全问题。如果仅有此服务器,则应用程序将停止运行。如果该服务器是一系列服务器之一,则仅该服务器将会停 止运行,而应用程序不会停止运行。
  • " 增加硬件可能会增加解决方案的成本和复杂程度。例如,新硬件或功能更强的硬件需要增加开发和测试,才能使应用程序充分利用功能更强的环境。另外,管理更为复杂的环境还需要增加维护和培训成本。

解决方案

对应用程序基础结构进行相应设计,使服务器对用户和应用程序表现为虚拟统一计算资源。实现这种虚拟效果的方法之一是使用服务器群集。服务器群集是相互连接的两个或多个服务器,这些服务器表现为一个服务器,因而创建了能增强可用性和(或)可伸缩性的虚拟资源。

在某个服务器由于故障或计划停机而无法使用时,通过确保群集中其他服务器可以承担工作负载,群集服务器可以实现提高可用性的目标(请参阅 Failover Cluster 模式)。此类群集可避免向访问该群集的用户或应用程序所提供服务的损失,还可透明进行服务器转移而不为用户所知。

还可以使用群集增强可伸缩性。服务器群集可以在当前性能级别支持更多用户,或通过向多个服务器分散工作负载来提高当前数量的用户的应用程序性能。另外,如前所述(请参阅 Load-Balanced Cluster 模式),可伸缩群集服务器还有一附带作用,即多个服务器的额外冗余性有助于提高系统可用性。

图 1:群集基本概念

图 1 显示了服务器群集如何使两个或多个服务器(服务器 1 到服务器 n)对独立应用程序表现为一个虚拟资源。

不对称群集

在" 不对称群集"中,备用服务器仅是为了在其他服务器发生故障时接替其工作。此类群集通常用于为读/写存储(如数据库、邮件系统以及文件和打印服务)提供高可 用性和高可伸缩性。如果由于维护需要而出现计划停机,或因故障导致未计划停机,群集中某节点因而无法使用,其他节点则会接替该故障节点的功能。

备用服务器不执行其他有用工作,且其功能不强于主服务器。在将主服务器与多个冗余子系统配置一起以获得高可用性和高容错性时,通常使用功能较差、成本较低的备用服务器。不对称群集的一个常见类型是 Failover Cluster(请参阅 Failover Cluster 模式)。

图 2:不对称群集

图 2 显示了不对称群集如何向应用程序显示虚拟资源。正常情况下,主服务器处理所有请求。发生故障时,备用服务器将接替处理所有请求。

对称群集

在" 对称群集"中,群集中每个服务器都执行有用工作。通常情况下,每个服务器都是一组特定应用程序的主服务器。如果一个服务器出现故障,其余服务器则会继续处 理其分配应用程序组,同时处理发生故障的服务器上的应用程序。因为更为充分利用了群集资源,对称群集的成本效率更高;但在发生故障时,剩余各服务器的附加 负载可能导致这些服务器也出现故障。

图 3:对称群集

图 3 显示了对称群集如何向应用程序显示虚拟资源。请求被分散至各个正常运行的服务器,以分散负载并增加可伸缩性。

对称群集的一个常见类型是负载平衡群集(请参阅 Load-Balanced Cluster 模式)。通过向服务器群集中所有正常运行的服务器分布请求,负载平衡群集可以提高 Web 服务器、介质服务器、VPN 服务器和只读存储等服务的性能、可用性和可伸缩性。

结果上下文

Server Clustering 具有下列优缺点:

优点

  • 更强的可伸缩性。通过 Server Clustering,应用程序可以处理更多负载。
  • 更高的可用性。Server Clustering 有助于应用程序避免服务中断。
  • 更大的灵活性。群集具有提供虚拟统一计算资源的功能,IT 人员因而在配置基础结构以支持应用程序性能、可用性和可伸缩性要求的时候有更多选择。

缺点

  • 增加了基础结构的复杂性。有些群集设计会明显增加解决方案的复杂性,从而可能影响运行和支持要求。例如,群集可能会增加要管理的服务器、要维护的存储设备以及要配置和监视的网络连接。
  • 增加设计和代码要求。应用程序可能需要特定设计并更改代码,才能在使用群集的基础结构中正常运行。例如,跨越多个服务器管理会话状态的需要可能会变得更加困难,并且可能需要更改代码才能适应维护状态的需要,这样在发生服务器故障时才不会丢失会话信息。

不兼容性。现有应用程序或应用程序组件可能不支持群集技术。例如,用于开发应用程序或组件的技术可能存在这样的限制:即使更改代码,也不支持群集。

第7章 性能和可靠性模式 Server Clustering(服务器群集)的更多相关文章

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

    上下文 您已经决定在设计或修改基础结构层时使用群集,以便在能够适应不断变化的要求的同时保持良好的性能. 问题 在保持可接受的性能级别的同时,如何设计一个可适应负载变化的.可伸缩的基础结构层? 影响因素 ...

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

    上下文 您已经决定在设计或修改基础结构层时使用群集以提供高度可用的服务. 问题 您应该如何设计一个高度可用的基础结构层,来防止因单台服务器或它所运行的软件出现故障而导致的服务丢失? 影响因素 在设计高 ...

  3. 第13章 模版方法模式(Template Method)

    原文  第13章 模版方法模式(Template Method) 模板模式 模板模式 举例:模拟下数据库的update方法,先删除在插入. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  4. 第11章 享元模式(Flyweight Pattern)

    原文 第11章 享元模式(Flyweight Pattern) 概述:   面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题.但是在某些情况下,对象的数量可能会太多,从而导致了运行时 ...

  5. 设计模式之第13章-职责链模式(Java实现)

    设计模式之第13章-职责链模式(Java实现) “请假都那么麻烦,至于么.”“咋的了?”“这不快过年了么,所以我想早两天回去,准备一下,买买东西什么的,然后去给项目经理请假,但是他说快过年了,所以这个 ...

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

    设计模式之第12章-享元模式(Java实现) “怎么回事,竟然出现了OutOfMemory的错误.鱼哥,来帮我看看啊.”“有跟踪错误原因么?是内存泄露么?”“不是内存泄露啊,具体原因不知道啊.对了,有 ...

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

    第三章Web表示模式 体系结构设计者在设计第一个作品时比较精简和干练.在第一次设计时,并清除自己做什么,因此比较小心谨慎.第二个作品是最危险的一个作品,此时他会对第一个作品做修饰和润色,以及把第一次设 ...

  8. 第十一章 Servlet MVC模式

    内包含案例,基于jsp+servlet的:MVC模式计算器:MVC模式登陆 第十一章 Servlet MVC模式 模型-视图-控制器(model-view-controller),简称MVC.MVC是 ...

  9. 《微服务架构设计模式》读书笔记 | 第8章 外部API模式

    目录 前言 1. 外部API的设计难题 1.1 FTGO应用程序的服务及客户端 1.2 FTGO移动客户端API的设计难题 1.3 其他类型客户端API的设计难题与特点 2. API Gateway模 ...

随机推荐

  1. Vuex教程简单实例

    什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性. ...

  2. PAT_A1147#Heaps

    Source: PAT A1147 Heaps (30 分) Description: In computer science, a heap is a specialized tree-based ...

  3. [luogu2587 ZJOI2008] 泡泡堂 (贪心)

    传送门 Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡堂.每一场比赛 ...

  4. js中获取数组中的最大值最小值

    var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math.min.apply(null, a));//最小值 多维数组可以这么修 ...

  5. rsync增量同步标志位详细解释

    rsync非常强大,下面是我用rsync做目录备份时用到的参数: rsync -ruPi -plEt /home/op/photo/ /remote_backup/photo/ --dry-run - ...

  6. CSS学习笔记之选择器

    目录 1.元素选择器 2.继承 3.选择器分组 4.声明分组 5.后代选择器 6.子元素选择器 7.相邻兄弟选择器 8.类选择器 9.ID 选择器 10.属性选择器 11.伪类 12.伪元素 1.元素 ...

  7. vue 手机键盘把底部按钮顶上去

    背景:在写提交订单页面时候,底部按钮当我点击输入留言信息的时候,底部提交订单按钮被输入法软键盘顶上去遮挡住了. h5 ios输入框与键盘 兼容性优化 实现原理:当页面高度发生变化的时候改变底部butt ...

  8. 《你又怎么了我错了行了吧》第八次团队作业:Alpha冲刺

    项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十二 团队作业8 团队名称 你又怎么了我错了行了吧 作业学习目标 (1)掌握软件测试基础技术 (2)学习迭代式增量软件开发过程,完 ...

  9. 暑假集训D14总结

    %dalao 今天dalao继续来讲课~讲的是一个叫kd树的奇怪东西= = 然而啥都没听懂 考试 今天多校联考,日常炸= = 照例打了前两道题的暴力(T1随便hash一下就水过了啊喂),然后开始推T3 ...

  10. javascript的函数、创建对象、封装、属性和方法、继承

    转自原文javascript的函数.创建对象.封装.属性和方法.继承 一,function 从一开始接触到js就感觉好灵活,每个人的写法都不一样,比如一个function就有N种写法 如:functi ...