Java?Nacos與Gateway的使用操作筆記
一、前言
- 近期學(xué)習(xí)Gateway與Nacos的實(shí)操筆記總結(jié)
- 通過Nacos觀察gateway的作用
二、學(xué)習(xí)內(nèi)容:
- Gateway實(shí)操學(xué)習(xí)
- Nacos實(shí)操學(xué)習(xí)
- Knif4j配置
- 均衡負(fù)載
- 灰度發(fā)布策略
- 微服務(wù)知識學(xué)習(xí)
三、問題描述
- 實(shí)操經(jīng)驗(yàn)不豐富
四、解決方案:
4.1 父子項(xiàng)目的設(shè)置
4.1.1父工程配置
- 加入Package配置
- 加入Moudle配置子項(xiàng)目
- 刪除依賴

4.1.2 子工程配置
刪除的都已有父工程管理
- 刪除配置
- 刪除依賴管理
- 指定父工程

4.2 微服務(wù)、負(fù)載均衡與灰度發(fā)布
4.2.1 新建微服務(wù)
- 網(wǎng)關(guān)服務(wù)注意一定要加上gateway與負(fù)載均衡依賴

網(wǎng)關(guān)名字記得改

為了方便觀察運(yùn)行時把SpringBoot加入Services管理

運(yùn)行端口為8080的服務(wù)

新建服務(wù)

之后修改要改的端口與內(nèi)容再次運(yùn)行即可
端口要改不然沖突

我們發(fā)現(xiàn)Nacos的nacos-demo服務(wù)實(shí)例已變?yōu)閮蓚€
看上張圖片,因?yàn)槲覀冇诌\(yùn)行了一個服務(wù)

微服務(wù)配置注意看Path

測試通過網(wǎng)關(guān)訪問服務(wù)實(shí)例
注意測試負(fù)載均衡訪問的是微服務(wù)所以端口號是9091同時路徑別忘寫


五、總結(jié):
5.1 學(xué)習(xí)總結(jié):
不管誰訪問經(jīng)由網(wǎng)關(guān)即可訪問實(shí)例

Spring Cloud Gateway 是一個用于構(gòu)建 API 網(wǎng)關(guān)的框架,提供了多種服務(wù)路由、過濾和負(fù)載均衡的功能
動態(tài)路由:
- 支持通過配置文件或編程方式設(shè)置路由。
- 可以根據(jù)請求的路徑、請求方法、查詢參數(shù)等進(jìn)行路由匹配。
過濾器:
- 提供了預(yù)定義的過濾器(如請求頭、請求參數(shù)、限流等)。
- 用戶可以自定義過濾器來處理請求和響應(yīng)的各種需求。
負(fù)載均衡:
- 支持與 Spring Cloud LoadBalancer 集成,實(shí)現(xiàn)對后端服務(wù)的負(fù)載均衡。
- 可以配置不同的策略,如輪詢、隨機(jī)等。
斷路器支持:
- 可以與 Spring Cloud Circuit Breaker 集成,提供服務(wù)熔斷功能,提高系統(tǒng)的健壯性。
安全與認(rèn)證:
- 支持集成 Spring Security,為 API 提供安全認(rèn)證機(jī)制。 可以對訪問進(jìn)行監(jiān)控和限制,保證系統(tǒng)安全。
響應(yīng)式編程:
- 基于 Spring WebFlux 構(gòu)建,實(shí)現(xiàn)非阻塞的 API 調(diào)用,提高系統(tǒng)吞吐量。
監(jiān)控和追蹤:
- 通過集成 Spring Boot Actuator 進(jìn)行運(yùn)行時監(jiān)控。
- 支持分布式追蹤(如 Sleuth 和 Zipkin),幫助追蹤請求流動。
應(yīng)用場景
- 微服務(wù)架構(gòu): 在微服務(wù)架構(gòu)中,作為服務(wù)的入口,聚合多個服務(wù)的 API。
- API 管理: 提供統(tǒng)一的 API 接入點(diǎn),簡化客戶端的訪問方式。
- 安全層: 集中管理微服務(wù)的安全措施,對外提供單一的認(rèn)證和授權(quán)方式。
配置文件參考:
spring.application.name=nacos-demo server.port=8080 spring.cloud.nacos.config.username=nacos spring.cloud.nacos.config.password=nacos spring.cloud.nacos.config.contextPath=/nacos # 設(shè)置配置中心服務(wù)端地址 spring.cloud.nacos.config.server-addr=localhost:8848 # Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,請不要填寫這個值,直接留空即可 spring.cloud.nacos.config.namespace=nacos-demo spring.config.import=nacos:datatest.properties?refresh=true # Nacos幫助文檔: https://nacos.io/zh-cn/docs/concepts.html # Nacos認(rèn)證信息 spring.cloud.nacos.discovery.username=nacos spring.cloud.nacos.discovery.password=nacos # Nacos 服務(wù)發(fā)現(xiàn)與注冊配置,其中子屬性 server-addr 指定 Nacos 服務(wù)器主機(jī)和端口 spring.cloud.nacos.discovery.server-addr=localhost:8848 # 注冊到 nacos 的指定 namespace,默認(rèn)為 public spring.cloud.nacos.discovery.namespace=nacos-demo
spring.application.name=gateway server.port=9091 knife4j.gateway.discovery.enabled=true knife4j.gateway.enabled=true knife4j.gateway.tags-sorter=order knife4j.gateway.operations-sorter=order knife4j.gateway.strategy=discover spring.cloud.nacos.config.username=nacos spring.cloud.nacos.config.password=nacos spring.cloud.nacos.config.contextPath=/nacos spring.cloud.nacos.config.server-addr=localhost:8848 spring.config.import=nacos:datatest.properties?refresh=true spring.cloud.nacos.discovery.username=nacos spring.cloud.nacos.discovery.password=nacos spring.cloud.nacos.discovery.server-addr=localhost:8848 spring.cloud.nacos.discovery.namespace=nacos-demo spring.cloud.gateway.globalcors.cors-configurations.[/**].allowed-origin-patterns=* spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedHeaders=* spring.cloud.gateway.globalcors.cors-configurations.[/**].allowCredentials=true spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[0]=GET spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[1]=POST spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[2]=PUT spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[3]=OPTIONS spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[4]=DELETE spring.cloud.gateway.discovery.locator.enabled=true spring.cloud.gateway.routes[0].id=nacos-demo spring.cloud.gateway.routes[0].uri=lb://nacos-demo spring.cloud.gateway.routes[0].predicates[0]=Path=/nacos_demo/** spring.cloud.gateway.routes[0].filters[0]=StripPrefix=1
依賴參考:
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-gateway-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
</dependencies> <dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-gateway-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>annotationProcessor</scope>
</dependency>
</dependencies>(后續(xù)有遇到問題再添加)
聲明:如本內(nèi)容中存在錯誤或不準(zhǔn)確之處,歡迎指正。轉(zhuǎn)載時請注明原作者信息(麻辣香蟈蟈)。
到此這篇關(guān)于Java Nacos與Gateway的使用的文章就介紹到這了,更多相關(guān)Java Nacos與Gateway使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows下zookeeper配置java環(huán)境變量的方法
今天小編就為大家分享一篇關(guān)于windows下zookeeper配置java環(huán)境變量的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
基于Java實(shí)現(xiàn)的Dijkstra算法示例
這篇文章主要介紹了基于Java實(shí)現(xiàn)的Dijkstra算法示例,一個比較典型的算法示例,需要的朋友可以參考下2014-07-07
Java索引越界異常Exception java.lang.IndexOutOfBoundsException
本文主要介紹了Java索引越界異常Exception java.lang.IndexOutOfBoundsException的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Spring AI 使用本地 Ollama Embeddings的操作方法
使用 OpenAI 的 Embeddings 接口是有費(fèi)用的,如果想對大量文檔進(jìn)行測試,使用本地部署的 Embeddings 就能省去大量的費(fèi)用,所以我們嘗試使用本地的 Ollama Embeddings,這篇文章主要介紹了Spring AI 使用本地 Ollama Embeddings,需要的朋友可以參考下2024-05-05
Java 中使用Spring Security的實(shí)例詳解
Spring Security是一款強(qiáng)大的安全框架,可以幫助用戶保護(hù)Web應(yīng)用程序和REST API的安全性,這篇文章主要介紹了Java 中如何使用Spring Security,需要的朋友可以參考下2023-06-06
Java利用apache ftp工具實(shí)現(xiàn)文件上傳下載和刪除功能
這篇文章主要為大家詳細(xì)介紹了Java利用apache ftp工具實(shí)現(xiàn)文件上傳下載、刪除功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06
Spring Boot2.0 @ConfigurationProperties使用詳解
這篇文章主要介紹了Spring Boot2.0 @ConfigurationProperties使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11

