写点什么

一篇让你彻底理解网关是什么的文章

发布于: 2021 年 01 月 16 日

前言

沉寂了一个周末,去思考自己的职业规划,想了很多。总起来说,还是努力,坚持自己的那份本心。希望大家也能够坚持本心,砥砺前行。

近来,在想着重构一个新的产品。准备采用微服务的技术解决方案,来搭建基础设施框架。网关,是一个必不可少的组件。那么,网关到底是什么?

其又有什么特点或者特性,成为微服务必不可少的组件呢?今天,我们就来探讨下这个问题。希望通过本文,大家能够明白,为何用。

演变过程

传统的单体技术架构,所有的内容,被打包进一个包内。为了保证,系统的稳定、安全,需要开发一些过滤器、拦截器,来实现对客户端请求的过滤与拦截,以及完成最终请求的转发。如下图所示

 

微服务技术解决方案下,同样需要为每个服务开发过滤器、拦截器来进行请求管理。但由于服务数量众多,同时,客户端形式多样化,如果在每个服务身上开发,将会造成很大的代码冗余与开发负担。因此,期待,将相同的一些功能,抽取到一个服务内实现,这便成为了一个组件,就是现在的网关。

网关存在的原因:

  • 解决微服务技术架构下,请求管理功能

  • 解决微服务技术架构下,多客户端的适配,采用单一入口,完成协议适配

网关的基本功能

 

微服务技术解决方案下的,网关,至少需要具备图示基本功能。

  1. 网关作为单点入口,完成统一的请求管理

  2. 免去客户端直接对接众多微服务的复杂性,采用单点入口,实现路由转发,从而实现服务调用

  3. 服务对于整个系统来讲,是不稳定的,那么网关,需要进行限流熔断,保持系统的稳定与分区容错性

  4. 对于服务调用的链路,网关有职责进行记录,日志监控,保证整个系统,在监控下工作

  5. 系统可能不仅仅是由自有客户端调用,很多时候,系统开放能力 API 给外部,因此网关需要安全认证,来保证安全

网关的高级应用

蓝绿部署

 

红绿部署,将新旧版本并存发布,为了解决发布时间问题。将流量导向新版本,如果生产没有问题,则去除老版本,如果有问题,快速切换到老版本。

采用网关,可以简易实现蓝绿部署。

开发者测试分支

 

开发者对于生产,有些时候需要进行一定的测试。因此采用网关,可以实现,流量导向,路由转发到测试分支内,完成测试。

埋点测试

 

埋点测试,用来进行特殊业务需求或者技术需求下的测试。提前埋好点,可以按照埋点,检查整个调用链路情况。采用网关,快速实现流量导向。路由转发至需要埋点的服务集群。

压力测试

 

使用集群中一个或一组服务作为压力测试服务。那么必然还是使用到网关的流量导向、路由转发功能

调试路由

 

生产上,不方便测试的,可以采用网关,进行导向测试路由。

金丝雀测试

 

金丝雀测试,用于测试流量的可行性。类似于蓝绿部署。

粘性金丝雀测试

 

有些场景下,是需要客户端进入同样的服务内。粘性金丝雀,就是将客户流量粘住,保证流量导向单一。

失败注入测试

 

人为的测试系统的安全与稳定,需要进行失败注入。那么采用网关,即可实现流量的导向。

降级测试

 

服务具有不稳定性,因此微服务中,常见系统测试涵盖了降级测试这个方面。网关很好的可以承担起该职责。

防爬防攻击

 

网关作为请求的入口,自然可以承担起流量的管控。

健康检查与坏点检测

 

网关同样会作为服务注册到服务发现注册中心,因此,可以作为健康检查与坏点检测的工具,采用自动断开等手段,保证系统的稳定与及时通知。

跨区高可用

网关部署集群、跨区,可以实现,地域流量导向。

 

推荐阅读

为什么阿里巴巴的程序员成长速度这么快

纳尼?SpringCloud要被淘汰了?IT行业下一个趋势是什么?

《飞马计划》到底是什么? 可以让数万程序员为之着迷

一年半开发经验拿多少钱合适?

看完三件事

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。

关注公众号 『 Java 斗帝 』,不定期分享原创知识。

同时可以期待后续文章 ing🚀


用户头像

还未添加个人签名 2020.09.07 加入

还未添加个人简介

评论

发布
暂无评论
一篇让你彻底理解网关是什么的文章