内容简介:在云应用中,经常有一些功能特性是跨服务的,也就是很多服务都需要同样的功能,比如SSL保护、认证、授权、协议转换、监控等,这样不仅给应用部署带来麻烦,而且冗余度大大增加。因此,将这些通用的功能卸载到网关,外部调用都先经过网关,然后由网关转发到后边的应用服务,这样也可以使得功能特性和非功能特性的代码分离,增加系统的健壮性和可维护性。解决这个问题的方法之一就是使用网关卸载(Gateway Offloading)模式,其结构图如下所示:上图中,可以看到从外部到API网关的调用是用SSL加密的,而网关到内部服务的调用
1. 缘由
在云应用中,经常有一些功能特性是跨服务的,也就是很多服务都需要同样的功能,比如SSL保护、认证、授权、协议转换、监控等,这样不仅给应用部署带来麻烦,而且冗余度大大增加。因此,将这些通用的功能卸载到网关,外部调用都先经过网关,然后由网关转发到后边的应用服务,这样也可以使得功能特性和非功能特性的代码分离,增加系统的健壮性和可维护性。
2. 解决方案
解决这个问题的方法之一就是使用网关卸载(Gateway Offloading)模式,其结构图如下所示:
上图中,可以看到从外部到API网关的调用是用SSL加密的,而网关到内部服务的调用不需要加密,这样就简化了内部服务的部署,并且可以在网关添加一些后端服务共有的功能,或者非功能特性,比如调用统计。共性的东西部署到网关,因此这些特性的维护就只需要维护好网关就可以了,简化了管理。此外,这样分离的作用还可以促使更好的分工,比如某个团队专门开发和维护网关,另外的业务开发团队专注于后端应用服务的开发,而不需要考虑诸如SSL加密、认证授权等功能,这样可以使得业务开发更单纯更高效。
3. 需要考虑的问题
使用这个模式后,要避免API网关的单点故障问题,因此往往需要部署多个网关实例。同时,需要考虑网关的可扩展性和并发性,不要让网关成为瓶颈。一般来说,其它服务都需要的功能,才会放置到网关,而且需要注意的是,网关不应该承载任何业务功能。
4. 具体示例
使用Nginx来做网关,它接收客户端的HTTPS请求后,将这些请求以HTTP的形式转发到后端的上游服务器。这种情况下,Nginx可以这样配置:
微信扫码,进入【技术人成长】社群逛逛。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。