時(shí)間5.13號(hào),最近確定了考研復(fù)試通過(guò)了,提前了找了老師,早早聯(lián)系上了我希望我接手實(shí)驗(yàn)室的工作,所以開(kāi)始學(xué)習(xí)Spring Cloud相關(guān)的知識(shí)。
1.什么是Spring Cloud?
之前有Spring Boot開(kāi)發(fā)經(jīng)驗(yàn)的人都知道,項(xiàng)目初期使用Spring Boot開(kāi)發(fā)是相當(dāng)輕松的,配置、依賴、數(shù)據(jù)庫(kù)、服務(wù)的實(shí)現(xiàn)可以說(shuō)是一氣呵成的。但這是業(yè)務(wù)比較簡(jiǎn)單的情況,隨著業(yè)務(wù)的復(fù)雜,單個(gè)項(xiàng)目的結(jié)構(gòu)也會(huì)越來(lái)越復(fù)雜,主要體現(xiàn)在以下幾點(diǎn):
- 代碼結(jié)構(gòu)混亂:多個(gè)業(yè)務(wù)需要多種服務(wù),服務(wù)的復(fù)雜導(dǎo)致代碼量增大,代碼的管理越來(lái)越復(fù)雜,版本的迭代也越來(lái)越復(fù)雜。
- 開(kāi)發(fā)效率降低:多個(gè)開(kāi)發(fā)人員開(kāi)發(fā)同一套代碼很難避免代碼沖突。開(kāi)發(fā)過(guò)程會(huì)伴隨著不斷解決沖突的過(guò)程,這會(huì)嚴(yán)重的影響開(kāi)發(fā)效率。
- 排查解決問(wèn)題成本高:線上業(yè)務(wù)發(fā)現(xiàn) bug,修復(fù) bug 的過(guò)程可能很簡(jiǎn)單。但是,由于只有一套代碼,需要重新編譯、打包、上線,成本很高。
Spring Cloud是一系列框架的集合,它利用Spring Boot的開(kāi)發(fā)便利性巧妙地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開(kāi)發(fā),如服務(wù)發(fā)現(xiàn)注冊(cè)、配置中心、智能路由、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開(kāi)發(fā)風(fēng)格做到一鍵啟動(dòng)和部署。
2.集群/分布式/微服務(wù)/SOA是什么?
2.1.集群
- 通過(guò)多臺(tái)計(jì)算機(jī)完成同一個(gè)工作,達(dá)到更高的效率。
- 兩機(jī)或多機(jī)內(nèi)容、工作過(guò)程等完全一樣。如果一臺(tái)死機(jī),另一臺(tái)可以起作用。
2.2.分布式
一個(gè)業(yè)務(wù)分拆多個(gè)子業(yè)務(wù),部署在不同的服務(wù)器上(不同的服務(wù)器,運(yùn)行不同的代碼,為了同一個(gè)目的)。
2.3.分布式集群
既差分業(yè)務(wù),也使用多臺(tái)計(jì)算機(jī)完成同一個(gè)工作。
2.4.微服務(wù)
在分布式集群的基礎(chǔ)上,各服務(wù)之間的隔離度自治度更高,各服務(wù)可獨(dú)立應(yīng)用,組合服務(wù)也可系統(tǒng)應(yīng)用。
3.和Spring Boot的關(guān)系
- Spring Boot 是 Spring 的一套快速配置腳手架,可以基于Spring Boot 快速開(kāi)發(fā)單個(gè)微服務(wù),Spring Cloud是一個(gè)基于Spring Boot實(shí)現(xiàn)的云應(yīng)用開(kāi)發(fā)工具。Spring -> Spring Boot > Spring Cloud 這樣的關(guān)系。
- Spring Boot可以離開(kāi)Spring Cloud獨(dú)立使用開(kāi)發(fā)項(xiàng)目,但是Spring Cloud離不開(kāi)Spring Boot,屬于依賴的關(guān)系
- Spring Boot專注于快速、方便集成的單個(gè)個(gè)體微服務(wù),Spring Cloud是關(guān)注全局的服務(wù)治理框架
- Spring Boot使用了默認(rèn)大于配置的理念,很多集成方案已經(jīng)幫你選擇好了,能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot來(lái)實(shí)現(xiàn)的
參考資料
- Spring Cloud入門(mén)-十分鐘了解Spring Cloud -CSDN
https://blog.csdn.net/ThinkWon/article/details/103715146 - Spring cloud應(yīng)該怎么入門(mén)? - 知乎
https://www.zhihu.com/question/283286745