什么是网关,作用是什么?
首先得知道:如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用.
这样的架构,会存在着诸多的问题:
1.客户端多次请求不同的微服务,增加客户端代码或配置编写的复杂性
2.认证复杂,每个服务都需要独立认证。
3.存在跨域请求,在一定场景下处理相对复杂。
因此网关就是为了解决这些问题而存在的组件
API网关:
就是指系统的统一入口,它封装了应用程序的内部结构,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在这里实现,如认证、鉴权、监控、路由转发等等。
常用的网关有下面这些:
1.Ngnix+lua
使用nginx的反向代理和负载均衡可实现对api服务器的负载均衡及高可用 lua是一种脚本语言,可以来编写一些简单的逻辑, nginx支持lua脚本
2.Kong
基于Nginx+Lua开发,性能高,稳定,有多个可用的插件(限流、鉴权等等)可以开箱即用。
问题: 只支持Http协议;二次开发,自由扩展困难;提供管理API,缺乏更易用的管控、配置方式。
3.Zuul
Netflflix开源的网关,功能丰富,使用JAVA开发,易于二次开发 。
问题:缺乏管控,无法动态配 置;依赖组件较多;处理Http请求依赖的是Web容器,性能不如Nginx。
4.Spring Cloud Gateway
Spring公司为了替换Zuul而开发的网关服务,将在下面具体介绍。
注意:SpringCloud alibaba技术栈中并没有提供自己的网关,我们可以采用Spring Cloud Gateway 来做网关!