spring cloud zuul

 

在一个微服务架构的情况下,Zuul(反向代理)以微服务调用从客户端转发到下游服务。服务客户端认为它只与Zuul 通信。对于Zuul 与下游客户端通信,Zuul 已经知道如何将传入的调用映射到下游路由。Zuul 有这样几种机制,包括:

  1.  通过服务发现自劢映射路由
  2.  通过服务发现手劢映射路由
  3.  使用静态 URL 手劢映射路由

1.1 路由映射

  1. 所有的路由映射通过application.yml文件定义。如果基于eureka可以零配置。

Url访问的时候,会根据服务器Id,在eureka里自动寻址。

 

  1. 可以通过/actuator/routes/details或者/actuator/routes端点,要使用routes端点先要释放该端点。
management:

  endpoints:

    web:

      exposure:

        include: "routes"

 

1.1.1 服务发现自动映射路由

  1.添加依赖

  <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-server</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-actuator</artifactId>

        </dependency>

    </dependencies>

  2.@EnableZuulProxy,注解启动类

@EnableZuulProxy

@SpringBootApplication

public class ZuulApplication {



    public static void main(String[] args) {

        SpringApplication.run(ZuulApplication.class, args);

    }



}

 

  3.application.yml

server:

  port: 8085

eureka:

  instance:

    prefer-ip-address: true

  client:

    service-url:

      defaultZone: http://localhost:8086/eureka

spring:

  application:

    name: zuul

management:

  endpoints:

    web:

      exposure:

        include: "routes"

 

   4.启动当前工程下的eureka

   5.启动当前工程下之前搭建的service-hi服务。

 

 

注解:

10.160.0.95:8085  :zuul网关

service-hi:服务器应用Id

cloud/hi?name=1 :将要调用的实际url

 

使用routes端点查询

1.1.2 通过服务发现手动映射路由

zuul:

  routes:

service-hi: "/service/**"

 

1.但是这样,会有两个路由(手动映射路由和自动映射)。

2.可以通过zuul.ignored-services: "*",忽略。

 

1.1.2.1 添加前缀routes

有时候我们需要区分api网关和内容网关,会用到前缀。Zuul.prefix设置前缀

zuul:

  ignored-services: "*"

  routes:

    service-hi: "/service/**"

  prefix: /api

 

1.1.3 使用静态URL手动映射路由

不受限于Eureka服务

 

1.1.3.1 搭建

  1. 启动当前模块下之前的service-hi服务器
  2. Application.yml
server:

  port: 8085

spring:

  application:

    name: zuul

management:

  endpoints:

    web:

      exposure:

        include: routes

zuul:

  routes:

    test:

      path: "/service/**"

      url: http://localhost:8083/

  ignored-services: "*"



结果:

 

 

1.3.2 使用ribbon负载均衡

  1. 使用ribbon负载均衡需要,手动禁止ribbon和eureka整合
zuul:

  routes:

     one:

      path: "/service/**"

      serviceId: "test_one" #定义一个服务ID用于在ribbon中查找服务

  ignored-services: "*"

ribbon:

  eureka:

    enabled: false #禁用Ribbon中的eureka支持

test_one:

  ribbon:

listOfServers: http://localhost:8083/,http://localhost:8088/  #禁用Ribbon中的eureka支持

 

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值