天天看点

对API网关的思考

        最近我们公司的微服务即将上线一个重要项目,也做了dubbo服务化,可扩展或者说服务节点扩容是没什么问题,而且服务都是部署到云平台上的,但客户端到服务端中间没有做网关层,始终不放心,所以上周五的时候研究了下Spring Cloud Gateway微服务网关

看完后了解的大概的意思,网关是用来做什么呢?主要是用来做一些统一的鉴权、日志,负载均衡,缓存,路由,过滤等功能

那Spring Cloud Gateway官网介绍重点就是:

1、断点路由:我们在做单元测试的时候是不是也有断言呢,其实就是做一个判断,判断当前的请求是否符合要求

2、过滤工厂:多种过滤工厂,这里就不一一列举,每个过滤工厂可以 叠加使用,类似sql中的and可以同时过滤

        我们只要在配置文件中配置好路由规则,客户端请求的时候会根据断点判断这个请求是否符合要求,如果符合要求,经过过滤工序,才真正转发到配置好的url链接上

网关也可以集群,这样更加高可用

        另外Spring Cloud Gateway是java体系的,所以可以spring集成非常容易,这个很容易让大家接受,但路由配置是写在代码的配置文件中的。

        如果需要动态配置,每次修改路由不需要改代码,发布一堆麻烦的步骤,那么需要结合配置中心来存储配置,那么我们的配置只要路由配置在配置中心就可以了,现在有很多开源的配置中心比如nacos(阿里开源),apollo(携程开源),nacos和appllo客户端会通过定时长轮询的方式拉取配置数据并将数据同步到客户端服务的内存中,这样的话,路由配置就可以准实时的修改并在服务中生效,无需发布代码,重启的过程

当然,网关还有kong,国产的APISIX,号称速度最快的网关krakend,用go语言编写: https://www.krakend.io/,这些还没有去研究,不过kong在国内的流行度很高,看到很多大厂都在用,kong=nginx+openresty+lua

lua是个好东西,要好好学学

继续阅读