云架构(二) 大使模式

2024-03-27 12:52
文章标签 模式 架构 大使

本文主要是介绍云架构(二) 大使模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Ambassador pattern

(https://learn.microsoft.com/en-us/azure/architecture/patterns/ambassador)

简单描述

  1. 创建一个助手服务,这个服务代表消费服务或者应用程序发送网络请求。大使服务可以看做是与客户机同一个位置的进程外代理。
  2. 这种设计模式可以用于承担常见的连接任务,例如监控,日志,路由,安全。并且可以以语言无关的方式进行弹性扩展。它经常用于历史遗留应用或者那些很难去修改的应用,用于扩展他们的网络功能,它同样可以由专门的团队去实现特性。

背景和问题 

  1. 弹性云应用需要一些特性,例如熔断机制,路由,统计和监控,并且具有更新网络相关配置的能力,可能很难或者不可能去更新历史遗留应用或者在已有代码库上增加特性,因为这些代码很久没有维护或者开发团队很难去修改。
  2. 网络调用需要对连接、身份验证和授权进行大量的配置,如果这些调用使用在跨多个应用中,用多种语言和框架构建,这些调用必须在每个实例中都要配置。此外,网络和安全功能需要由组织内的中心团队去管理。对于大型代码库,团队成员去修改他们不熟悉的代码可能有风险。

 

解决办法 

  1. 在另外一个进程中放入框架和库,在你的应用和其他服务之间作为一个代理。在应用所在的环境中部署一个代理,用以允许控制路由,弹性和安全特性,并且避免任何与主机有关的访问限制。你同样可以使用大使模式去标准化和扩展工具。代理可以监控性能指标,例如延迟、资源消耗,并且这种监控发生在与应用相同的环境中。
  2. 特性从大使卸载后也可以被应用单独管理,您可以在不影响应用程序遗留功能的情况下更新和修改大使。同样也可以考虑专门的团队去实现和维护已经被移动到大使中的安全、网络或者身份验证特性。
  3. 大使服务可以作为辅助工具部署,伴随消费应用程序或服务的生命周期。或者大使被一个公共主机的多个不同进程使用,它同样可以部署为一个守护进程或者windows服务。如果消费服务是容器化部署,大使应该在同一个主机上作为一个单独的容器创建,使用适当的链接配置去通信。

 

问题和考虑 

  1. 代理增加了一些延迟开销。考虑应用程序直接调用客户端库是一个更好的方法。
  2. 考虑到代理包含的普遍特性可能产生的影响。例如,大使可以处理重试,但不是很安全,除非所有操作都是幂等的。
  3. 考虑一种机制,允许客户端将一些上下文传递给代理,以及返回给客户端。例如,包括HTTP请求头以选择不重试或指定重试的最大次数。
  4. 考虑如何打包和部署代理。
  5. 考虑是否使用单例或者每个客户端使用一个实例。

 

什么时候使用 

  1. 需要为多语言或者框架构建一组通用的客户端连接特性。
  2. 需要将横切客户端连接问题卸载给基础设施开发者或者其他专业团队。
  3. 需要在历史遗留应用或者很难修改的应用中支持云或者集群连接需求。

 

不适合的场景 

  1. 当网络延迟非常严重时,代理会有开销 ,虽然很小,在有些场景会影响到应用程序。
  2. 当客户端连接特性是由单一语言使用的。这种情况下,更好的办法是作为客户端库作为包分发给开发团队。
  3. 当连接特性不能通用化,并且需要和客户端应用程序深度集成。

 

示例 

下面的图展示了应用程序经过了大使代理进行了一段远程请求。大使提供了路由,熔断和日志。它调用了远程服务并且给客户端机器返回了应答。

欢迎大家留言沟通

这篇关于云架构(二) 大使模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/852164

相关文章

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

MySQL 缓存机制与架构解析(最新推荐)

《MySQL缓存机制与架构解析(最新推荐)》本文详细介绍了MySQL的缓存机制和整体架构,包括一级缓存(InnoDBBufferPool)和二级缓存(QueryCache),文章还探讨了SQL... 目录一、mysql缓存机制概述二、MySQL整体架构三、SQL查询执行全流程四、MySQL 8.0为何移除查

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。