一、API接口的分类

1.网关API(接口) Gateway(网关) ---接口网关注意:没有界面

2.接口什么背景下产生:在面向服务架构和微服务背景下产生,目的是为了解耦,rpc远程调用中产生。

1.接口的分类

   1.1 开发接口 ---其他机构合作伙伴进行调用(必须在外网访问),例如蚂蚁开发平台、微信公众号开发

   需要通过appid+appsocet生成accessToken进行通讯,对接支付开发、微信开发。目的可以授权一些接口权限OAuth2.0协议方式

   1.2 内部接口 ---一般只能在局域网中进行访问,服务与服务调用之间关系都在同一个微服务系统中,目的为了保护安全问题

二、如何设计一套API接口

考虑:接口权限(开发接口/内部接口)、考虑幂等性、安全性(Https)、防止篡改数据(验证签名)、使用网关拦截接口实现黑名单和白名单、接口使用http协议+json格式resful目的为了跨平台(http底层走的是sql的技术,转化为二进制)。

考虑高并发,对接口服务实现保护,服务降级,熔断,隔离之类,最后使用统一的API管理平台 swagger

三、网关

1.概念:相当于客户端请求统一先请求到网关服务器,在由网关服务器进行转发请求到实际服务地址;类似与Ngnix

2.作用:网关可以拦截客户端所有请求,对该请求进行权限控制、负载均衡、日志管理、接口调用监控等

3.过滤器与网关区别:过滤适合单个tomcat服务器进行拦截请求(例如只拦截会员服务),网关是拦截整个微服务请求

4.网关分类:分为内网网关(自己的微服务)和外网网关(开发平台)

5.Ngnix与Zuul区别:

   5.1 相同:Zuul和Ngnix可以实现负载均衡、反向代理(隐藏真实ip地址)、过滤请求、实现网关效果

   5.2 不同点:

         5.2.1 Nginx采用C语言编写,Zuul采用java编写;

         5.2.2 Zuul采用ribbon+eureka实现本地负载均衡;Ngnix采用服务器实现负载均衡

         5.2.3 Nginx比Zuul功能更强大,因为Nginx整合一些脚本语言

   建议:nginx+zuul  ngnix作用实现反向代理,zuul对微服务网关拦截

6.网关示意图

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_负载均衡

四、搭建网关

1.引入依赖

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_微服务_02

2.配置信息

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_负载均衡_03

3.@enableZuulProxy

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_Nginx_04

4.开启eureka注册中心、会员、订单服务,及网关服务后,就可以https://127.0.0.1:80/api-member访问网关,网关转发到会员服务(也可以看作反向代理,隐藏了真实地址)

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_负载均衡_05

5.编写判断userToken来过滤请求

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_微服务_06

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_微服务_07

6.如何实现动态Zuul网关效果(我要在网关新增一个服务):把这段配置放到SpringCloud配置中心或者阿波罗

五、Zuul网关集群的概念

1.如何搭建:Nginx+Zuul 一主一备 或者轮询多个

2.在微服务中,所有服务请求都会统一请求到Zuul网关上,所以要有集群,高可用Zuul

3.原理图

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_负载均衡_08

六、实现nginx+zuul实现Zuul集群

1.在不知名目录的host文件,配置ngnix的这个

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_Nginx_09

2.在nginx的config目录中,配置

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_微服务_10

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_微服务_11

完成集群

spring cloud gateway post 根据入参修改请求url spring cloud gateway 接口权限_负载均衡_12