微服务当中的网关

195 阅读2分钟

一、为什么需要网关

1.1 服务数量的增加

随着微服务的发展,服务器数量不断增加,多个服务地址的出现,客户端想要调用项目中的接口,就需要使用多个地址,可维护性变差

1.2 微服务架构内通信方式的多样化

  1. 在微服务架构内除了使用HTTP通信外,还有RPC通信或者其它通信方式。如果某些服务使用了不同的通信方式,如果直接暴露接口,那么客户端不得不处理这种通信方式,无法做到统一
  2. 接口地址的多样化,地址写法不固定,管理困难

1.3 无法做到统一的前置处理

在请求到达服务实例前,无法对所有服务做统一的权限认证或者定制化的拦截

二、网关的作用

  1. 统一通信方式,减少客户端接入难度。使用服务网关对外提供的RESTFUL风格的接口,请求到达网关后,由网关组件将请求转发到对应的微服务中
  2. 可以统一接口URL写法,同时也能作为一道屏障,屏蔽一些后端服务的处理细节
  3. 对后端各个服务做统一管控和配置管理,用于保护、增强和控制对于后端服务的访问
  4. 做前置处理,如权限认证、定制化拦截等
  5. 日志收集

三、网关技术选择

3.1 Nginx+Lua

Nginx是一个高性能的HTTP和反向代理服务器,使用lua动态语言可以完成灵活的定制功能。Nginx除了反向代理外,还可以做静态资源服务器。Nginx+Lua脚本组合是网关层技术选型中比较常见的,开发者可以使用Lua脚本语言调用Nginx支持的模块完成开发和配置

3.2 Kong

Kong GateWay是一个轻量级、灵活、快速的云原生API网关,本身基于Nginx+Lua,但比Nginx提供更简单的配置方式,可以使用Konga实现在web页面配置和管理接口

3.3 Netflix Zuul

Zuul是Netflix公司开源的一个API网关组件,结合Spring Cloud提供的服务治理体系,可以完成请求转发、路由规则配置、负载均衡,以及集成Hystrix实现熔断功能

3.4 Spring Cloud Gateway

基于Spring WebFlux的高性能网关产品,旨在为微服务结构提供一种简单、高效的API路由管理方式,并为它们提供跨域的关注点,如安全、监控指标、熔断等

参考资料