当前位置:主页 > 查看内容

API Gateway网关应用分析,使用Zuul搭建网关实战

发布时间:2021-09-06 00:00| 位朋友查看

简介:接口API技术接口是在面向服务架构(SOA)和微服务的背景下RPC远程调用产生的,目的是为了解耦 接口分类: 开放接口 在外网进行访问通过appid+appsecret, 生成accessToken进行通讯目的是为了授权接口权限,OAuth2.0协议 内部接口 一般只能在局域网中进行访问服务与……
接口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-zuul
2.配置文件:
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.创建过滤器类继承ZuulFilter
2.获取上下文
3.获取Request对象
4.从请求头中获取token
5.创建过滤器执行逻辑
6.实现ZuulFilter中的方法:
 过滤类型:filterType() pre-表示在请求之前执行.
 过滤器执行顺序:filterOrder() 当一个请求在同一阶段存在多个过滤器的时候,规定多个过滤器的执行顺序
 判断过滤器是否生效:shouldFilter()
搭建动态Zuul网关路由转发传统方式将路由规则配置在配置文件中,如果路由地址发生了改变,需要重启服务器在微服务中应该将路由规则配置在SpringCloud Config分布式配置中心,实现动态路由规则.

配置SpringCloud Config分布式配置中心的实时刷新

1.引入actuator依赖spring-boot-starter-actuator
2.在配置文件中开启监控端点
management.endpoints.web.exposure.include="*" # 开启所有端点
3.启动运行configClient
4.在需要刷新的controller类中的bean当标注@RefreshScope注解使actuator刷新生效
搭建Nginx+Zuul网关集群如何实现集群: 保证每台服务数据一致,使用Nginx实现反向代理和负载均衡

Zuul搭建网关:

使用Nginx+Zuul遵循一主一备或者轮询的原则网关是多个网关集群原理: 客户端发送请求,所有请求统一到Nginx上,在Nginx中实现反向代理和负载均衡,再使用轮询机制转发到网关上
1.在host中配置域名
2.在Nginx配置文件中配置上游服务器(upstream),默认实现负载均衡
3.在过滤器中调用网关接口

Nginx和Zuul区别:

微服务网关是针对整个微服务实现统一请求拦截,因此网关都采用相关语言(Java)开发
本文转自网络,原文链接:https://developer.aliyun.com/article/787830
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:为什么数据在智能照明中如此重要? 下一篇:没有了

推荐图文


随机推荐