詳解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)文章
Java實(shí)現(xiàn)轉(zhuǎn)跳不同系統(tǒng)使用枚舉加switch的方式示例
今天小編就為大家分享一篇關(guān)于Java實(shí)現(xiàn)轉(zhuǎn)跳不同系統(tǒng)使用枚舉加switch的方式示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
SpringBoot在 POM 中引入本地 JAR 包的方法
在開(kāi)發(fā) Spring Boot 應(yīng)用程序時(shí),您可能需要使用本地 JAR 包來(lái)添加自定義庫(kù)或功能,本文將介紹在 Spring Boot 項(xiàng)目的 POM 文件中如何引入本地 JAR 包,感興趣的朋友跟隨小編一起看看吧2023-08-08
Java中的CyclicBarrier循環(huán)柵欄詳解
這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄詳解,CyclicBarrier循環(huán)柵欄是用來(lái)進(jìn)行線程協(xié)作,等待線程滿足某個(gè)計(jì)數(shù),構(gòu)造時(shí)設(shè)置計(jì)數(shù)個(gè)數(shù),每個(gè)線程執(zhí)行到某個(gè)需要“同步”的時(shí)刻調(diào)用 await()方法進(jìn)行等待,當(dāng)?shù)却木€程數(shù)滿足計(jì)數(shù)個(gè)數(shù)時(shí),繼續(xù)執(zhí)行,需要的朋友可以參考下2023-12-12
Eclipse中查看android工程代碼出現(xiàn)"android.jar has no source attachment
這篇文章主要介紹了Eclipse中查看android工程代碼出現(xiàn)"android.jar has no source attachment"的解決方案,需要的朋友可以參考下2016-05-05
DynamicDataSource怎樣解決多數(shù)據(jù)源的事務(wù)問(wèn)題
這篇文章主要介紹了DynamicDataSource怎樣解決多數(shù)據(jù)源的事務(wù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07
詳解SpringBoot中JdbcTemplate的事務(wù)控制
JdbcTemplate是spring-jdbc提供的數(shù)據(jù)庫(kù)核心操作類,那對(duì)JdbcTemplate進(jìn)行事務(wù)控制呢,本文就詳細(xì)的介紹一下2021-09-09
java用applet畫(huà)圖用到的方法(涉及雙緩沖)
這篇文章主要介紹了java用applet畫(huà)圖用到的方法(涉及雙緩沖),然后作為基礎(chǔ)的基礎(chǔ)的基礎(chǔ),必須學(xué)習(xí)如何讓鍵盤與界面進(jìn)行交互。下面就是對(duì)一個(gè)基礎(chǔ)得不能再基礎(chǔ)的applet程序,需要的朋友可以參考下2019-06-06

