云计算设计模式(十七)——基于队列的负载均衡模式

云计算设计模式(十七)——基于队列的负载均衡模式

使用队列,作为一项任务,它调用才能顺利间歇重物,可能会以其他方式导致失败的服务或任务超时服务之间的缓冲区。这个模式可以帮助最小化峰中的可用性和响应需求为任务和服务的影响。

背景和问题

许多解决方案在云中涉及运行调用服务的任务。在这种环境下,如果一个服务进行间歇重物,它可能会导致性能或可靠性问题

一个服务可以是一个组件,它是相同的溶液作为利用它的任务的一部分,或者它可以是第三方服务提供访问经常使用的资源,如高速缓存或存储服务。如果相同的服务是由多个同时运行的任务的使用,它可以是难以预料到的服务可能在任何给定时间点来进行请求的数量。

它可能是一个服务可能会遇到在需求高峰,导致它变得过载和不能对及时响应请求。有大量的并发请求驱服务也可能会导致服务失败,如果它不能处理的论点,即这些请求可能导致。

解决方案

重构的解决方案和介绍的任务和服务之间的队列。任务和服务异步运行。任务帖含有由服务于一个队列所需要的数据的消息。队列作为缓冲,存储该消息,直到它被检索到的服务。该服务从队列中检索消息并进行处理。从多个任务,它可以在一个高度可变的速率产生的请求,可以通过同一个消息队列被传递给服务。图1示出了这种结构。

图1 - 使用队列水平上的服务的负载

队列有效地从服务解耦的任务,并且该服务可以按自己的速度处理从并行任务的请求量的信息无关。此外,不存在延迟到一个任务,如果该服务是不可用的时候它投递一个消息到队列中。

这种模式提供了以下好处:
•它可以帮助最大限度地提高可用性,因为服务而产生的延迟将不会对应用程序,它可以继续发布消息队列,即使该服务不可用或不正在处理消息的即时和直接的影响。
•它可以有助于最大化可扩展性,因为队列的数目和服务的数量可以变化,以满足需求。
•它可以有助于控制成本,因为服务实例的数量部署仅需要足以满足平均负荷,而不是峰值负荷。

注意:

有些服务可以实现节流,如果需求达到阈值,超过该系统可能会失败。节流可能会降低功能可用。你也许可以实现与这些服务负载均衡,以确保这一阈值没有达到。

问题和注意事项

在决定如何实现这个模式时,请考虑以下几点:
•来实现控制的速率服务处理消息,以避免急剧的目标资源的应用程序逻辑是必要的。避免将尖峰需求到该系统的下一个阶段。测试系统在负载下,以确保它提供所需的流平,并调整队列的数目和处理消息来实现该服务实例的数量。
•消息队列是一个单向的沟通机制。如果一个任务期望的服务的答复,可能有必要执行该服务可用于发送的响应的机制。欲了解更多信息,请参阅异步消息底漆。
•您一定要小心,如果你申请自动缩放到被监听的队列中的请求服务,因为这可能会导致更多的争夺任何资源,这些服务的份额,并减少使用队列级负载的有效性。

何时使用这个模式

此图案是非常适合于使用可能会受到重载服务的任何类型的应用程序。

这种模式可能不是合适的,如果该应用程序期望以最小延迟的服务的响应。

例子

微软的Azure Web角色存储数据使用单独的存储服务。如果大量的Web角色实例同时运行,则可能是存储服务可以是不堪重负,无法向请求的速度不够快,以防止超时或没有响应这些请求。图2列出了这个问题。

图2 - 服务从一个Web角色实例大量并发请求正在被压垮

要解决此问题,可以使用一个队列地级Web角色实例和存储服务之间的负载。但是,存储服务被设计为接受同步请求,并且不能很容易地修改,以读取信息以及管理的吞吐量。因此,可以引入一个辅助角色作为接收从该队列中的请求,并将其转发到所述存储服务的代理服务。在辅助角色的应用程序逻辑可以控制在它传递请求到存储服务,以防止存储服务从被压垮的速率。图3示出了这种解决方案。

图3 - 使用队列和辅助角色成水平的幅作用和服务实例之间的负载

本文翻译自MSDN:http://msdn.microsoft.com/en-us/library/dn589783.aspx

时间: 2024-09-20 00:16:05

云计算设计模式(十七)——基于队列的负载均衡模式的相关文章

云计算设计模式(二十三)——Throttling节流模式

云计算设计模式(二十三)--Throttling节流模式 控制由应用程序使用,一个单独的租户或整个服务的一个实例的资源的消耗.这种模式可以允许系统继续运行并满足服务水平协议,即使当增加需求的资源放置一个极端载荷. 背景和问题 在云应用负载通常上变化的基础上的活动用户的数量或他们正在执行的活动类型的时间.例如,多个用户可能会在工作时间被激活,否则系统可能被要求在每月结束时执行计算昂贵的分析.也有可能是突然和意外的突发活动.如果系统的处理要求超过了可用的资源的能力,其将遭受性能不佳,甚至会失败.该系

FreeBSD基于DNS的负载均衡

可以使用上面提到的各种技术来提升Apache服务器的性能,同时也可以使用增加硬件性能的方法来提高Web 服务器的性能.但是单台服务器的性能总是有限的,尤其是服务器上需要运行大量的CGI程序时,不可能仅靠上面的调整服务器设置的方法来建立一个面向整个Internet,如同Yahoo等站点一样的高负载Web站点. 为了建立一个高负载的Web站点,必须使用多服务器的分布式结构.上面提到的使用代理服务器和Web服务器相结合,或者两个Web服务器相互协作的方式也属于多服务器的结构,但在这些多服务器的结构中,

基于Docker的负载均衡和服务发现

应用的容器化和微服务化带来的问题 在缺省网络模型中,容器每次重启后,IP会发生变动,在一个大的分布式系统保证IP地址不变是比较复杂的事情 IP频繁发生变动,动态应用部署无法预知容器的IP地址,client端如何发现server端的访问端点? 解决方案(根据客户端是否有感知进行分类) 客户端的发现.client 订阅注册中心,有一个固定的注册中心地址,client订阅某个服务的注册中心,注册中心根据服务的运行状态推送某个服务的访问端点列表给client端. 该方案的实现举例有dubbo,DNS的解

DockOne微信分享(七十一):基于Docker的负载均衡和服务发现

本文讲的是DockOne微信分享(七十一):基于Docker的负载均衡和服务发现[编者的话]Docker已经成为时下热门的容器技术,各大公司,中小创业者,都选择采用Docker技术架构其下一代的系统和应用. 随着系统规模扩大,单一Docker容器不能应对压力,需要横向扩展到多个容器,我们需要考虑负载均衡的问题:单一职责的Docker容器之间需要相互通信,而容器在每一次重启之后,它的IP都可能发生变化,那么服务和服务之间如何发现对方? 这一次我们一起来交流基于Docker的负载均衡和服务发现.内容

BalanceNG 3.277发布 基于IP的负载均衡软件

BalanceNG 3.277此版本在Solaris STREAMS模块内部缓冲区("bngfilt")已增至512KB. "strict routing"功能已被加入到"SLB"和"LLB"模块.现在的数据包的重复效果默认情况下当BalanceNG连接到VMware vswitch时错误被修复.手册已做相应的更新. BalanceNG是一款很小的易用的基于IP的http://www.aliyun.com/zixun/aggr

云计算设计模式(五)——计算资源整合模式

云计算设计模式(五)--计算资源整合模式 合并多个任务或操作成一个单一的计算单元.这种模式可以提高计算资源的利用率,并降低与云托管的应用程序进行计算处理相关的成本和管理开销. 背景和问题 云应用程序频繁执行各种操作.在某些解决方案也可能是有意义的最初遵循的关注点分离的设计原则,并把这些操作成托管和独立部署(例如,如在微软的Azure云服务,独立Azure网站不同的角色独立计算单元或单独的虚拟机).然而,尽管这种策略可以帮助简化溶液的逻辑设计,部署大量计算单元作为同一应用可以提高运行时的托管成本,

云计算设计模式(四)——消费者的竞争模式

云计算设计模式(四)--消费者的竞争模式 允许多个并发用户处理在同一个通讯通道接收的消息.这种模式使系统能够同时处理多个邮件,以优化吞吐量,提高可扩展性和可用性,以及平衡工作负载. 背景和问题 在云中运行的应用程序,可以预计,以处理大量的请求.而不是过程的每个请求同步地,一个常用的方法是通过一个消息传送系统到该异步地处理它们的另一服务(消费者服务),以通过他们的应用程序.这种策略有助于确保在应用程序的业务逻辑没有被阻塞,而正在处理的请求. 请求的数量可以随着时间的原因有很多显著变化.突然一阵在用

云计算设计模式(十二)——索引表模式

云计算设计模式(十二)--索引表模式 创建索引过的被查询条件经常被引用的数据存储等领域.这种模式可以通过允许应用程序更快速地定位数据来从数据存储中检索提高查询性能. 背景和问题 许多数据存储通过使用主键组织为实体的集合的数据.应用程序可以使用此键来查找和检索数据.图1显示了一个数据存储区保持顾客的信息的例子.主键是客户ID. 图1  - 按主键组织的客户信息(客户ID) 而主键是该取基于该关键字的值的数据的查询宝贵的,应用程序可能不能够使用主键是否需要基于其它字段来检索数据.在顾客例如,应用程序

云计算设计模式(八)——外部配置存储模式

云计算设计模式(八)--外部配置存储模式 移动配置信息从应用部署包到一个集中位置.这个模式可以提供机会,以便管理和配置数据的控制,以及用于跨应用程序和应用程序实例共享的配置数据. 背景和问题 大多数应用程序运行时环境包括位于应用程序文件夹内的在部署应用程序文件保持配置信息.在某些情况下也能够编辑这些文件来改变该应用程序的行为,它已经被部署之后.然而,在许多情况下,改变配置所需要的应用程序被重新部署,从而导致不可接受的停机时间和额外的管理开销. 本地配置文件还配置限制为单个应用程序,而在某些情况下