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