zuul的四种路由

面向服务的路由

在刚才的路由规则中,我们把路径对应的服务地址写死了!如果同一服务有多个实例的话,这样做显然就不合理了。我们应该根据服务的名称,去Eureka注册中心查找 服务对应的所有实例列表,然后进行动态路由才对!

对zuul工程修改优化:

添加Eureka客户端依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

添加Eureka配置,获取服务信息

eureka:
  client:
    registry-fetch-interval-seconds: 5 # 获取服务列表的周期:5s
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka

开启Eureka客户端发现功能

@SpringBootApplication
@EnableZuulProxy // 开启Zuul的网关功能
@EnableDiscoveryClient
public class ZuulDemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(ZuulDemoApplication.class, args);
	}
}

修改映射配置,通过服务名称获取

因为已经有了Eureka客户端,我们可以从Eureka获取服务的地址信息,因此映射时无需指定IP地址,而是通过服务名称来访问,而且Zuul已经集成了Ribbon的负载均衡功能。

zuul:
  routes:
    service-provider: # 这里是路由id,随意写
      path: /service-provider/** # 这里是映射路径
      serviceId: service-provider # 指定服务名称

启动测试

再次启动,这次Zuul进行代理时,会利用Ribbon进行负载均衡访问:

简化的路由配置

在刚才的配置中,我们的规则是这样的:

  • zuul.routes.<route>.path=/xxx/**: 来指定映射路径。<route>是自定义的路由名

  • zuul.routes.<route>.serviceId=service-provider:来指定服务名。

而大多数情况下,我们的<route>路由名称往往和服务名会写成一样的。因此Zuul就提供了一种简化的配置语法:zuul.routes.<serviceId>=<path>

比方说上面我们关于service-provider的配置可以简化为一条:

zuul:
  routes:
    service-provider: /service-provider/** # 这里是映射路径

省去了对服务名称的配置。

默认的路由规则

在使用Zuul的过程中,上面讲述的规则已经大大的简化了配置项。但是当服务较多时,配置也是比较繁琐的。因此Zuul就指定了默认的路由规则:

  • 默认情况下,一切服务的映射路径就是服务名本身。例如服务名为:service-provider,则默认的映射路径就 是:/service-provider/**

也就是说,刚才的映射规则我们完全不配置也是OK的,不信就试试看。

路由前缀

配置示例:

zuul:
  routes:
    service-provider: /service-provider/**
    service-consumer: /service-consumer/**
  prefix: /api # 添加路由前缀

我们通过zuul.prefix=/api来指定了路由的前缀,这样在发起请求时,路径就要以/api开头。

 

Spring Boot Zuul是一个在微服务架构中用于网关路由和过滤的组件。它允许我们通过定义动态路由配置来控制请求的转发。 要在Spring Boot Zuul中配置动态路由转发,我们需要执行以下几个步骤: 1. 添加Zuul依赖:在pom.xml文件中添加Zuul的依赖,以便我们可以使用它的功能。 2. 创建Zuul配置类:创建一个Java类来配置Zuul。在该类上添加`@EnableZuulProxy`注解,以启用Zuul代理和路由功能。可以使用`@Configuration`注解标记该类为配置类。 3. 配置动态路由:在配置类中,使用`@ConfigurationProperties`注解来加载动态路由的配置,如下所示: ```java @ConfigurationProperties("zuul") public class ZuulConfig { private List<Route> routes; // Getters and setters public static class Route { private String path; private String url; private boolean stripPrefix; // Getters and setters } } ``` 在`ZuulConfig`类中,我们定义了一个内部类`Route`,它表示一条动态路由。我们需要配置每个路由的`path`、`url`和`stripPrefix`属性。 4. 启用动态路由配置:在配置类中添加`@Bean`注解来创建一个`ZuulConfiguration` bean,并使用它来启用动态路由配置。代码如下所示: ```java @Configuration public class ZuulConfig { // ... @Bean public ZuulConfiguration zuulConfiguration() { ZuulConfiguration zuulConfiguration = new ZuulConfiguration(); zuulConfiguration.setRoutes(this.routes); return zuulConfiguration; } } ``` 在`zuulConfiguration()`方法中,我们创建了一个`ZuulConfiguration`对象,并将动态路由配置赋值给它。 5. 测试路由转发:完成以上步骤后,我们可以通过访问定义的动态路由来测试路由转发是否正常工作。根据配置的`path`属性,Zuul将会把请求转发到相应的`url`。 这是使用Spring Boot Zuul配置动态路由转发的基本步骤。通过配置动态路由,我们可以动态地将请求转发到不同的后端服务,并根据路由规则对请求进行过滤和重定向。这使得网关服务在微服务架构中起到关键的作用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值