這篇文章給大家分享的是有關(guān)SpringCloud中Zuul服務(wù)網(wǎng)關(guān)的示例分析的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
網(wǎng)站的建設(shè)成都創(chuàng)新互聯(lián)專(zhuān)注網(wǎng)站定制,經(jīng)驗(yàn)豐富,不做模板,主營(yíng)網(wǎng)站定制開(kāi)發(fā).小程序定制開(kāi)發(fā),H5頁(yè)面制作!給你煥然一新的設(shè)計(jì)體驗(yàn)!已為成都酒樓設(shè)計(jì)等企業(yè)提供專(zhuān)業(yè)服務(wù)。
一、什么是Zuul
??zuul 是netflix開(kāi)源的一個(gè)API Gateway 服務(wù)器, 本質(zhì)上是一個(gè)web servlet應(yīng)用。
??Zuul 在云平臺(tái)上提供動(dòng)態(tài)路由,監(jiān)控,彈性,安全等邊緣服務(wù)的框架。Zuul 相當(dāng)于是設(shè)備和 Netflix 流應(yīng)用的 Web 網(wǎng)站后端所有請(qǐng)求的前門(mén)。
??zuul的例子可以參考netflix在github上的 simple webapp,可以按照netflix 在github wiki 上文檔說(shuō)明來(lái)進(jìn)行使用。
二、解決了什么問(wèn)題
三、入門(mén)案例
1.創(chuàng)建項(xiàng)目
??創(chuàng)建一個(gè)SpringBoot項(xiàng)目
2.修改pom文件
??注意添加zuul的依賴
org.springframework.cloud
spring-cloud-dependencies
Dalston.SR5
pom
import
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.cloud
spring-cloud-starter-zuul
org.springframework.boot
spring-boot-maven-plugin
3.修改配置
??application.properties中添加服務(wù)名稱,端口和Eureka注冊(cè)中心的信息即可
spring.application.name=zuul-gateway
server.port=9020
#\u8BBE\u7F6E\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740\uFF0C\u6307\u5411\u53E6\u4E00\u4E2A\u6CE8\u518C\u4E2D\u5FC3
eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/
4.啟動(dòng)類(lèi)
??啟動(dòng)類(lèi)中注意要添加zuul的注解
@SpringBootApplication
@EnableZuulProxy
public class StartZuul {
public static void main(String[] args) {
SpringApplication.run(StartZuul.class, args);
}
}
5.測(cè)試
??我們隨便啟動(dòng)一個(gè)前面的服務(wù)。
我這啟動(dòng)的是上個(gè)案例中的一個(gè)product服務(wù),如果需要源碼歡迎訪問(wèn)我的GitHub:https://github.com/q279583842q/SpringCloud-dpb-Demo
直接訪問(wèn):http://localhost:9001/product/findAll
通過(guò)zuul服務(wù)網(wǎng)關(guān)訪問(wèn):http://localhost:9020/e-book-product/product/findAll
http://網(wǎng)關(guān)服務(wù)地址:網(wǎng)關(guān)服務(wù)端口/訪問(wèn)的服務(wù)的名稱/訪問(wèn)的服務(wù)中的接口的地址
四、路由規(guī)則
??為了便于演示,路由案例新建一個(gè)項(xiàng)目來(lái)演示,內(nèi)容和上面的項(xiàng)目是一致的。
1.URL 指定路由
??application.properties中的配置如下:
spring.application.name=zuul-gateway
server.port=9030
#\u8BBE\u7F6E\u670D\u52A1\u6CE8\u518C\u4E2D\u5FC3\u5730\u5740\uFF0C\u6307\u5411\u53E6\u4E00\u4E2A\u6CE8\u518C\u4E2D\u5FC3
eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/
zuul.routes.e-book-product-provider.path=/bobo/**
zuul.routes.e-book-product-provider.url=http://127.0.0.1:9001/
說(shuō)明:
zuul.routes.e-book-product-provider.path
zuul.routes是固定的,e-book-product-provider自定義,path是固定的
/bobo/** 表示 請(qǐng)求的url地址
zuul.routes.e-book-product-provider.url=http://127.0.0.1:9001/
表示,當(dāng)用戶的請(qǐng)求是 http://xxx/bobo/** 路由到http://127.0.0.1:9001/服務(wù)處理
2.服務(wù)名稱指定路由
方式一
zuul.routes.e-book-product-provider.path=/bobo/**
zuul.routes.e-book-product-provider.serviceId=e-book-product-provider
說(shuō)明
當(dāng)用戶請(qǐng)求的url是:http://xxxx/bobo/product/findAll 這種方式的時(shí)候,會(huì)調(diào)用
zuul.routes.e-book-product-provider.serviceId=e-book-product-provider的
e-book-product-provider服務(wù)來(lái)處理請(qǐng)求
方式二
zuul.routes.e-book-product-provider.path=/bobo/**
說(shuō)明:無(wú)錫人流多少錢(qián) http://mobile.bhnfkyy.com/
zuul.routes.e-book-product-provider.path=/bobo/**
此時(shí)routes和path之間的必須是路由的服務(wù)名稱
3.路由的排除方式
??排除路由,也就是該路由器會(huì)忽悠某幾個(gè)服務(wù),即使客戶端發(fā)送了請(qǐng)求也訪問(wèn)不了
zuul.ignored-services=e-book-product
如果有多個(gè)服務(wù)要排除,服務(wù)名稱通過(guò)","連接
zuul.ignored-services=e-book-product,e-book-order
由于服務(wù)太多,不可能手工一個(gè)個(gè)加,故路由排除所有服務(wù),然后針對(duì)要
路由的服務(wù)進(jìn)行手工加
# 先忽略所有的請(qǐng)求
zuul.ignored-services=*
# 然后單獨(dú)放開(kāi)e-book-order的服務(wù)
zuul.routes.e-book-order.path=/bobo/**
也可以通過(guò)排除指定關(guān)鍵字的路徑
# 排除所有含有findAll關(guān)鍵字的請(qǐng)求
zuul.ignored-patterns=/**/findAll/**
# 放開(kāi)e-book-order服務(wù),同時(shí)也會(huì)排除 findAll的請(qǐng)求
zuul.routes.e-book-order.path=/bobo/**
4.指定路由前綴
??也就是給提前的url添加一個(gè)前綴
## http://127.0.0.1:9030/bobo/product-provider/product/findAll
zuul.prefix=/bobo
zuul.routes.e-book-product.path=/product-provider/**
感謝各位的閱讀!關(guān)于“SpringCloud中Zuul服務(wù)網(wǎng)關(guān)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!