詳解spring cloud構(gòu)建微服務(wù)架構(gòu)的網(wǎng)關(guān)(API GateWay)
前言
在我們前面的博客中講到,當(dāng)服務(wù)A需要調(diào)用服務(wù)B的時(shí)候,只需要從Eureka中獲取B服務(wù)的注冊(cè)實(shí)例,然后使用Feign來(lái)調(diào)用B的服務(wù),使用Ribbon來(lái)實(shí)現(xiàn)負(fù)載均衡,但是,當(dāng)我們同時(shí)向客戶端暴漏多個(gè)服務(wù)的時(shí)候,客戶端怎么調(diào)用我們暴漏的服務(wù)了,如果我們還想加入安全認(rèn)證,權(quán)限控制,過(guò)濾器以及動(dòng)態(tài)路由等特性了,那么就需要使用Zuul來(lái)實(shí)現(xiàn)API GateWay了,下面,我們先來(lái)看下Zuul怎么使用。
一、加入Zuul的依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency>
由于,我們需要將Zuul服務(wù)注冊(cè)到Eureka Server上,同時(shí)從Eureka Server上發(fā)現(xiàn)注冊(cè)的服務(wù),所以這里我們加上了Eureka的依賴。
二、在應(yīng)用Application主類上開(kāi)啟Zuul支持
@SpringBootApplication @EnableZuulProxy // 使用@EnableZuulProxy來(lái)開(kāi)啟Zuul的支持,如果你不想使用Zuul提供的Filter和反向代理的功能的話,此處可以使用@EnableZuulServer注解 public class ZuulApplication { public static void main(String[] args) { SpringApplication.run(ZuulApplication.class, args); } }
三、在application.yml中增加Zuul的基礎(chǔ)配置信息
spring: application: name: gateway-zuul # 應(yīng)用名 server: port: 8768 #Zuul Server的端口號(hào) eureka: client: service-url: defaultZone: http://localhost:8761/eureka instance: prefer-ip-address: true
四、在application.yml中增加服務(wù)路由配置
前提:在Eureka Server已經(jīng)注冊(cè)了2個(gè)服務(wù),分別是:springboot-h2-service和springboot-rest-template-feign,其中springboot-rest-template-feign服務(wù)會(huì)調(diào)用springboot-h2-service服務(wù),springboot-rest-template-feign服務(wù)是我們對(duì)外提供的服務(wù),也就是說(shuō),springboot-rest-template-feign服務(wù)是我們暴漏給客戶端調(diào)用的。
# 路由配置方式一 #zuul: # routes: # springboot-rest-template-feign: /templateservice/** #所有請(qǐng)求springboot-rest-template-feign的請(qǐng)求,都會(huì)被攔截,并且轉(zhuǎn)發(fā)到templateservice上 # 路由配置方式二 zuul: routes: api-contract: # 其中api-contract是路由名稱,可以隨便定義,但是path和service-id需要一一對(duì)應(yīng) path: /templateservice/** service-id: springboot-rest-template-feign # springboot-rest-template-feign為注冊(cè)到Eureka上的服務(wù)名 ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule # 配置服務(wù)端負(fù)載均衡策略
五、驗(yàn)證
下面我們就可以來(lái)進(jìn)行驗(yàn)證了,在瀏覽器中輸入:http://localhost:8768/templateservice/template/1就可以看到測(cè)試結(jié)果了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解eclipse中Maven工程使用Tomcat7以上插件的方法
本篇文章主要介紹了詳解eclipse中Maven工程使用Tomcat7以上插件的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12springboot?log4j2.xml如何讀取application.yml中屬性值
這篇文章主要介紹了springboot?log4j2.xml如何讀取application.yml中屬性值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Java阻塞隊(duì)列必看類:BlockingQueue快速了解大體框架和實(shí)現(xiàn)思路
這篇文章主要介紹了Java阻塞隊(duì)列必看類:BlockingQueue快速了解大體框架和實(shí)現(xiàn)思路,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10springboot CompletableFuture并行計(jì)算及使用方法
CompletableFuture基于 Future 和 CompletionStage 接口,利用線程池、回調(diào)函數(shù)、異常處理、組合操作等機(jī)制,提供了強(qiáng)大而靈活的異步編程功能,這篇文章主要介紹了springboot CompletableFuture并行計(jì)算及使用方法,需要的朋友可以參考下2024-05-05Spring擴(kuò)展之基于HandlerMapping實(shí)現(xiàn)接口灰度發(fā)布實(shí)例
這篇文章主要介紹了Spring擴(kuò)展之基于HandlerMapping實(shí)現(xiàn)接口灰度發(fā)布實(shí)例,灰度發(fā)布是指在黑與白之間,能夠平滑過(guò)渡的一種發(fā)布方式,灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問(wèn)題,以保證其影響度,需要的朋友可以參考下2023-08-08