【微服务模式】MS大使模式

简介: 【微服务模式】MS大使模式

创建代表消费者服务或应用程序发送网络请求的辅助服务。大使服务可以被认为是与客户端位于同一位置的进程外代理。

此模式可用于以与语言无关的方式卸载常见的客户端连接任务,例如监控、日志记录、路由、安全性(如 TLS)和弹性模式。它通常与遗留应用程序或其他难以修改的应用程序一起使用,以扩展其网络功能。它还可以使专门的团队实现这些功能。

背景和问题

弹性的基于云的应用程序需要诸如断路器、路由、计量和监控等功能,以及进行与网络相关的配置更新的能力。更新遗留应用程序或现有代码库以添加这些功能可能很困难或不可能,因为开发团队不再维护或无法轻松修改代码。

网络调用可能还需要对连接、身份验证和授权进行大量配置。如果这些调用跨多个应用程序使用,使用多种语言和框架构建,则必须为这些实例中的每一个配置调用。此外,网络和安全功能可能需要由组织内的中央团队管理。拥有庞大的代码库,该团队更新他们不熟悉的应用程序代码可能会有风险。

解决方案

将客户端框架和库放入一个外部进程中,该进程充当您的应用程序和外部服务之间的代理。将代理部署在与您的应用程序相同的主机环境中,以允许控制路由、弹性、安全功能,并避免任何与主机相关的访问限制。您还可以使用大使模式来标准化和扩展检测。代理可以监控延迟或资源使用等性能指标,并且这种监控发生在与应用程序相同的主机环境中。

卸载给大使的功能可以独立于应用程序进行管理。您可以在不影响应用程序的旧功能的情况下更新和修改大使。它还允许独立的专业团队实施和维护已转移给大使的安全、网络或身份验证功能。

大使服务可以部署为边车,以伴随消费应用程序或服务的生命周期。或者,如果大使由公共主机上的多个单独进程共享,则可以将其部署为守护程序或 Windows 服务。如果消费服务是容器化的,则应在同一主机上将大使创建为单独的容器,并为通信配置适当的链接。

问题和考虑

 

  • 代理增加了一些延迟开销。考虑由应用程序直接调用的客户端库是否是更好的方法。
  • 考虑在代理中包含通用特征的可能影响。例如,大使可以处理重试,但这可能不安全,除非所有操作都是幂等的。
  • 考虑一种机制,允许客户端将一些上下文传递给代理,以及返回给客户端。例如,包括 HTTP 请求标头以选择退出重试或指定重试的最大次数。
  • 考虑如何打包和部署代理。
  • 考虑是为所有客户端使用单个共享实例还是为每个客户端使用一个实例。

何时使用此模式

在以下情况下使用此模式:

  • 需要为多种语言或框架构建一组通用的客户端连接功能。
  • 需要将跨领域的客户端连接问题转移给基础设施开发人员或其他更专业的团队。
  • 需要支持遗留应用程序或难以修改的应用程序中的云或集群连接要求。

这种模式可能不适合:

  • 当网络请求延迟至关重要时。代理会引入一些开销,虽然很少,并且在某些情况下这可能会影响应用程序。
  • 当客户端连接功能被单一语言使用时。在这种情况下,更好的选择可能是作为一个包分发给开发团队的客户端库。
  • 当连接功能无法泛化并需要与客户端应用程序进行更深入的集成时。

例子

下图显示了一个应用程序通过大使代理向远程服务发出请求。大使提供路由、断路和日志记录。它调用远程服务,然后将响应返回给客户端应用程序:

相关指导

  • 边车模式
相关文章
|
2月前
|
缓存 监控 API
探索微服务架构中的API网关模式
【10月更文挑战第5天】随着微服务架构的兴起,企业纷纷采用这一模式构建复杂应用。在这种架构下,应用被拆分成若干小型、独立的服务,每个服务围绕特定业务功能构建并通过HTTP协议协作。随着服务数量增加,统一管理这些服务间的交互变得至关重要。API网关作为微服务架构的关键组件,承担起路由请求、聚合数据、处理认证与授权等功能。本文通过一个在线零售平台的具体案例,探讨API网关的优势及其实现细节,展示其在简化客户端集成、提升安全性和性能方面的关键作用。
77 2
|
2月前
|
存储 缓存 监控
探索微服务架构中的API网关模式
【10月更文挑战第1天】探索微服务架构中的API网关模式
97 2
|
4月前
|
存储 消息中间件 Apache
比较微服务中的分布式事务模式
比较微服务中的分布式事务模式
76 2
|
1月前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
5月前
|
负载均衡 应用服务中间件 API
探索微服务架构中的API网关模式
在现代软件开发中,微服务架构已经成为一种流行的设计模式。它通过将复杂的应用程序分解为一组小的、松耦合的服务来简化开发和部署。然而,随着服务数量的增加,如何有效地管理这些服务之间的通信成为了一个挑战。API网关作为微服务架构的关键组件,提供了一个集中式的入口,用于处理客户端请求并将其路由到相应的服务。本文将深入探讨API网关的作用、实现方式以及如何在微服务架构中有效地利用它来优化系统性能和安全性。
57 0
|
1月前
|
缓存 监控 API
探索微服务架构中的API网关模式
随着微服务架构的兴起,API网关成为管理和服务间交互的关键组件。本文通过在线零售公司的案例,探讨了API网关在路由管理、认证授权、限流缓存、日志监控和协议转换等方面的优势,并详细介绍了使用Kong实现API网关的具体步骤。
49 3
|
1月前
|
存储 缓存 监控
探索微服务架构中的API网关模式
探索微服务架构中的API网关模式
51 2
|
3月前
|
JSON 监控 安全
探索微服务架构中的API网关模式
【9月更文挑战第22天】在微服务架构的海洋中,API网关如同一位智慧的守门人,不仅管理着服务的进出,还维护着整个系统的秩序。本文将带你一探究竟,看看这位守门人是如何工作的,以及它为何成为现代云原生应用不可或缺的一部分。从流量控制到安全防护,再到服务聚合,我们将一起解锁API网关的秘密。
|
4月前
|
分布式计算 负载均衡 API
微服务架构设计原则与模式
【8月更文第29天】随着云计算和分布式计算的发展,微服务架构已成为构建大型复杂应用的一种流行方式。这种架构模式将单个应用程序分解成一组小型、独立的服务,每个服务运行在其自己的进程中,并通过轻量级机制(通常是HTTP资源API)进行通信。本文将探讨微服务架构的基本设计原则、常用模式以及如何有效地划分服务边界。
431 3
|
4月前
|
负载均衡 前端开发 API
我希望在系统设计面试之前知道的 12 种微服务模式
我希望在系统设计面试之前知道的 12 种微服务模式
下一篇
DataWorks