一、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.网关示意图
四、搭建网关
1.引入依赖
2.配置信息
3.@enableZuulProxy
4.开启eureka注册中心、会员、订单服务,及网关服务后,就可以https://127.0.0.1:80/api-member访问网关,网关转发到会员服务(也可以看作反向代理,隐藏了真实地址)
5.编写判断userToken来过滤请求
6.如何实现动态Zuul网关效果(我要在网关新增一个服务):把这段配置放到SpringCloud配置中心或者阿波罗
五、Zuul网关集群的概念
1.如何搭建:Nginx+Zuul 一主一备 或者轮询多个
2.在微服务中,所有服务请求都会统一请求到Zuul网关上,所以要有集群,高可用Zuul
3.原理图
六、实现nginx+zuul实现Zuul集群
1.在不知名目录的host文件,配置ngnix的这个
2.在nginx的config目录中,配置
完成集群