什么是api网关
后端Api需要具备的功能能力,将其统一维护到Api网关中
提供此能力的产品
- Nginx 单机服务
- openrestry 集群服务
- springcloud zuul
- springcloud gateway
zuul vs springcloud gateway
- zuul由Nexflix开源,SpringCloud对1.x集成,但是后期SpringCloud推出了自己的gateway后,就不继续集成zuul 2.x了
- zuul第一个版本是阻塞型架构,zuul为每个请求分配一个线程进行处理,其性能很低
- 鉴于zuul1的性能问题,SpringCloud推出了亲儿子SpringCloud gateway,采用了Reator架构,实现高性能的api网关
这里主要介绍SpringCloud gateway
我们看一下SpringCloud gateway对一次请求做了哪些处理
- request请求到SpringCloud gateway
- Gateway Handler Mapping决定由哪个Handler来处理
- Gateway Web Handler会为request绑定一组Filter,分为Pre-Filter和Post-Filter,分别用于请求前和请求后处理
- 其中一个Filter就是路由Filter,会决定路由到哪个后端服务
- 这些Filter优先级可以设置
使用
代码已经上传到gitee
关注2个模块:
demo.gateway.server
demo.gateway.service