spring cloud中代理服务器zuul的使用
spring cloud中代理服务器zuul的使用
主流网关:
zuul
kong 基于nginx的API Gateway
nginx+lua
1、新建项目,选择eureka discovery 和zuul
2、启动类中增加 @EnableZuulProxy
3、修改配置文件后缀名为yml,并在配置中增加端口号、应用名称和注册中心地址,如下:
server:
port: 9000
spring:
application:
name: api-gateway
eureka:
client:
service-url:
defaultZone: http://localhost:7880/eureka #注册中心地址
4、访问
http://192.168.136.128:8651/api/v1/orderfeignhystrix/save?userId=2&productId=2
修改为
http://192.168.136.128:9000/orderfeignhystrix-service/api/v1/orderfeignhystrix/save?userId=2&productId=2
http://192.168.136.128:8765/api/v1/product/list
修改为
http://192.168.136.128:9000/product-service/api/v1/product/list
5、自定义路由转发
zuul:
routes:
product-service: /apigateway/**
访问
http://192.168.136.128:9000/apigateway/api/v1/product/list
6、环境隔离:
需求 :不想让默认的服务对外暴露接口
product-service/api/v1/product/list
配置:
zuul:
ignored-patterns:
- /*-service/api/v1/product/list
可以访问
http://192.168.136.128:9000/apigateway/api/v1/product/list
不可以访问
http://192.168.136.128:9000/product-service/api/v1/product/list
原生地址仍旧可以访问
http://192.168.136.128:8765/api/v1/product/list
7、三个注意事项:
1)、路由名称定义问题
路由映射重复覆盖问题
zuul:
routes:
product-service: /apigateway/**
orderfeignhystrix-service-service: /apigateway/**
这样会覆盖,product-service会无法访问
可以增加子目录来区分
zuul:
routes:
product-service: /apigateway/product/**
orderfeignhystrix-service-service: /apigateway/order/**
2)、Http请求头过滤问题(在 routers类中可以看到这个定义sensitiveHeaders)
默认session等请求是关闭的
"Cookie", "Set-Cookie", "Authorization"
在yml文件中增加zuul的routes属性sensitiveHeaders:
修改后为
zuul:
routes:
product-service: /apigateway/product/**
orderfeignhystrix-service: /apigateway/order/**
ignored-patterns:
- /*-service/api/v1/product/list
sensitiveHeaders:
测试方法:在order服务的controller的save中增加代码,并使用postman测试,增加如下代码
String token = httpServletRequest.getHeader("token");
String session=httpServletRequest.getHeader("session");
System.out.println("token is:"+token);
System.out.println("session is:"+session);
使用postman进行测试
http://192.168.136.128:9000/orderfeignhystrix-service/api/v1/orderfeignhystrix/save?userId=2&productId=2
增加header中的session和token属性
3)、过滤器执行顺序问题 ,过滤器的order值越小,越先执行
spring cloud中代理服务器zuul的使用的更多相关文章
- spring cloud 学习(6) - zuul 微服务网关
微服务架构体系中,通常一个业务系统会有很多的微服务,比如:OrderService.ProductService.UserService...,为了让调用更简单,一般会在这些服务前端再封装一层,类似下 ...
- Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul)
Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul) 1.Eureka Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是 ...
- Spring Cloud中Feign如何统一设置验证token
代码地址:https://github.com/hbbliyong/springcloud.git 原理是通过每个微服务请求之前都从认证服务获取认证之后的token,然后将token放入到请求头中带过 ...
- Spring Cloud 入门 之 Zuul 篇(五)
原文地址:Spring Cloud 入门 之 Zuul 篇(五) 博客地址:http://www.extlight.com 一.前言 随着业务的扩展,微服务会不对增加,相应的其对外开放的 API 接口 ...
- Spring Cloud 服务网关Zuul
Spring Cloud 服务网关Zuul 服务网关是分布式架构中不可缺少的组成部分,是外部网络和内部服务之间的屏障,例如权限控制之类的逻辑应该在这里实现,而不是放在每个服务单元. Spring Cl ...
- Spring Cloud Gateway VS Zuul 比较,怎么选择?
Spring Cloud Gateway 是 Spring Cloud Finchley 版推出来的新组件,用来代替服务网关:Zuul. 那 Spring Cloud Gateway 和 Zuul 都 ...
- Spring Cloud 网关服务 zuul 三 动态路由
zuul动态路由 网关服务是流量的唯一入口.不能随便停服务.所以动态路由就显得尤为必要. 数据库动态路由基于事件刷新机制热修改zuul的路由属性. DiscoveryClientRouteLocato ...
- 详解Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失
在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离. 在使用线程隔离的时候,有个问题是必须 ...
- Spring Cloud中负载均衡器概览
在上篇文章中(RestTemplate的逆袭之路,从发送请求到负载均衡)我们完整的分析了RestTemplate的工作过程,在分析的过程中,我们遇到过一个ILoadBalancer接口,这个接口中有一 ...
随机推荐
- geometry_msgs.msg.PoseStamped 代码示例
https://programtalk.com/python-examples/geometry_msgs.msg.PoseStamped/
- NOIP1999提高组 题解报告
T1 导弹拦截 题目大意:依次有\(n\) (\(n \le 10^5\))枚导弹,一套导弹拦截系统只能拦截一系列高度递减的导弹(一套系统拦截的弹道不一定相邻).求一套系统最多能拦截多少导弹,以及最少 ...
- 调整 全局jvm 大小 tomcat 调整jvm大小
z最近公司换了一个线上的windows服务器,原来的内存48g,现在2g.项目启动报内存不足.又重新安装jre 安装jre 教程链接:(谢谢各位博友) https://www.genban.org/t ...
- Apache Flink - Window
Window: 在Streaming中,数据是无限且连续的,我们不可能等所有数据都到才进行处理,我们可以来一个就处理一下,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击了我们 ...
- 虚拟机VMware安装及Linux系统基础配置(CentOS 7)
PS: 我是 VMware 14 安装 CentOS 7 来配置Linux虚拟机,想要安装 Ubuntu 18.04 的可以自行其他搜或者参考博客:https://blog.csdn.net/gith ...
- cv相关博客文章
收藏些图像处理,机器学习,深度学习方面比较不错的文章,时常学习,复习和膜拜吧... 图像方面(传统CV): 1. SIFT特征 https://www.cnblogs.com/wangguchangq ...
- latex运算符
一些小的运算符,可以在数学模式下直接输入,但是有一些运算符需要用控制序列生成:
- linux性能监控 -CPU、Memory、IO、Network等指标的讲解
[操作系统-linux]linux性能监控 -CPU.Memory.IO.Network等指标的讲解(转) 一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,Syst ...
- python基础之线程、进程、协程
线程 线程基础知识 一个应用程序,可以多进程.也可以多线程. 一个python脚本,默认是单进程,单线程的. I/O操作(音频.视频.显卡操作),不占用CPU,所以: 对于I/O密集型操作,不会占用C ...
- PAT 甲级 1059 Prime Factors (25 分) ((新学)快速质因数分解,注意1=1)
1059 Prime Factors (25 分) Given any positive integer N, you are supposed to find all of its prime ...