路由器和过滤器: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>

然后启动类加注解
springcloud(2)路由和过滤器ZUUL
然后配置对应的yml文件,配置euraka
springcloud(2)路由和过滤器ZUUL
pe配置zuul
springcloud(2)路由和过滤器ZUUL
这里有好几种方式,我上面用了两种
routes:
XXX:唯一的
path: 需要访问项目的路径
serviceId: 对应的serviceId

outes:
serviceId: path
prefix:配置路径头部可以是
这样访问的时候就可以通过路由来访问其他两个服务了:
springcloud(2)路由和过滤器ZUUL
中间可能会出现一个异常,那就是你的gateway明明已经注册到了两个服务但是依然报找不到服务的问题,这个时候我们可以去修改host文件
springcloud(2)路由和过滤器ZUUL
那么路由器的功能就搞定了,接下来我们来写过滤器
先写个类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:过滤器的具体逻辑。在该函数中,我们可以实现自定义的过滤逻辑,来确定是否要拦截当前的请求,不对其进行后续的路由,或是在请求路由返回结果之后,对处理结果做一些加工等。

springcloud(2)路由和过滤器ZUUL
这是我们的代码
springcloud(2)路由和过滤器ZUUL
访问时可以看到控制台输出的
springcloud(2)路由和过滤器ZUUL
简单的路由器和过滤器就写好了,具体的复杂业务逻辑可以根据自己的需要去写

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

相关文章:

  • 2021-11-11
  • 2021-05-29
  • 2021-11-30
  • 2021-08-08
  • 2021-08-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-05-26
  • 2022-12-23
  • 2022-02-27
  • 2021-05-24
  • 2022-12-23
相关资源
相似解决方案