接口API技术
- 接口是在面向服务架构(SOA)和微服务的背景下RPC近程调用产生的,目标是为理解耦
接口分类:
凋谢接口
- 在外网进行拜访
- 通过appid+appsecret, 生成accessToken进行通信
- 目标是为了受权接口权限,OAuth2.0协定
外部接口
- 个别只能在局域网中进行拜访
- 服务与服务之间的调用关系都在同一个微服务零碎中
目标是为了保障平安
如何设计一套API接口
- 接口权限: 凋谢接口,外部接口
- 接口幂等性
- 接口安全性
- 为了避免篡改数据,要验证签名
- 应用网关拦挡接口,实现黑名单和白名单
- 接口应用RESTful格调:http协定+json格局,目标是为了跨平台
- 思考到高并发的状况,对接口服务实现爱护性能:服务降级,服务熔断,服务爱护
最初应用对立的API治理平台:api swagger
网关(API Gateway)
- 客户端申请先对立申请到网关服务器上,再由网关服务器进行转发到理论的服务地址
网关作用:
- 拦挡申请
- 权限管制
- 负载平衡
- 日志治理
- 监控接口
网关与过滤器的区别:
- 网关是拦挡整个微服务的申请
- 过滤器是对单个Tomcat服务器进行拦挡申请
- 网关分为内网网关和外网网关
Zuul和Nginx的异同:
相同点:
- Zuul和Nginx都能够实现负载平衡,反向代理,过滤申请,实现网关成果
不同点:
- 开发语言不同: Zuul采纳Java语言写的,Nginx采纳C语言写的
- 负载平衡实现不同: Zuul中采纳Ribbon+Eureka实现客户端负载平衡,Nginx实现的服务器端负载平衡
- Nginx比Zuul性能更弱小,因为Nginx整合了脚本语言(Nginx+Lua),更适宜服务器端负载平衡
- Zuul更适宜Java语言微服务中的网关的实现
能够应用Nginx+Zuul作为网关实现:Nginx用于实现反向代理(暗藏服务实在IP地址),Zuul对微服务的实现网关拦挡申请
搭建Zuul网关
1.引入Zuul依赖spring-cloud-starter-netflix-zuul2.配置文件:eureka.client.serviceUrl.defaultZoo=http://localhost:8100/eureka #服务注册url地址server.port=80 # 网关端口号spring.application.name=service-zuul # 网关名称zuul.routes.api-a.path=/api-ticket/** #当客户端发送申请127.0.0.1:80/api-ticket/结尾的,都会被发送到app-ticket服务中zuul.routes.api-a.serviceId=app-ticket # ticket服务别名,zuul整合ribbon默认主动实现负载平衡成果zuul.routes.app-b.path=/api-user/** # 当客户端发送申请127.0.0.1/api-user/结尾的,都会被发送到app-user服务中 zuul.routes.app-b.serviceId=app-user # app-b定义转发规定3.在类上标注@EnableZuulProxy注解开启网关代理
搭建ZuulFilter过滤器
1.创立过滤器类继承ZuulFilter2.获取上下文3.获取Request对象4.从申请头中获取token5.创立过滤器执行逻辑6.实现ZuulFilter中的办法: 过滤类型:filterType() pre-示意在申请之前执行. 过滤器执行程序:filterOrder() 当一个申请在同一阶段存在多个过滤器的时候,规定多个过滤器的执行程序 判断过滤器是否失效:shouldFilter()
搭建动静Zuul网关路由转发
- 传统形式将路由规定配置在配置文件中,如果路由地址产生了扭转,须要重启服务器
- 在微服务中应该将路由规定配置在SpringCloud Config分布式配置核心,实现动静路由规定.
配置SpringCloud Config分布式配置核心的实时刷新
1.引入actuator依赖spring-boot-starter-actuator2.在配置文件中开启监控端点management.endpoints.web.exposure.include="*" # 开启所有端点3.启动运行configClient4.在须要刷新的controller类中的bean当标注@RefreshScope注解使actuator刷新失效
搭建Nginx+Zuul网关集群
- 如何实现集群: 保障每台服务数据统一,应用Nginx实现反向代理和负载平衡
Zuul搭建网关:
- 应用Nginx+Zuul
- 遵循一主一备或者轮询的准则
- 网关是多个
网关集群原理: 客户端发送申请,所有申请对立到Nginx上,在Nginx中实现反向代理和负载平衡,再应用轮询机制转发到网关上
1.在host中配置域名2.在Nginx配置文件中配置上游服务器(upstream),默认实现负载平衡3.在过滤器中调用网关接口
Nginx和Zuul区别:
- 微服务网关是针对整个微服务实现对立申请拦挡,因而网关都采纳相干语言(Java)开发