springcloud(2)路由和过滤器ZUUL

路由器和过滤器:Zuul

路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并将/api/shop映射到商店服务。Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。

Netflix使用Zuul进行以下操作:
认证
洞察
压力测试
金丝雀测试
动态路由
服务迁移
负载脱落
安全
静态响应处理
主动/主动流量管理
Zuul的规则引擎允许基本上写任何JVM语言编写规则和过滤器,内置Java和Groovy。

我们已经成功注册了service2,service1两个服务,光是注册了服务还不行,这里可以再配一个网关,让服务调用有统一的入口.

我们来创建一个gateway项目

首先我们要依赖对应的jar包 pom.xml
dependencies>

org.springframework.boot
spring-boot-starter-web


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


org.springframework.cloud
spring-cloud-starter-netflix-zuul

	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-test</artifactId>
		<scope>test</scope>
	</dependency>
</dependencies>

然后启动类加注解
在这里插入图片描述
然后配置对应的yml文件,配置euraka
在这里插入图片描述
pe配置zuul
在这里插入图片描述
这里有好几种方式,我上面用了两种
routes:
XXX:唯一的
path: 需要访问项目的路径
serviceId: 对应的serviceId

outes:
serviceId: path
prefix:配置路径头部可以是
这样访问的时候就可以通过路由来访问其他两个服务了:
在这里插入图片描述
中间可能会出现一个异常,那就是你的gateway明明已经注册到了两个服务但是依然报找不到服务的问题,这个时候我们可以去修改host文件
在这里插入图片描述
那么路由器的功能就搞定了,接下来我们来写过滤器
先写个类MyZuulGetFilter继承ZuulFilter 然后实现他的几个方法

public String filterType() {
return “pre”;//pre:可以在请求被路由之前调用。 routing:在路由请求时候被调用。 post:在routing和error过滤器之后被调用。 error:处理请求时发生错误时被调用。
}
filterType过滤器类型
@Override
public int filterOrder() {
return 0;
}
filterOrder通过int值来定义过滤器的执行顺序,数值越小优先级越高。
shouldFilter:返回一个boolean类型来判断该过滤器是否要执行。我们可以通过此方法来指定过滤器的有效范围。
run:过滤器的具体逻辑。在该函数中,我们可以实现自定义的过滤逻辑,来确定是否要拦截当前的请求,不对其进行后续的路由,或是在请求路由返回结果之后,对处理结果做一些加工等。

在这里插入图片描述
这是我们的代码
在这里插入图片描述
访问时可以看到控制台输出的
在这里插入图片描述
简单的路由器和过滤器就写好了,具体的复杂业务逻辑可以根据自己的需要去写

---------------------------------写的不好,仅供参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值