云设计模式之: 代表模式

栏目: 后端 · 发布时间: 6年前

内容简介:基于云的弹性应用一般需要具有断路器、路由、计量和监控功能,但是对一些遗留应用来说,要更改它们使得具备这些特性却很困难,因为很多应用都没有人继续维护了,或者你没有权限修改源代码。如果非要加入这些特性的话怎么办呢?答案是,你可以使用代表模式(Ambassador pattern)。代表模式可以解决这个问题,它的结构图大致如下:上面图中的Application是主应用程序,也可以看成是遗留应用。Ambassador就是添加的代理,一般部署在独立的进程中,但是和遗留应用部署在同一台机器(Host)上。代理实现的功能

1. 缘由

基于云的弹性应用一般需要具有断路器、路由、计量和监控功能,但是对一些遗留应用来说,要更改它们使得具备这些特性却很困难,因为很多应用都没有人继续维护了,或者你没有权限修改源代码。如果非要加入这些特性的话怎么办呢?答案是,你可以使用代表模式(Ambassador pattern)。

2. 解决方案

代表模式可以解决这个问题,它的结构图大致如下:

云 <a href='https://www.codercto.com/topics/17995.html'>设计模式</a> 之: 代表模式

上面图中的Application是主应用程序,也可以看成是遗留应用。Ambassador就是添加的代理,一般部署在独立的进程中,但是和遗留应用部署在同一台机器(Host)上。代理实现的功能主要有:请求重试、断路保护、计量监控、安全保护。如果有多个Application,也可以共享使用一个代理,这时候代理往往以Windows服务或 Linux 后台进程的形式部署。添加代理后,可以起到分担应用程序负载的一个作用,而且还可以将工作量分派出去,让其它团队来维护代理的更新和部署。

3. 需要考虑的问题

添加代理后,也会有一些问题存在。首先是性能问题,如果是应用性能极为敏感的应用,可能就不适合添加代理。还有就是,某些逻辑功能是否要加进代理需要认真考虑,比如重试逻辑,在请求非幂等的情况下可能会破坏原有程序的逻辑。此外,还有考虑代理的部署方式,以及多个应用是否共享一个代理还是每个应用一个代理。

4. 具体示例

上面说的都是理论,我们要看一下,添加代理后,具体的请求流程是怎样的,如下图所示:

云设计模式之: 代表模式

上面的流程中,应用发起远程请求后,首先进入到代理进程,代理进程具有路由、断路、日志等功能,并将请求转发到远程服务,最后再将结果数据返回给应用程序。

微信扫码,进入【技术人成长】社群逛逛。

云设计模式之: 代表模式

以上所述就是小编给大家介绍的《云设计模式之: 代表模式》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

PHP 6与MySQL 5基础教程

PHP 6与MySQL 5基础教程

(美)厄尔曼 / 陈宗斌 等 / 人民邮电出版社 / 2008-11-1 / 65.00元

本书是一部经典的入门级著作,采用基于任务的方法来讲授PHP和MySQL,使用大量图片指导读者深入学习语言,并向读者展示了如何构造动态Web站点。书中用简洁、直观的步骤和讲解提供了学习任务和概念的最快方式。通过学习本书,读者可以快速、高效地掌握PHP和MySQL,成为一位构建Web站点的高手。 本书适合初中级Web应用开发和设计人员阅读。 本书是讲述PHP和MySQL技术的畅销书,以深入......一起来看看 《PHP 6与MySQL 5基础教程》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码