2流高手速成記(之六):從SpringBoot到SpringCloudAlibaba
- 2022 年 10 月 31 日
- 筆記
- Java/Spring, spring, Spring Boot, SpringCloud, springcloudalibaba
咱們接上回 2流高手速成記(之五):Springboot整合Shiro實現安全管理 – 14號程式設計師 – 部落格園 (cnblogs.com)
身邊常有朋友說:小項目用PHP、大項目用Java(這裡絕無貶低PHP技術棧之意),曾經有興趣對比過兩種語言的技術棧
PHP有TP、Laravel這樣成熟的企業級框架,Laravel更是秉持匠人精神,利用PHP諸多全新的特性,打造出了現代化的PHP全棧框架
Java則憑藉SpringBoot諸多的便捷特性,以及idea這種超智慧化ide的加持,相比於傳統的JavaEE開發直接拔高了幾個位次
二者在Web企業級應用開發領域各自佔據了一席之地,設計思想層面也存在諸多的相似之處,如果非要找尋二者決定性的差異,我認為答案就在於——SpringCloud的存在!
從SpringBoot到SpringCloud/SpringCloudAlibaba,從單節點到多節點/微服務,完成這樣一次蛻變,是我所期待已久的!
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、配置中心、消息匯流排、負載均衡、斷路器、數據監控等,都可以用Spring Boot的開發風格做到一鍵啟動和部署。Spring Cloud並沒有重複製造輪子,它只是將各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,通過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分散式系統開發工具包。——來自百度百科
有人問SpringCloud到底是什麼?我們從百科對於SpringCloud的解讀不難看出幾個關鍵資訊:
1. SpringCloud是一系列框架的有序集合
2. SpringCloud與SpringBoot無縫集成,使用流程大幅簡化,可基於SpringBoot實現一鍵部署
3. SpringCloud主要用於微服務及分散式開發,包含服務發現、配置中心、負載均衡等諸多內容
OK,現在SpringCloud是什麼清楚了,那我在標題中提到的SpringCloudAlibaba又是什麼?
一句話概括——SpringCloudAlibaba是SpringCloud原基礎上的擴展
SpringCloudAlibaba來自中國大名鼎鼎的阿里巴巴技術團隊,他們重新提取微服務框架設計理念的精髓,在原SpringCloud基礎之上派生出了新的技術棧
SpringCloudAlibaba既基於SpringCloud的設計理念,二者又在工具鏈層面彼此獨立,我們來看他們的區別
名稱 | SpringCloud | SpirngCloudAlibaba |
---|---|---|
註冊中心 | Eureka、Consul | Nacos |
配置中心 | SpringCloud Config | Nacos |
網關 | SpringCloud Zull | SpringCloud Gateway |
負載均衡 | Ribbon | Loadbalabcer |
熔斷降級 | Hystrix | Sentinel |
服務調用 | Feign | OpenFeign |
服務匯流排 | Bus | Nacos |
消息中間件 | 無(第三方替代方案:rabbitmq) | RecketMQ |
分散式解決方案 | 無(第三方替代方案:2pc) | Seata |
從本節開始,我們會基於SpringCloudAlibaba做一系列講解,原生SpringCloud相關技術棧放在之後講解
1. Nacos
SpringCloudAlibaba體系中第一個重要角色來了!:
從上表SpringCloudAlibaba工具鏈構成中,我們不難發現Nacos被多次提及
Nacos在整個SpringCloudAlibaba體系中擔當了多個重要角色,它既是註冊中心,又是配置中心,還是服務匯流排
這些概念不理解?沒關係,大家會在後續實際使用過程中逐漸加深認知——這是我個人很喜歡的一種風格,概念聽別人講再多,不如自己實際上手體驗一次,每個人自然形成自己獨有的認知
我們先移步至Nacos官網://nacos.io/zh-cn/index.html
前往Github下載最新的Release版本解壓即可,我們到bin目錄下執行命令
startup.cmd -m standalone -f naming
以單機模式啟動Nacos,而後訪問 //127.0.0.1:8848/nacos/ 將進入登錄介面:
初始默認帳號nacos,密碼nacos,登錄後看到主介面
大家可以看到,最開始這裡是沒有內容的
2. Nacos作為註冊中心
新建一個SpringCloudAlibaba工程
我們依然延續第一節(2流高手速成記(之一):初識SpringBoot及基礎項目構建 – 14號程式設計師 – 部落格園 (cnblogs.com))中這種構建工程的方式
區別在於這次我們要重點勾選SpringCloud及SpringCloudAlibaba相關依賴項
之後我們將獲得一個與之前SpringBoot模板略有不同的工程目錄結構
我們看到工程的resources目錄下額外多出了一個bootstrap.properties文件,兩個Nacos相關的Configuration配置文件暫時用不到
pom.xml中也多出了相應的版本聲明及依賴項:
<properties> ...... <spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version> <spring-cloud.version>Hoxton.SR9</spring-cloud.version> </properties> ...... <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>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-dubbo</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency>
我們先修改下bootstrap.properties和application.properties中指向的nacos服務地址:(注意:兩個配置文件下的配置都要修改)
# 設置配置中心服務端地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
而後直接啟動工程,待工程啟動完畢後,刷新nacos主介面
我們將看到我們的應用已經成功【註冊】到Nacos服務中心
到這裡你是否有種恍然大悟的感覺?這就是Nacos所擔當的「註冊中心」的角色!
那麼我們將應用作為一個服務註冊到Nacos又有什麼作用呢?答案你或許已經猜到了——供其他應用調用!
這其中的機制我們留個懸念,下一節再講
3. Nacos作為配置中心
那麼nacos又是如何充當配置中心的作用?
還記得剛才多出來的那個bootstrap.properties嗎?現在我們可以來聊聊它的作用了
bootstrap.properties的載入時機要優先於application.properties,一般用於指定系統級的相關配置,其配置內容一般固定不變
藉助於bootstrap.properties,我們可以實現application.properties配置內容的「雲端化」
我們先來看bootstrap.properties的內容:
# Nacos認證資訊 spring.cloud.nacos.config.username=nacos spring.cloud.nacos.config.password=nacos spring.cloud.nacos.config.contextPath=/nacos # 設置配置中心服務端地址 spring.cloud.nacos.config.server-addr=127.0.0.1:8848 spring.cloud.nacos.config.namespace= # 應用名稱 spring.application.name=hellospringcloudalibaba
可以看到它主要包含了Nacos相關的配置資訊
最後應用名稱這部分是我後續補充的
之後我們便可以移除本地的application.properties,並將其內容遷移至Nacos
打開Nacos配置管理頁面,新增配置
我們重新啟動工程,發現在本地不存在application.properties配置的情況下,工程依然可以重新啟動,並正確載入遷移到Nacos的工程配置
這就是Nacos作為「配置中心」的作用!而這種雲端化配置的方式顯然要比application.properties本土化配置的方式更加靈活便捷
這就是Nacos在SpringCloudAlibaba體系之下所起到的核心作用,這裡其實也僅是點到為止,但相信你已經對這些概念有了一個大概的了解
以上
本節先是引出了微服務的概念,繼而闡述了SpringCloud以及SpringCloudAlibaba的區別,最後具體講解了Nacos作為SpringCloudAlibaba體系的核心組件所起到的作用
微服務領域的學問博大精深,本節僅是引出了概念而並未做深入討論;下一節我們將繼續挖掘SpringCloudAlibaba微服務更多的機制和用法
Dubbo框架將走進我們的視野!敬請期待~