1.TCP/IP协议下的网关
TCP/IP协议下的网关其实和我们平时配置IP地址时配置默认网关的功能是差不多
TCP/IP协议下的网关的作用:TCP/IP协议下的网关通常是指网络层的网关,用于连接不同网络,将数据报一个网络传输到另一个网络,其主要任务是实现对网络数据量的转发和路由,根据不同的网络地址和协类型进行包的转发和管理,还可以提供网络地址转换、流量控制、数据过滤等功能。
2.API网关【应用程序接口网关】
API网关通常是针对应用层协议实现的,主要用于管理和控制API服务请求。API网关就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在API网关这里实现,例如:认证,鉴权、监控、路由转发、API接口聚合、协议转换、身份验证、访问控制、限流、监控、日志等
如下图所示:客户端所有的请求,都通过API网关,由API网关作为中介,将各个请求发送到各个请求对应的服务上
API网关的四个核心功能:
1.安全防护
2.统一接入
3.协议适配
4.流量监控和容错
其他功能及详解
外部多端统一:不同的终端(web、Android、IOS、IOT)对应的网络协议可能都不一样,为避免同一个功能针对多个终端去写多份代码,引入API网关就可针对不同的终端做好协议的转换和适配,满足不同终端对不同协议的要求
路由功能:路由是微服务网关的核心能力。通过路由功能微服务网关可以将请求转发到目标微服务。在微服务架构中,网关可以结合注册中心的动态服务发现,实现对后端服务的发现,调用方只需要知道网关对外暴露的服务API就可以透明地访问后端微服务。
负载均衡:API网关结合负载均衡技术,利用Eureka或者Consul等服务发现工具,通过轮询、指定权重、IP地址哈希等机制实现下游服务的负载均衡。
统一鉴权:一般而言,无论对内网还是外网的接口都需要做用户身份认证,而用户认证在一些规模较大的系统中都会采用统一的单点登录(Single Sign On)系统,如果每个微服务都要对接单点登录系统,那么显然比较浪费资源且开发效率低。API网关是统一管理安全性的绝佳场所,可以将认证的部分抽取到网关层,微服务系统无须关注认证的逻辑,只关注自身业务即可。
协议转换:API网关的一大作用在于构建异构系统,API网关作为单一入口,通过协议转换整合后台基于REST、AMQP、Dubbo等不同风格和实现技术的微服务,面向Web Mobile、开放平台等特定客户端提供统一服务。
指标监控:网关可以统计后端服务的请求次数,并且可以实时地更新当前的流量健康状态,可以对URL粒度的服务进行延迟统计,也可以使用Hystrix Dashboard查看后端服务的流量状态及是否有熔断发生。
限流熔断:在某些场景下需要控制客户端的访问次数和访问频率,一些高并发系统有时还会有限流的需求。在网关上可以配置一个阈值,当请求数超过阈值时就直接返回错误而不继续访问后台服务。当出现流量洪峰或者后端服务出现延迟或故障时,网关能够主动进行熔断,保护后端服务,并保持前端用户体验良好。
黑白名单:微服务网关可以使用系统黑名单,过滤HTTP请求特征,拦截异常客户端的请求,例如DDoS攻击等侵蚀带宽或资源迫使服务中断等行为,可以在网关层面进行拦截过滤。比较常见的拦截策略是根据IP地址增加黑名单。在存在鉴权管理的路由服务中可以通过设置白名单跳过鉴权管理而直接访问后端服务资源。
灰度发布:微服务网关可以根据HTTP请求中的特殊标记和后端服务列表元数据标识进行流量控制,实现在用户无感知的情况下完成灰度发布。
流量染色:和灰度发布的原理相似,网关可以根据HTTP请求的Host、Head、Agent等标识对请求进行染色,有了网关的流量染色功能,我们可以对服务后续的调用链路进行跟踪,对服务延迟及服务运行状况进行进一步的链路分析。
文档中心:网关结合Swagger,可以将后端的微服务暴露给网关,网关作为统一的入口给接口的使用方提供查看后端服务的API规范,不需要知道每一个后端微服务的Swagger地址,这样网关起到了对后端API聚合的效果。
日志审计:微服务网关可以作为统一的日志记录和收集器,对服务URL粒度的日志请求信息和响应信息进行拦截。
API网关的作用:
1.关注稳定与安全
全局性流控
日志统计
防止SQL注入
网址web攻击
屏蔽工具扫描
黑白IP名单
证书/加密解密处理
2.提供更好的服务
服务级别流控
服务降级与熔断
路由与负载均衡、灰度策略
服务过滤、聚合与发现
权限验证与参数校验
多级缓存策略
3.API网关主要分类
API网关主要分为流量网关和业务网关,一般业务网关一般部署在流量网关之后、业务系统之前,比流量网关更靠近业务系统
流量网关
流量网关:主要聚焦于流量的中心化控制和管理,负责流量的聚合、治理、转发、控制和安全等方面的工作。它可以提供简单而灵活的配置界面,助力开发者和系统管理员简单地配置、管理和控制API,以满足对流量的高可用、高容错、低延迟、可靠性等需求
流量网关:提供提供全局性的、与后端业务无关的策略配置,如nginx
业务网关
业务网关:它更关注于业务逻辑的处理和服务的暴露,承担更多的业务逻辑处理工作,比如鉴权、路由、转换、协议适配、监控等方面,以支持API的细粒度控制和服务编排,从而实现API的更高效管理。
业务网关:提供独立业务域级的、与后端业务紧耦合的策略配置
4.nginx网关
Nginx在其中扮演的角色是
- 反向代理
- 负载均衡
- 流量的总入口
SpringGateway在其中扮演的角色是
- 统一鉴权
- 负载均衡
- 服务发现