什么是Zuul
路由是微服务体系结构的一个组成部分。例如,/
可以映射到您的Web应用程序,/api/users
映射到用户服务,并将/api/shop
映射到商店服务。Zuul是Netflix的基于JVM的路由器和服务器端负载均衡器。
Netflix使用Zuul进行以下操作:
- 认证
- 洞察
- 压力测试
- 金丝雀测试
- 动态路由
- 服务迁移
- 负载脱落
- 安全
- 静态响应处理
- 主动/主动流量管理
Zuul的规则引擎允许基本上写任何JVM语言编写规则和过滤器,内置Java和Groovy。
以上内容官方直译
项目集成之Zuul
1. pom.xml引入Maven依赖
<parent>
<!-- spring boot -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<!-- netflix-eureka-client-->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<!-- netflix-zuul -->
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- spring cloud -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley RC1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
注意:
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-zuul
的Zuul
服务注册到注册中心,端口为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
附加说明
- 本文参考资料
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。