上下文

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

影响因素

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

  • 用户希望在使用应用程序时这些应用程序可以使用并且能够作出响应。
  • 在生产环境中(无论是支持重要客户端/服务器应用程序的数据库,还是电子商务网站)的连续运行时间日益成为普遍的业务要求。
  • 应用程序故障可能会造成严重的经济损失。例如,由于基础结构中一个服务器出现故障,某大销售量在线商店每小时 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. SQL 分组

  2. 【剑指Offer】40、数组中只出现一次的数字

      题目描述:   一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字.要求时间复杂度为O(n),空间复杂度为O(1).   解题思路:   这道题目相对比较难 ...

  3. Centos7从3.10升级内核到4.9后无法启动解决办法:mpt[23]sas驱动问题

    Centos7升级内核后无法启动解决办法:mpt[23]sas驱动问题 前言 这个问题存在有一段时间了,之前做的centos7的ISO,在进行内核的升级以后就存在这个问题: 系统盘在板载sata口上是 ...

  4. PHP循环输出二维数组的数据

    //下面是一个例子$g_id = isset($_GET['id'])?$_GET['id']:'1';//定义变量$g_id,使用三元运算符是为了避免出现waring $p_id = ($g_id& ...

  5. Golang - 面对"对象"

    目录 Golang - 面对"对象" 1. 简介 2. 匿名字段 3. 方法 4. 包和封装 5. 接口 4. 包和封装 5. 接口 Golang - 面对"对象&quo ...

  6. vue 注册全局组件

    注册全局组件有啥好处呢? 提高代码的复用性:哪里需要写哪里,贼方便,就写一个标签:减少代码量:可以再配合slot一起使用,咦~~,舒服 为了让整个项目的可读性,我创建一个文件统一存放全局组件 1.创建 ...

  7. BZOJ 4244 邮戳拉力赛 (DP)

    手动博客搬家: 本文发表于20181211 18:01:21, 原地址https://blog.csdn.net/suncongbo/article/details/84957907 为了防止我的博客 ...

  8. POJ 4046 Sightseeing

    Sightseeing Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID ...

  9. asp怎么实现二级联动下拉菜单

    rs为一级栏目的记录集 rs2为二级栏目的记录集 分别替换成你自己的记录集名称就好了 <script language="JavaScript"> var onecou ...

  10. 洛谷 P2712 摄像头

    题目描述 食品店里有n个摄像头,这种摄像头很笨拙,只能拍摄到固定位置.现有一群胆大妄为的松鼠想要抢劫食品店,为了不让摄像头拍下他们犯罪的证据,他们抢劫前的第一件事就是砸毁这些摄像头. 为了便于砸毁摄像 ...