博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringCloud 之GateWay网关
阅读量:2455 次
发布时间:2019-05-10

本文共 1758 字,大约阅读时间需要 5 分钟。

简介

Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。

在Spring Cloud Gateway中有2个重要的概念PredicatFilter
Predicat作为断言,它决定了请求会被路由到哪个router 中。在断言之后,请求会被进入到Filter过滤器的逻辑。

快速入门

导入依赖

org.springframework.cloud
spring-cloud-starter-gateway
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client

添加application.yml配置信息

server:  port: 8087spring:  application:    name: gateway  cloud:    gateway:      discovery:        locator:          # 开启服务注册和发现的功能          enabled: true          # 请求路径上的服务名配置为小写          lower-case-service-id:  trueeureka:  client:    serviceUrl:      defaultZone: http://localhost:9100/eureka/

经过上面的配置gateway网关会将/eureka-client/*的请求路径被路由转发到服务名为eureka-client的服务上。

向gateway发送请求时,url必须带上服务名eureka-client这个前缀,才能转发到eureka-client上,转发之前会将eureka-client去掉。
比如http://127.0.0.1:8087/eureka-client/hello会转发到http://eureka-client/hello地址上。
在这里插入图片描述
在这里插入图片描述

自定义路径并转发到具体的服务上,修改配置文件application.yml

spring:  application:    name: gateway  cloud:    gateway:      discovery:        locator:          enabled: false          lower-case-service-id:  true      routes:      - id: eureka-client        uri:  lb://EUREKA-CLIENT        predicates:          - Path=/demo/**        filters:          - StripPrefix=1      - id: eureka-client2        uri:  lb://EUREKA-CLIENT2        predicates:          - Path=/demo2/**        filters:          - StripPrefix=1

配置了一个Path的predict,将以/demo/**开头的请求都会转发到urilb://EUREKA-CLIENT的地址上,lb://EUREKA-CLIENTeureka-client服务的负载均衡地址,并用StripPrefix的filter在转发之前将/demo去掉。同时将spring.cloud.gateway.discovery.locator.enabled改为false,如果不改的话,之前的http://127.0.0.1:8087/eureka-client/hello这样的请求地址也能正常访问,因为这时为每个服务创建了2个router。

在这里插入图片描述

转载地址:http://agdhb.baihongyu.com/

你可能感兴趣的文章
devops 中台_DevOps中的门控生产
查看>>
keil 开源替代_您需要替代开源的哪些专有工具?
查看>>
总论点和分论点_将破坏性的论点变成富有成效的对话
查看>>
pythonic_使用Pythonic在Python中以图形方式编程
查看>>
python black_格式化Python,但您喜欢使用Black
查看>>
如何在Mac上为Python设置虚拟环境
查看>>
使用Python在GitHub Pages上运行博客
查看>>
如何使用Python和Apache Spark分析日志数据
查看>>
移动端仿钉钉聊天 git_使用Git作为聊天的后端
查看>>
raspberry pi_PiFlash入门:在Linux上启动Raspberry Pi
查看>>
固态硬盘损坏数据如何挽救_开放数据和工具如何在灾难期间挽救生命
查看>>
raspberry_您最老的Raspberry Pi多大了?
查看>>
vscode构建rust_使用rust-vmm构建未来的虚拟化堆栈
查看>>
joplin_介绍Joplin,这是Evernote的开源替代方案
查看>>
使用Pygame模块使用Python构建游戏框架
查看>>
如何使用PostgreSQL简化Python代码
查看>>
软件博览会上的致辞_本地制造商博览会上有4个著名的开源项目
查看>>
pygame游戏角色旋转_使用Pygame移动游戏角色
查看>>
为什么Python和Pygame是入门程序员的最佳选择
查看>>
上海微钉科技面试题_钉住面试的7个技巧
查看>>