前言
沉寂了一个周末,去思考自己的职业规划,想了很多。总起来说,还是努力,坚持自己的那份本心。希望大家也能够坚持本心,砥砺前行。
近来,在想着重构一个新的产品。准备采用微服务的技术解决方案,来搭建基础设施框架。网关,是一个必不可少的组件。那么,网关到底是什么?
其又有什么特点或者特性,成为微服务必不可少的组件呢?今天,我们就来探讨下这个问题。希望通过本文,大家能够明白,为何用。
演变过程
传统的单体技术架构,所有的内容,被打包进一个包内。为了保证,系统的稳定、安全,需要开发一些过滤器、拦截器,来实现对客户端请求的过滤与拦截,以及完成最终请求的转发。如下图所示
微服务技术解决方案下,同样需要为每个服务开发过滤器、拦截器来进行请求管理。但由于服务数量众多,同时,客户端形式多样化,如果在每个服务身上开发,将会造成很大的代码冗余与开发负担。因此,期待,将相同的一些功能,抽取到一个服务内实现,这便成为了一个组件,就是现在的网关。
网关存在的原因:
- 解决微服务技术架构下,请求管理功能
- 解决微服务技术架构下,多客户端的适配,采用单一入口,完成协议适配
网关的基本功能
微服务技术解决方案下的,网关,至少需要具备图示基本功能。
- 网关作为单点入口,完成统一的请求管理
- 免去客户端直接对接众多微服务的复杂性,采用单点入口,实现路由转发,从而实现服务调用
- 服务对于整个系统来讲,是不稳定的,那么网关,需要进行限流熔断,保持系统的稳定与分区容错性
- 对于服务调用的链路,网关有职责进行记录,日志监控,保证整个系统,在监控下工作
- 系统可能不仅仅是由自有客户端调用,很多时候,系统开放能力API给外部,因此网关需要安全认证,来保证安全
网关的高级应用
蓝绿部署
红绿部署,将新旧版本并存发布,为了解决发布时间问题。将流量导向新版本,如果生产没有问题,则去除老版本,如果有问题,快速切换到老版本。
采用网关,可以简易实现蓝绿部署。
开发者测试分支
开发者对于生产,有些时候需要进行一定的测试。因此采用网关,可以实现,流量导向,路由转发到测试分支内,完成测试。
埋点测试
埋点测试,用来进行特殊业务需求或者技术需求下的测试。提前埋好点,可以按照埋点,检查整个调用链路情况。采用网关,快速实现流量导向。路由转发至需要埋点的服务集群。
压力测试
使用集群中一个或一组服务作为压力测试服务。那么必然还是使用到网关的流量导向、路由转发功能
调试路由
生产上,不方便测试的,可以采用网关,进行导向测试路由。
金丝雀测试
金丝雀测试,用于测试流量的可行性。类似于蓝绿部署。
粘性金丝雀测试
有些场景下,是需要客户端进入同样的服务内。粘性金丝雀,就是将客户流量粘住,保证流量导向单一。
失败注入测试
人为的测试系统的安全与稳定,需要进行失败注入。那么采用网关,即可实现流量的导向。
降级测试
服务具有不稳定性,因此微服务中,常见系统测试涵盖了降级测试这个方面。网关很的可以承担起该职责。
防爬防攻击
网关作为请求的入口,自然可以承担起流量的管控。
健康检查与坏点检测
网关同样会作为服务注册到服务发现注册中心,因此,可以作为健康检查与坏点检测的工具,采用自动断开等手段,保证系统的稳定与及时通知。
跨区高可用
网关部署集群、跨区,可以实现,地域流量导向。