🏆🏆🏆教程全知識點簡介:Docker實用篇 0.學習目標 1.初識Docker 1.2.Docker和虛擬機的區別 2.Docker的基本操作 2.1.鏡像操作 2.1.3.案例1-拉取、查看鏡像 2.1.5.練習 3.Dockerfile自定義鏡像 3.3.構建Java項目 3.4.小結 4.Docker-Compose 4.3.部署微服務集羣 4.3.1.compose文件 4.3.3.打包 設置docker鏡像源 關閉 禁止開機啓動防火牆 安裝 修改權限 補全命令 RabbitMQ 1.初識MQ 1.1.同步和異步通訊 1.2.技術對比: 2.快速入門 2.2.RabbitMQ消息模型 2.3.導入Demo工程 2.4.入門案例 2.4.1.publisher實現 3.1.3.測試 3.2.WorkQueue 3.2.1.消息發送 3.2.4.能者多勞 3.3.發佈/訂閲 3.4.Fanout 3.4.1.聲明隊列和交換機 3.5.Direct 3.6.Topic 3.6.1.説明 SpringCloud01 1.認識微服務 1.1.單體架構 2.服務拆分和遠程調用 2.1.服務拆分原則 2.3.實現遠程調用案例 2.3.1.案例需求: 2.3.2.註冊RestTemplate 3)啓動多個user-service實 4.Ribbon負載均衡 4.1.負載均衡原理 4.2.源碼跟蹤 1)LoadBalancerIntercepor 3)負載均衡策略IRule 5.Nacos註冊中心 5.1.認識和安裝Nacos 5.2.服務註冊到nacos 1)引入依賴 2)配置nacos地址 3)重啓 5.3.服務分級存儲模型 5.3.2.同集羣優先的負載均衡 5.4.權重配置 Nacos安裝指南 1.Windows安裝 1.1.下載安裝包 1.2.解壓 1.3.端口配置 1.4.啓動 1.5.訪問 2.Linux安裝 2.1.安裝JDK 3.Gateway服務網關 3.1.為什麼需要網關 3.3.斷言工廠
<!-- start:bj1 -->
📚📚倉庫code.zip 👉直接-->: https://gitlab.com/yiqing112/backend/-/blob/main/Spring/Sprin... 🍅🍅
<!-- end:bj1 -->
✨ 本教程項目亮點
🧠 知識體系完整:覆蓋從基礎原理、核心方法到高階應用的全流程內容
💻 全技術鏈覆蓋:完整前後端技術棧,涵蓋開發必備技能
🚀 從零到實戰:適合 0 基礎入門到提升,循序漸進掌握核心能力
📚 豐富文檔與代碼示例:涵蓋多種場景,可運行、可複用
🛠 工作與學習雙參考:不僅適合系統化學習,更可作為日常開發中的查閲手冊
🧩 模塊化知識結構:按知識點分章節,便於快速定位和複習
📈 長期可用的技術積累:不止一次學習,而是能伴隨工作與項目長期參考
🎯🎯🎯全教程總章節
🚀🚀🚀本篇主要內容
3.Gateway服務網關
Spring Cloud Gateway 是 Spring Cloud 的一個全新項目,該項目是基於 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等響應式編程和事件流技術開發的網關,它旨在為微服務架構提供一種簡單有效的統一的 API 路由管理方式。
3.1.為什麼需要網關
Gateway網關是 服務的守門神,所有微服務的統一入口。
網關的核心功能特性:
- 請求路由
- 權限控制
- 限流
架構圖:
權限控制:網關作為微服務入口,需要校驗用户是是否有請求資格,如果沒有則進行攔截。
路由和負載均衡:一切請求都必須先經過gateway,但網關不處理業務,而是根據某種規則,把請求轉發到某個微服務,這個過程叫做路由。當然路由的目標服務有多個時,還需要做負載均衡。
限流:當請求流量過高時,在網關中按照下流的微服務能夠接受的速度來放行請求,避免服務壓力過大。
在SpringCloud中網關的實現包括兩種:
- gateway
- zuul
Zuul是基於Servlet的實現,屬於阻塞式編程。而SpringCloudGateway則是基於Spring5中提供的WebFlux,屬於響應式編程的實現,具備更好的性能。
3.2.gateway快速入門
下面, 就演示下網關的基本路由功能。基本步驟如下:
- 創建SpringBoot工程gateway,引入網關依賴
- 編寫啓動類
- 編寫基礎配置和路由規則
- 啓動網關服務進行測試
1)創建gateway服務,引入依賴
創建服務:
引入依賴:
<!--網關-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服務發現依賴-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2)編寫啓動類
package cn.itcast.gateway;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class GatewayApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayApplication.class, args);
}
}
3)編寫基礎配置和路由規則
創建application.yml文件,內容如下:
server:
port: 10010 # 網關端口
spring:
application:
name: gateway # 服務名稱
cloud:
nacos:
server-addr: localhost:8848 # nacos地址
gateway:
routes: # 網關路由配置
- id: user-service # 路由id,自定義,只要唯一即可
# uri: http://127.0.0.1:8081 # 路由的目標地址 http就是固定地址
uri: lb://userservice # 路由的目標地址 lb就是負載均衡,後面跟服務名稱
predicates: # 路由斷言,也就是判斷請求是否符合路由規則的條件
- Path=/user/** # 這個是按照路徑匹配,只要以/user/開頭就符合要求
將符合Path 規則的一切請求,都到 uri參數指定的地址。
本例中, 將 /user/**開頭的請求,到lb://userservice,lb是負載均衡,根據服務名拉取服務列表,實現負載均衡。
4)重啓測試
重啓網關,訪問http://localhost:10010/user/1時,符合/user/**規則,請求轉發到uri:http://userservice/user/1,得到了結果:
5)網關路由的流程圖
整個訪問的流程如下:
總結:
網關搭建步驟:
- 創建項目,引入nacos服務發現和gateway依賴
- 配置application.yml,包括服務基本信息、nacos地址、路由
路由配置包括:
- 路由id:路由的唯一標示
- 路由目標(uri):路由的目標地址,http代表固定地址,lb代表根據服務名負載均衡
- 路由斷言(predicates):判斷路由的規則,
- 路由過濾器(filters):對請求或響應做處理
接下來,就重點來學習路由斷言和路由過濾器的詳細知識
3.3.斷言工廠
在配置文件中寫的斷言規則只是字符串,這些字符串會被Predicate Factory讀取並處理,轉變為路由判斷的條件
例如Path=/user/**是按照路徑匹配,這個規則是由
org.springframework.cloud.gateway.handler.predicate.PathRoutePredicateFactory類來
處理的,像這樣的斷言工廠在SpringCloudGateway還有十幾個:
| 名稱 | 説明 | 示例 |
|---|
🚀✨ (未完待續)項目系列下一章
📚下一篇 將進入更精彩的環節!
🔔 記得收藏 & 關注,第一時間獲取更新!
🍅 一起見證整個系列逐步成型的全過程。