Zuul-快速搭建

1.引入依赖


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


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

 

2.启动类

        在启动类上加上@EnableEurekaClient注解,开启EurekaClient功能;加上@SpringBootApplication注解,表明自己是一个Spring Boot工程;加上@EnableZuulProxy注解,开启Zuul的功能。代码如下:

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class ZuuldemoApplication {

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

}

 

3.配置文件

server:
  port: 8888

eureka:
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8761/eureka/

spring:
  application:
    name: service-zuul

 

4.配置Zuul的路由转发策略

4.1 同时指定微服务的serivceId和path

zuul:
  routes:
    hello1:  # 该配置方式中,hello1只是给路由一个名称,可以任意起名。
      path: /hello/**
      service-id: eureka-client1  # service-id对应服务在注册中心的名称

所有以"/hello/"开头的服务都会被分发到eureka-client1服务

4.2 同时指定path和url

zuul:
  routes:
    hell2:
      path: /hello2/**
      url: http://127.0.0.1:8762

这样就将/hello2/**映射到http://127.0.0.1:8762/,一旦使用这种方式不能使用服务降级Hytrix功能和负载均衡Ribbon,在实际开发中这种做法也是不可取的。

4.3 同时指定path和url,并且不破坏Zuul的Hystrix、Ribbon特性

        如果你想指定Url,并且想做负载均衡,那么就需要自己维护负载均衡的服务注册列表。首先将ribbon. eureka.enabled改为false,即Ribbon负载均衡客户端不向Eureka Client获取服务注册列表信息。然后需要自己维护一份注册列表,该注册列表对应的服务名为microservice-provider-user(随便起),通过配置microservice-provider-user.ribbon.listOfServers来配置多个复杂均衡的Url。配置信息如下:

zuul:
  routes:
    user-route:
      path: /user/**
      service-id: microservice-provider-user
ribbon:
  eureka:
    enabled: false    # 禁用掉ribbon的eureka使用
microservice-provider-user:
  ribbon:
    listOfServers: localhost:8000,localhost:8001

4.4 自定义微服务访问路径

zuul:
  routes:
    microservice-provider-user: /user/**

这样设置后,微服务microservice-provider-user就会被映射到/user/,访问方法为:http://localhost:8040/user/

4.5 忽略指定服务路径

zuul:
  ignored-services: microservice-provider-user,microservice-consumer-movie

这样可以让Zuul忽略以上两个服务,只代理其他服务。

4.6 忽略所有微服务,只路由指定服务

zuul:
  ignored-services: '*'   # 使用'*'可忽略所有微服务
  routes:
    microservice-provider-user: /user/**

这样Zuul只会路由microservice-provider-user

4.7 忽略某些路径

zuul:
  ignoredPatterns: /**/admin/**   # 忽略所有包括/admin/的路径
  routes:
    microservice-provider-user: /user/**

4.8 路由前缀

示例1:

zuul:
  prefix: /api
  strip-prefix: false
  routes:
    microservice-provider-user: /user/**

访问Zuul的/api/user/路径,请求将会被转发到microservice-provider-user的/api/
示例2:

zuul:
  routes:
    microservice-provider-user: 
      path: /user/**
      strip-prefix: false

这样访问Zuul的/user/路径,请求将会被转发到microservice-provider-user的/user/

4.9 forward跳转到本地url

zuul.routes.user.path=/user/**
zuul.routes.user.url=forward:/user

4.10 路由配置顺序

如果想按照配置的顺序进行路由规则控制,则需要使用YAML,如果是使用propeties文件,则会丢失顺序。例如:

zuul:
  routes:
    users:
      path: /myusers/**
    legacy:
      path: /**

上例如果是使用properties文件进行配置,则legacy就可能会先生效,这样users就没效果了。

你可能感兴趣的:(Spring,Cloud)