路由是微服務體系結構的一個組成部分。例如,/
能夠映射到您的Web應用程序,/api/users
映射到用戶服務,並將/api/shop
映射到商店服務。Zuul是Netflix的基於JVM的路由器和服務器端負載均衡器。html
Netflix使用Zuul進行如下操做:java
Zuul的規則引擎容許基本上寫任何JVM語言編寫規則和過濾器,內置Java和Groovy。web
以上內容官方直譯
Zuul
<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
@EnableZuulProxy @EnableDiscoveryClient @SpringBootApplication public class ZuulServiceApplication { public static void main(String[] args) { SpringApplication.run(ServiceZuulApplication.class, args); } }
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屬性值
的服務
啓動一個服務註冊中心,兩個服務提供者,一個服務消費者(Ribbon),一個服務消費者(Feign),一個Zuul路由服務
訪問 http://localhost:8769/api-a/h...,瀏覽器顯示:spring
hi forezp,i am from port:8762
訪問 http://localhost:8769/api-b/h...,瀏覽器顯示:api
hi forezp,i am from port:8762