【微服务模式】MS大使模式
创建代表消费者服务或应用程序发送网络请求的辅助服务。大使服务可以被认为是与客户端位于同一位置的进程外代理。
此模式可用于以与语言无关的方式卸载常见的客户端连接任务,例如监控、日志记录、路由、安全性(如 TLS)和弹性模式。它通常与遗留应用程序或其他难以修改的应用程序一起使用,以扩展其网络功能。它还可以使专门的团队实现这些功能。
背景和问题
弹性的基于云的应用程序需要诸如断路器、路由、计量和监控等功能,以及进行与网络相关的配置更新的能力。更新遗留应用程序或现有代码库以添加这些功能可能很困难或不可能,因为开发团队不再维护或无法轻松修改代码。
网络调用可能还需要对连接、身份验证和授权进行大量配置。如果这些调用跨多个应用程序使用,使用多种语言和框架构建,则必须为这些实例中的每一个配置调用。此外,网络和安全功能可能需要由组织内的中央团队管理。拥有庞大的代码库,该团队更新他们不熟悉的应用程序代码可能会有风险。
解决方案
将客户端框架和库放入一个外部进程中,该进程充当您的应用程序和外部服务之间的代理。将代理部署在与您的应用程序相同的主机环境中,以允许控制路由、弹性、安全功能,并避免任何与主机相关的访问限制。您还可以使用大使模式来标准化和扩展检测。代理可以监控延迟或资源使用等性能指标,并且这种监控发生在与应用程序相同的主机环境中。
卸载给大使的功能可以独立于应用程序进行管理。您可以在不影响应用程序的旧功能的情况下更新和修改大使。它还允许独立的专业团队实施和维护已转移给大使的安全、网络或身份验证功能。
大使服务可以部署为边车,以伴随消费应用程序或服务的生命周期。或者,如果大使由公共主机上的多个单独进程共享,则可以将其部署为守护程序或 Windows 服务。如果消费服务是容器化的,则应在同一主机上将大使创建为单独的容器,并为通信配置适当的链接。
问题和考虑
代理增加了一些延迟开销。考虑由应用程序直接调用的客户端库是否是更好的方法。
考虑在代理中包含通用特征的可能影响。例如,大使可以处理重试,但这可能不安全,除非所有操作都是幂等的。
考虑一种机制,允许客户端将一些上下文传递给代理,以及返回给客户端。例如,包括 HTTP 请求标头以选择退出重试或指定重试的最大次数。
考虑如何打包和部署代理。
考虑是为所有客户端使用单个共享实例还是为每个客户端使用一个实例。
何时使用此模式
在以下情况下使用此模式:
需要为多种语言或框架构建一组通用的客户端连接功能。
需要将跨领域的客户端连接问题转移给基础设施开发人员或其他更专业的团队。
需要支持遗留应用程序或难以修改的应用程序中的云或集群连接要求。
这种模式可能不适合:
当网络请求延迟至关重要时。代理会引入一些开销,虽然很少,并且在某些情况下这可能会影响应用程序。
当客户端连接功能被单一语言使用时。在这种情况下,更好的选择可能是作为一个包分发给开发团队的客户端库。
当连接功能无法泛化并需要与客户端应用程序进行更深入的集成时。
例子
下图显示了一个应用程序通过大使代理向远程服务发出请求。大使提供路由、断路和日志记录。它调用远程服务,然后将响应返回给客户端应用程序:
相关指导
边车模式
本文:【微服务模式】MS大使模式
【微服务模式】MS大使模式相关推荐
- springcloud 微服务鉴权_springcloud 微服务权限校验JWT模式获取 token 实战(十二)...
springcloud 微服务权限校验JWT模式获取 token 实战(十二) springcloud 微服务权限校验JWT模式获取 token 实战(十二) JWT:json web token 是 ...
- 从壹开始微服务 [ DDD ] 之一 ║ D3模式设计初探 与 我的计划书
缘起 哈喽大家周四好!又是开心的一天,时间过的真快,我们的 <从壹开始 .net core 2.1 + vue 2.5 >前后端分离系列共 34 篇已经完结了,当然以后肯定还会有更新和修改 ...
- Serverless:微服务架构的终极模式(文末赠书)
微服务的生态和实践已经比较成熟,其设计方法.开发框架.CI/CD工具.基础设施管理工具等,都可以帮助企业顺利实施微服务.然而,微服务远没有达到完美,它在架构.开发.基础设施方面仍然面临新的挑战. 微服 ...
- 微服务下分布式事务模式的详细对比
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 作为 Red H ...
- 微服务架构的终极模式?
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 微服务的生态和实 ...
- Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战
本文源码地址 后端:https://gitee.com/youlaitech/youlai-mall/tree/v2.0.1 前端:https://gitee.com/youlaiorg/mall-a ...
- Serverless:微服务架构的终极模式
微服务的生态和实践已经比较成熟,其设计方法.开发框架.CI/CD工具.基础设施管理工具等,都可以帮助企业顺利实施微服务.然而,微服务远没有达到完美,它在架构.开发.基础设施方面仍然面临新的挑战. 微服 ...
- 从单体迁移到微服务的几种模式
- 【微服务架构】一文读懂单片到微服务架构的模式和最佳实践
在本文中,我们将学习如何使用设计模式.原则和最佳实践来设计微服务架构.我们将使用正确的架构设计模式和技术. 在本文结束时,您将了解如何在微服务分布式架构上设计系统以实现高可用性.高可扩展性.低延迟和对 ...
最新文章
- 四、HTTP响应报文格式
- 利用OpenCV的threshold函数实现双阈值法二值化操作的源码
- Win32 调用netapi32实现用户枚举
- ad软件 pcb如何走线过孔_【经验】关于高速PCB设计的一些经典问答
- GDCM:gdcm::ASN1的测试程序
- Oracle lower() Upper()函数
- linux 权限测试,linux下检测root权限的shell脚本
- 记录一次iOS11大标题不滚动的问题
- avast注册号|好用的avast注册号|没过期avast注册号
- vmware 您无权输入许可证密钥,请请使用系统管理员账户重试
- 实现音视频编解码工具 MediaCodec 创建解码器
- iOS 一键加入QQ群
- 【git commit --amend 修改提交记录】
- oracle修改dbf文件,如何修改Oracle的dbf文件位置
- JAVASE第5天笔记
- 2013年MBA、MPA、MPAcc入学考试英语辅导教材
- firefox os : firefox os vs android
- 58同城2014校园招聘软件测试笔试题
- 【论文笔记】:CornerNet: Detecting Objects as Paired Keypoints
- 微信插件第一讲之自动回复机器人(护妻宝)
热门文章
- 标梵为你推荐可以吸引消费者的品牌营销策划
- 创意网页模板免费下载,让你的网站与众不同!
- c语言json中的枚举,NSJSONSerialization类中的枚举值说明
- Java常用的四大框架有什么
- OSSEC搭建部署(ossec-server(CentOS7.X)和ossec-agent(CentOS7.X))
- Parallel Scavenge和Parallel Old垃圾回收器组合
- 通过javap命令分析jvm指令
- Win10系统如何删除磁盘上的恢复分区
- JSqlParser-SQL解析处理
- 我要第一!!!!!!!