@Spring Cloud | NO.3 - 路由器和过滤器 Zuul

什么是Zuul

路由是微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并将/api/shop映射到商店服务。Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。

Netflix使用Zuul进行以下操作:

  • 认证
  • 洞察
  • 压力测试
  • 金丝雀测试
  • 动态路由
  • 服务迁移
  • 负载脱落
  • 安全
  • 静态响应处理
  • 主动/主动流量管理

Zuul的规则引擎允许基本上写任何JVM语言编写规则和过滤器,内置Java和Groovy。

以上内容官方直译

项目集成之Zuul

1. pom.xml引入Maven依赖


    
    org.springframework.boot
    spring-boot-starter-parent
    2.0.1.RELEASE
     



    UTF-8
    UTF-8
    1.8



    
        
        org.springframework.cloud
        spring-cloud-starter-netflix-eureka-client
    
    
        
        org.springframework.cloud
        spring-cloud-starter-netflix-zuul
    
    
        org.springframework.boot
        spring-boot-starter-web
    



    
        
        
            org.springframework.cloud
            spring-cloud-dependencies
            Finchley RC1
            pom
            import
        
    
注意: Zuul引入的Maven依赖中 artifactId有变动, SpringBoot2.0之前的版本为 spring-cloud-starter-zuul

2. 添加注解支持

@EnableZuulProxy
@EnableDiscoveryClient
@SpringBootApplication
public class ZuulServiceApplication {

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

3. application.yml配置

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8769
spring:
  application:
    name: service-zuul
zuul:
  routes:
    api-a:
      path: /api-a/**
      serviceId: service-ribbon
    api-b:
      path: /api-b/**
      serviceId: service-feign
将名称为 service-zuulZuul服务注册到注册中心,端口为 8769
配置路由相关参数,将 path属性值对应的地址 转发给服务名称为 serviceId属性值的服务

4. 运行概览图

启动一个服务注册中心,两个服务提供者,一个服务消费者(Ribbon),一个服务消费者(Feign),一个Zuul路由服务

访问 http://localhost:8769/api-a/h...,浏览器显示:

hi forezp,i am from port:8762

访问 http://localhost:8769/api-b/h...,浏览器显示:

hi forezp,i am from port:8762

附加说明

  1. 本文参考资料
  • spring-cloud-eureka-server 官方文档
  • spring-cloud-eureka-client官方文档
  • spring-cloud 中文文档参考手册
  • 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)

你可能感兴趣的:(spring,springcloud)