前言

传统大型应用在设计时大多遵循 MVC 的架构,但由于这种模式相对力度较粗,同时在进行 scale-out(横向扩展)时,往往由于不同层次的应用短板形成瓶颈。在云计算的 IaaS、PaaS 等服务出现后,用户可以通过云中的服务能力,来替换 MVC 中的公共组件。同时由于云计算的原生应用(基础组件和设计模式遵循 CDP— 云设计模式的应用)天生具备更好的扩展性、可用性与弹性能力,因此有必要在设计应用系统时借鉴,这里列出的模式就是微软 Azure 平台给应用架构师和开发人员的云中应用建议,由品高云小编翻译制作。

本 CDP 系列文章分为上下两个部分,共 24 个经典的云设计模式,本文是下半部分。

第二部分

3.13 竞争的消费者模式

使多个消费者同时处理同一通讯渠道上收到的信息。这一模式可以使系统能同时处理多重信息以优化吞吐量,改善可扩展性与可用性,以及平衡工作负载。

更多信息详见 http://aka.ms/Competing-Consumers-Pattern

3.14 守门员模式

用一个专用的主机实例来保护应用与服务,这一被用主机实例充当客户端与应用或服务间的代理,验证与清理请求,并在客户端与应用或服务间传输请求和数据。这一模式可以增加一个保护层并限制系统的攻击面。

更多信息,详见 http://aka.ms/Gatekeeper-Pattern

3.15 优先级队列模式

将发送给服务的请求进行排序,从而使优先级别高的请求能比级别低的请求更快地被接收和处理。这一模式对那些为个人客户提供不同等级保证的应用非常实用。

更多信息详见 http://aka.ms/Priority-Queue-Pattern

3.16 静态内容托管模式

将静态内容部署到一个基于云的储存服务,使这些内容能被直接传送给客户。这一模式可以减少可能的昂贵的计算实例的需要。

更多信息详见 http://aka.ms/Static-Content-Hosting-Pattern

3.17 计算资源整合模式

将多个任务和操作整合成一个计算单元。这一模式可以提高计算资源的利用率,减少与云托管应用的运算处理相关的成本和管理费用。

更多信息详见 http://aka.ms/Compute-Resource-Consolidation-Pattern

3.18 健康端点监控模式

在外部工具可以通过定期曝露的端点来访问的应用程序中执行功能检查。这一模式有助于核实应用和服务是否在正确运行。

更多信息详见 http://aka.ms/Health-Endpoint-Monitoring-Pattern

3.19 基于列队的负载均衡模式

使用一个队列来充当任务与任务调用的服务之间的缓冲,从而使可能导致服务失败或任务超时的间歇性负载变得平缓均衡。这一模式可以最小化需求高峰对任务和服务可用性以及反应能力的影响。

更多信息详见 http://aka.ms/Queue-Based-Load-Leveling-Pattern

3.20 节流模式

控制应用实例、个人租户或整个服务的资源消耗。这一模式可以让系统在需求增加造成资源负载达到极值时仍能继续运作且满足服务水平协议 (SLA)。

更多信息详见 http://aka.ms/Throttling-Pattern

3.21 命令查询职责分离模式

将读取数据的操作与通过使用不同接口更新数据的操作分离开来。这一模式可以最大化性能,可拓展性以及安全性,可以通过更好的灵活性来支持系统随着时间更新演变,防止更新命令造成域级别的合并冲突。

更多信息详见 http://aka.ms/CQRS-Pattern

3.22 索引表模式

在数据存储库中为那些经常被查询准则所引用的领域创建索引。这一模式可以使应用能更快地从数据存储库中定位并检索到所需的数据,从而改善查询性能。

更多信息详见 http://aka.ms/Index-Table-Pattern

3.23 重试模式

通过重试曾经因瞬时故障而失败的操作以使应用程序在其尝试连接到服务或网络资源时能处理预期的、暂时的故障。这一模式可以改善应用的稳定性。

更多信息详见 http://aka.ms/Retry-Pattern

3.24 仆人键模式

为客户提供令牌或密匙,使客户能有限但直接地获取某一特定资源或服务,从而将数据传输操作从应用程序代码中卸载。这一模式对于那些使用云端托管储存系统或队列的应用程序非常有用,同时实现成本最小化以及可拓展性和性能的最大化。

更多信息详见 http://aka.ms/Valet-Key-Pattern

相关文章: 微软 Azure 2015 云计算设计模式(上)