Java?Nacos與Gateway的使用操作筆記
一、前言
- 近期學(xué)習(xí)Gateway與Nacos的實操筆記總結(jié)
- 通過Nacos觀察gateway的作用
二、學(xué)習(xí)內(nèi)容:
- Gateway實操學(xué)習(xí)
- Nacos實操學(xué)習(xí)
- Knif4j配置
- 均衡負(fù)載
- 灰度發(fā)布策略
- 微服務(wù)知識學(xué)習(xí)
三、問題描述
- 實操經(jīng)驗不豐富
四、解決方案:
4.1 父子項目的設(shè)置
4.1.1父工程配置
- 加入Package配置
- 加入Moudle配置子項目
- 刪除依賴
4.1.2 子工程配置
刪除的都已有父工程管理
- 刪除配置
- 刪除依賴管理
- 指定父工程
4.2 微服務(wù)、負(fù)載均衡與灰度發(fā)布
4.2.1 新建微服務(wù)
- 網(wǎng)關(guān)服務(wù)注意一定要加上gateway與負(fù)載均衡依賴
網(wǎng)關(guān)名字記得改
為了方便觀察運行時把SpringBoot加入Services管理
運行端口為8080的服務(wù)
新建服務(wù)
之后修改要改的端口與內(nèi)容再次運行即可
端口要改不然沖突
我們發(fā)現(xiàn)Nacos的nacos-demo服務(wù)實例已變?yōu)閮蓚€
看上張圖片,因為我們又運行了一個服務(wù)
微服務(wù)配置注意看Path
測試通過網(wǎng)關(guān)訪問服務(wù)實例
注意測試負(fù)載均衡訪問的是微服務(wù)所以端口號是9091同時路徑別忘寫
五、總結(jié):
5.1 學(xué)習(xí)總結(jié):
不管誰訪問經(jīng)由網(wǎng)關(guān)即可訪問實例
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 集成,實現(xiàn)對后端服務(wù)的負(fù)載均衡。
- 可以配置不同的策略,如輪詢、隨機等。
斷路器支持:
- 可以與 Spring Cloud Circuit Breaker 集成,提供服務(wù)熔斷功能,提高系統(tǒng)的健壯性。
安全與認(rèn)證:
- 支持集成 Spring Security,為 API 提供安全認(rèn)證機制。 可以對訪問進(jìn)行監(jiān)控和限制,保證系統(tǒng)安全。
響應(yīng)式編程:
- 基于 Spring WebFlux 構(gòu)建,實現(xiàn)非阻塞的 API 調(diào)用,提高系統(tǒng)吞吐量。
監(jiān)控和追蹤:
- 通過集成 Spring Boot Actuator 進(jìn)行運行時監(jiān)控。
- 支持分布式追蹤(如 Sleuth 和 Zipkin),幫助追蹤請求流動。
應(yīng)用場景
- 微服務(wù)架構(gòu): 在微服務(wù)架構(gòu)中,作為服務(wù)的入口,聚合多個服務(wù)的 API。
- API 管理: 提供統(tǒng)一的 API 接入點,簡化客戶端的訪問方式。
- 安全層: 集中管理微服務(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ù)器主機和端口 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)文章
Java使用selenium爬取b站動態(tài)的實現(xiàn)方式
本文主要介紹了Java使用selenium爬取b站動態(tài)的實現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01圖解Java?ReentrantLock的條件變量Condition機制
想必大家都使用過wait()和notify()這兩個方法把,他們主要用于多線程間的協(xié)同處理。而RenentrantLock也支持這樣條件變量的能力,而且相對于synchronized?更加強大,能夠支持多個條件變量,本文就來詳細(xì)說說2022-10-10SpringBoot+Quartz實現(xiàn)定時任務(wù)的代碼模版分享
quartz?是一款開源且豐富特性的Java?任務(wù)調(diào)度庫,用于實現(xiàn)任務(wù)調(diào)度和定時任務(wù),本文主要和大家分享一個SpringBoot整合Quartz實現(xiàn)定時任務(wù)的代碼模版,需要的可以參考一下2023-06-06Java中的數(shù)組復(fù)制(clone與arraycopy)代碼詳解
這篇文章主要介紹了Java中的數(shù)組復(fù)制(clone與arraycopy)代碼詳解,本文并未全部介紹數(shù)組復(fù)制的幾種方式,僅對clone和copy的相關(guān)內(nèi)容進(jìn)行了解析,具有一定參考價值,需要的朋友可以了解下。2017-11-11Mybatis基于MapperScan注解的動態(tài)代理加載機制詳解
這篇文章主要介紹了Mybatis基于MapperScan注解的動態(tài)代理加載機制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-01-01