getaway网关转发去前缀_111、服务网关Zuul

一、 什么是网关服务

网关服务是单一访问点,并充当多项服务的代理。服务网关启用了跨所有服务的变换、路由和公共处理。

基本原理

服务网关模块是单一调解,用于处理对多个服务使用者和提供者的请求。任何服务网关都有如下四个典型步骤:

1)常用处理 - 一旦网关接收到消息,就对所有消息执行常用处理,例如添加协议级的头或者记录该消息。

2)服务标识 - 必须将网关所处理的消息标识为特定服务类型。例如,查询消息以确定它是针对服务提供者 A、B 还是 C。

3)端点路由 - 当它确定某消息将传递到特定服务提供者时,它将映射到网络可寻址端点,以便可以将该消息转发到服务提供者。

4)特定于服务的处理 - 执行特定目标服务所需的任何处理。

用户可以根据不同的场景更改这四个步骤的顺序。

1 为什么要使用网关

协调请求与服务的调用关系,协调服务之间的关系。

2 网关解决了什么问题

14a275c0d735dec68e07a907521b0325.png

二、 编写网关服务入门案例

1 创建项目

c8ff3b43b6893c68ab72ffe46aebd7d6.png

修改 pom 文件

<project 

修改配置文件

spring.application.name=zuul-gateway
server.port=9020

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

修改启动类

@SpringBootApplication

通过网关访问请求服务

663e684a12f81d192b44a31f867548bf.png

http://网关服务地址:网关服务端口/访问的服务的名称/访问的服务中的接口的地址

三、 路由器的 4 种路由规则方法

1 创建项目

8f41b65733e56e11e916f8bfd2b99ccd.png

2 采用 URL 指定路由方式

修改配置文件配置路由规则

spring.application.name=zuul-gateway-route
server.port=9030

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

# 1 ###################### 路由指定:URL 指定 #############################
# URL 匹配关键字,如果包含关键字就跳转到指定的 URL 中
zuul.routes.e-book-product-provider.path=/e-book-product-provider/**
zuul.routes.e-book-product-provider.url=http://127.0.0.1:9001/

c121070fc9b780f4230f6a1ec187c171.png

通配符含义

a3453c302e6281db17607d2f5d9ce8cb.png

3 采用服务名称指定路由方式

## 2 ###################### 路由指定:服务指定 1 #############################
##将路径的/suibian/引到 eureka 的 e-book-product-provider 服务上
##规则:zuul.routes.路径名.path
##规则:zuul.routes.路径名.serviceId=eureka 的服务名
#zuul.routes.e-book-product-provider.path=/suibian/**
#zuul.routes.e-book-product-provider.serviceId=e-book-product-provider

## 3 ###################### 路由指定:服务指定 2 #############################
#zuul.routes 后面跟着的是服务名,服务名后面跟着的是路径规则,这种配置方式更简单。
zuul.routes.e-book-product-provider.path=/suibian/**

4 路由的排除方法

## 4 ###################### 路由排除:排除某几个服务 ###############################排除后,这个地址将为空
http://127.0.0.1:9030/e-book-product-provider/product/findAll
## 多个服务逗号隔开
#zuul.ignored-services=e-book-product-provider
## 5 ###################### 路由排除:排除所有服务 #############################
#由于服务太多,不可能手工一个个加,故路由排除所有服务,然后针对要路由的服务进行手工加
#zuul.ignored-services=*
#zuul.routes.e-book-order-provider.path=/e-book-order-provider/**
## 6 ###################### 路由排除:排除指定关键字的路径 #############################
# 排除所有包括/list/的路径
zuul.ignored-patterns=/**/findAll/**
zuul.routes.e-book-order-provider.path=/suibian/**

f5f0d72a4c3f06fe59d8a79fbbc20f6a.png

5 路由的添加前缀方法

##http://127.0.0.1:9030/suibian/product-provider/product/findAll
zuul.prefix=/suibian
zuul.routes.e-book-product-provider.path=/product-provider/**

四、自定义网关过滤器

1 编写网关过滤器

1.1创建项目

1073c7bdb104c5752c06475eef0fb1bd.png

修改 pom 文件

<project 

修改配置文件

spring.application.name=zuul-gateway-filter
server.port=9020

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

创建过滤器

package 

f8eecc8f1b042e18258dc2a402563334.png

2 过滤器类型

d6037e955e582e70d6f25c51432e4fc0.png

3 Zuul 请求的生命周期

eec29877966d24cbe091c05d280827c7.png

4 采用网关过滤器实现权限验证

需求:在网关过滤器中通过 Token 判断用户是否登录

4.1创建项目

0e5039939f725dd48e2d17ba2e74af8b.png

修改pom文件添加依赖

<project 

修改配置文件

spring.application.name=zuul-gateway-example
server.port=9020

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

创建 AccessFilter

package 

ed688c2659e2bd1cd00af9073c74e01a.png

cce14d672ada37e097c072be008f25af.png

0e3094161e03a7e804bdd2aeab913b83.png

5 网关过滤器执行顺序与 post 类型演示

5.1网关过滤器执行顺序演示

AccessFilter

package 

AccessFilter 2

/**

4e796c9faf515cf53eab9c613538945f.png

post 类型演示

/**

32cb1288a48ccd86fc55a8df6782446d.png

6.采用网关过滤器对系统异常同一处理

6.1创建 ErrorFilter

/**

创建处理异常响应的控制器

/**

d49b69565deaae07bc02cda8ffd355f9.png

32c198c031a5ff880c658fb1710c3760.png
"getaway zuul" 是一个网络流行语,原意是指一种通过转移注意力或脱身的方式来逃避困难或尴尬局面。这个短语来源于电影《捍卫者联盟》中一只名叫尤尔的角色,它具有很强的逃避能力。 在生活中,我们经常面临各种挑战和压力,有时候可能会感到束手无策或不知所措。这时候,采用getaway zuul的方式可能会给我们带来一些启示。 getaway zuul提醒我们要学会转移注意力和寻找解决问题的新角度。当我们陷入僵局时,可以试着暂时将焦点从问题上转移到其他事物上,例如参加一项爱好活动、与朋友聚会或者只是简单地放松自己。通过转移注意力,我们的思维可能会得到缓解,从而更容易找到解决问题的新方向。 此外,getaway zuul也提醒我们要有一种适时的“脱身”能力。当我们身陷困境或者面对尴尬场面时,有时候选择适当地离开或者改变环境可能会更加明智。这样可以减少冲突的升级或者尴尬的尺度,更有利于我们保持心态的平衡和保护自己的形象。 然而,getaway zuul并不意味着逃避责任或者逃避困难。在面对挑战时,我们要有勇气正视问题,并采取积极的行动来解决。getaway zuul更倾向于提醒我们要灵活应对情况,用更智慧的方式处理问题,而不是盲目地与问题对抗。 在人生的旅途中,getaway zuul 可以给我们带来新的思维角度,帮助我们更好地应对挑战与压力。我们需要学会寻找平衡点,既不被困扰,也不盲目逃避,而是用更明智的方式面对困难,获得更好的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值