微服务网关作为微服务后端服务的统一入口(Entry Point),它可以统筹管理后端服务,主要分为数据平面(Data Plane)和控制平面(Control Plane)。

数据平面的主要功能是接入用户的HTTP请求和微服务被拆分后的聚合。使用微服务网关统一对外暴露后端服务的API和契约,路由和过滤功能正是网关的核心能力模块。另外,微服务网关可以实现拦截机制和专注跨横切面(Cross-CuttingConcerns)的功能,包括协议转换、安全认证、熔断限流、灰度发布、日志管理、流量监控等。
控制平面的主要功能是对后端服务做统一的管控和配置管理。
路由功能

路由是微服务网关的核心能力。通过路由功能微服务网关可以将请求转发到目标微服务。在微服务架构中,网关可以结合注册中心的动态服务发现,实现对后端服务的发现,调用方只需要知道网关对外暴露的服务API就可以透明地访问后端微服务。

负载均衡
API网关结合负载均衡技术,利用Eureka或者Consul等服务发现工具,通过轮询、指定权重、IP地址哈希等机制实现下游服务的负载均衡。

协议转换
API网关的一大作用在于构建异构系统,API网关作为单一入口,通过协议转换整合后台基于REST、AMQP、Dubbo等不同风格和实现技术的微服务,面向Web Mobile、开放平台等特定客户端提供统一服务。

安全认证
一般而言,无论对内网还是外网的接口都需要做用户身份认证,而用户认证在一些规模较大的系统中都会采用统一的单点登录(Single Sign On)系统,如果每个微服务都要对接单点登录系统,那么显然比较浪费资源且开发效率低。API网关是统一管理安全性的绝佳场所,可以将认证的部分抽取到网关层,微服务系统无须关注认证的逻辑,只关注自身业务即可。常见的安全性技术(如密钥交换、客户端认证与报文加解密等)都可以在API网关中实现。

黑白名单
微服务网关可以使用系统黑名单,过滤HTTP请求特征,拦截异常客户端的请求,例如DDoS等侵蚀带宽或资源迫使服务中断等行为,可以在网关层面进行拦截过滤。比较常见的拦截策略是根据IP地址增加黑名单。在存在鉴权管理的路由服务中可以通过设置白名单跳过鉴权管理而直接访问后端服务资源。

限流熔断
在某些场景下需要控制客户端的访问次数和访问频率,一些高并发系统有时还会有限流的需求。在网关上可以配置一个阈值,当请求数超过阈值时就直接返回错误而不继续访问后台服务。当出现流量洪峰或者后端服务出现延迟或故障时,网关能够主动进行熔断,保护后端服务,并保持前端用户体验良好。

服务管控
网关可以统计后端服务的请求次数,并且可以实时地更新当前的流量健康状态,可以对URL粒度的服务进行延迟统计,也可以使用Hystrix Dashboard查看后端服务的流量状态及是否有熔断发生。

日志审计
微服务网关可以作为统一的日志记录和收集器,对服务URL粒度的日志请求信息和响应信息进行拦截。

四、对微服务网关的理解
上述通过官方的话语描述了微服务网关,下面谈一下个人对微服务网关的理解。
首先,微服务网关和注册中心的区别:注册中心重点是对内的,微服务网关重点是对外的。对内的意思是,一个整体项目的内部多个微服务之间的相互调用,通过注册中心获取地址,然后进行调用。对外的意思是,整体项目建设完成后,需要对外提供接口,供外部客户端进行访问,但是整体项目是由多个微服务实例构成的,那么接口地址也就有很多,微服务网关的作用就是提供统一的对外接口,然后网关再路由转发到对应的微服务上。
上述只是微服务网关的一种作用。总之,微服务网关的核心就是在微服务之前加一层,把微服务公共的需求,权限认证,等等需要综合管理多个微服务的功能,都加到网关层,其有点类似于单体项目中的filter的作用