SpringCloud gateway+zookeeper實現(xiàn)網(wǎng)關(guān)路由的詳細搭建
準備工作
需要兩個項目去實現(xiàn)路由
demo1為springboot項目用于接入網(wǎng)關(guān),測試網(wǎng)關(guān)連通性
gateway為網(wǎng)關(guān)路由項目

網(wǎng)關(guān)搭建
1.電腦安裝好zookeeper,并且正常運行服務(wù)
Zookeeper官網(wǎng)

2.創(chuàng)建一個spring cloud gateway項目,并引入zookeeper功能

pom文件配置
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.8.0</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
創(chuàng)建好項目后,啟動類要啟用服務(wù)發(fā)現(xiàn)功能
@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}為了方便配置,將application.properties改成yml
以下是第一部分配置,8080端口會與zookeeper服務(wù)沖突,二選一調(diào)整端口
server:
port: 8090
spring:
application:
name: rmx-gateway
cloud:
zookeeper:
connect-string: 127.0.0.1:2181
配置完以后,先啟動zookeeper服務(wù),再啟動gateway項目,一定要有先后順序(順序反了,會導(dǎo)致項目無法啟動)

當gateway項目啟動完成以后,去zookeeper服務(wù)里面去查詢是否成功接入該項目服務(wù)
以下是一種查看服務(wù)是否接入的方法
啟動zkCli.cmd,這個是client端

啟動后,在控制臺輸入ls /services,查看到自己的gateway項目名字后,即可確定已經(jīng)接入了

測試網(wǎng)關(guān)功能
這一步我們需要創(chuàng)建個springboot項目,并引入zookeeper服務(wù)發(fā)現(xiàn)


pom.xml文件
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<version>3.1.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>先配置測試項目的application
server.port=8091 spring.application.name=rmx-demo spring.cloud.zookeeper.connect-string=127.0.0.1:2181
配置完以后,試著啟動一下,啟動完以后順帶進入zookeeper查看服務(wù)是否被接入

這時候zookeeper已經(jīng)可以接入網(wǎng)關(guān)和測試項目了,但是網(wǎng)關(guān)和測試項目的路由還沒有實現(xiàn),我們需要停掉網(wǎng)關(guān)項目,把測試項目配置進入網(wǎng)關(guān)
回到網(wǎng)關(guān)的application.yml,并在里面加入路由配置
srping.cloud.gateway.routes就是路由的配置,這里使用路徑配置,方便測試,Path后面輸入對應(yīng)的controller入口
yml的完整內(nèi)容
server:
port: 8090
spring:
application:
name: rmx-gateway
cloud:
zookeeper:
connect-string: 127.0.0.1:2181
gateway:
routes:
- id: demo1
uri: http://localhost:8091
predicates:
- Path=/test
在測試項目中寫一個測試controller,路徑與配置的名稱保持一致
@RestController
public class TestController {
@PostMapping("/test")
public String post(){
return "端口接通";
}
}
兩者都弄好后,再將這兩個項目啟動,然后測試路由是否成功
先測試直接用8091測試項目的端口去調(diào)用接口

再測試用路由端口8090調(diào)用接口,看是否接通

如果都調(diào)用成功,則路由實現(xiàn)完成
到此這篇關(guān)于SpringCloud gateway+zookeeper實現(xiàn)網(wǎng)關(guān)路由的文章就介紹到這了,更多相關(guān)SpringCloud gateway zookeeper網(wǎng)關(guān)路由內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ThreadPoolExecutor參數(shù)含義及源碼執(zhí)行流程詳解
這篇文章主要為大家介紹了ThreadPoolExecutor參數(shù)含義及源碼執(zhí)行流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
使用springmvc的controller層獲取到請求的數(shù)據(jù)方式
這篇文章主要介紹了使用springmvc的controller層獲取到請求的數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Spring?Boot?3?整合?MinIO?實現(xiàn)分布式文件存儲的全過程
本文介紹了如何使用SpringBoot3和MinIO實現(xiàn)分布式文件存儲,通過MinIO的分布式對象存儲系統(tǒng),可以解決傳統(tǒng)單機文件存儲方案在面對大規(guī)模數(shù)據(jù)和高并發(fā)訪問時的不足,文章詳細講解了MinIO的安裝、配置和使用,感興趣的朋友一起看看吧2025-03-03
java ConcurrentHashMap鎖分段技術(shù)及原理詳解
這篇文章主要介紹了java ConcurrentHashMap鎖分段技術(shù)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07
dubbo集成zipkin獲取Traceid的實現(xiàn)
這篇文章主要介紹了dubbo集成zipkin獲取Traceid的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
SpringBoot實現(xiàn)事件監(jiān)聽(異步執(zhí)行)的示例代碼
事件監(jiān)聽是一種機制,可以定義和觸發(fā)自定義的事件,以及在應(yīng)用程序中注冊監(jiān)聽器來響應(yīng)這些事件,本文主要介紹了SpringBoot實現(xiàn)事件監(jiān)聽(異步執(zhí)行)的示例代碼,感興趣的可以了解一下2024-08-08
Java并發(fā)編程中的CyclicBarrier使用解析
這篇文章主要介紹了Java并發(fā)編程中的CyclicBarrier使用解析,CyclicBarrier從字面意思上來看,循環(huán)柵欄,這篇文章就來分析下是到底是如何實現(xiàn)循環(huán)和柵欄的,需要的朋友可以參考下2023-12-12
Java實現(xiàn)獲取銀行卡所屬銀行,驗證銀行卡號是否正確的方法詳解
這篇文章主要介紹了Java實現(xiàn)獲取銀行卡所屬銀行,驗證銀行卡號是否正確的方法,結(jié)合實例形式詳細分析了java判斷銀行卡歸屬地及有效性的原理與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-09-09

