SpringCloud:使用zuul网关路由-6

 

什么是Zuul?为什么要使用Zuul?https://github.com/Netflix/zuul/wiki

       Zuul是从设备和网站到Netflix流应用程序后端的所有请求的前门。 作为边缘服务应用程序,Zuul旨在实现动态路由,监视,弹性和安全性。 它还可以根据需要将请求路由到多个Amazon Auto Scaling组。Zuul核心功能:过滤和路由。

zuul网关入门

1,pom依赖

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

2,启动类注解@EnableZuulProxy

//    @EnableZuulServer//该注解功能单一,有些过滤器会没有。
@EnableZuulProxy  //启动zuul
@SpringBootApplication
public class GetwayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GetwayApplication.class);
    }
}

3,application.yml配置文件

server:
  port: 8008
zuul:
  routes:  #路由:分发给不同的微服务(服务名称)
    abc: #是路由id,任意值
      path: /products-service/** #代表映射路径,会将符合该规则的所有以 /products-service/开头请求都映射到下面的url中。
      url:  http://127.0.0.1:8081 #映射路径对应的实际url地址

访问测试:http://localhost:8008/products-service/products/1

 

4,面向服务的路由配置(Zuul+Eureka)

上面的zuul配置中,映射的实际路径写死了,这不好扩展。所以修改使用Eureka面向服务的路由配置

4-1,添加pom依赖 

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>

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

4-2,修改application.yml配置文件

zuul:
  routes:
    abc: #是路由id,任意值
      path: /products-service/** #代表映射路径,会将符合该规则的所有以 /products-service/开头请求都映射到下面的serviceId中。
      serviceId:  products-service #服务id会在Eureka注册中心中找到调用此服务请求的路径。


#配Eureka
eureka:
  client:
    service-url:
      defaultZone:  http://127.0.0.1:8761/eureka

配置路由的简化方式:

zuul:
  routes:
    products-service:  /products-service/** #zuul的简化配置:key:服务id,value:映射路径,只要访问该映射路径都会转发到该服务



#配Eureka
eureka:
  client:
    service-url:
      defaultZone:  http://127.0.0.1:8761/eureka

 访问http://localhost:8008/products-service/products/2效果:

如果访问出现如下错误:

解决方法:zuul启用ribbon的负载均衡,需设置ribbon的超时时间大点,再如果不行,把zuul的默认连接超时时间也设置大点。

ribbon:
  ReadTimeout: 5000  #负载均衡读出时间
  ConnectTimeout: 5000 #连接时间
zuul:
  host:
    connect-timeout-millis: 6000  #HTTP连接超时要比Hystrix的大,默认值2000
    socket-timeout-millis: 6000   #socket超时,默认值10000


注意:Ribbon的设置的时长不应大于Hystrix设置的时长。

其实,zuul配置文件中可以不用配置映射路由路径也可以,因为Eureka中已经默认为我们配置配置加载了相应格式的路径,即按照,Eureka中注册的服务名进行访问。

去掉zuul中路由配置,测试访问

http://localhost:8008/products-service/products/2

访问效果:

另一个注册服务访问效果:http://localhost:8008/consumer-demo/products/2 

如果我们不想使用zuul中默认的路由规则的配置,那么我们可以进行如下修改:

zuul:
  routes:
    products-service:  /products-service/** 
  ignored-services: #值是一个set集合,Set<String> ignoredServices
    - consumer-demo #忽略该服务作为默认的路由规则。那么如果我们不配置该,那访问不了
  #prefix:  /a  #默认prefix = "",即访问的时候需要加上/a,前缀才能访问。#http://localhost:8008/a/products-service/products/2

访问测试:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值