javascript
istio springcloud_手牵手一起学Springcloud(1)微服务这么流行,你理解了嘛?
在前一段時(shí)間,我們實(shí)驗(yàn)室的項(xiàng)目開(kāi)始變得越來(lái)越麻煩,代碼也越來(lái)越臃腫,一個(gè)人兼顧前后端的全棧開(kāi)發(fā),實(shí)在是力不從心,沒(méi)有一點(diǎn)點(diǎn)幸福感,于是迫切的想要解放生產(chǎn)力,放飛自我,因此開(kāi)始決定重構(gòu)項(xiàng)目,改用之前學(xué)習(xí)過(guò)但是一直沒(méi)用過(guò)的微服務(wù)架構(gòu)。這篇文章將從以下幾個(gè)角度來(lái)學(xué)習(xí)Springcloud入門的一些相關(guān)知識(shí)。
1、微服務(wù)是什么?
2、微服務(wù)和微服務(wù)架構(gòu)的區(qū)別是什么?
3、微服務(wù)技術(shù)有什么?
4、微服務(wù)的優(yōu)缺點(diǎn)是什么?
5、為什么選擇Springcloud作為微服務(wù)架構(gòu)?
在寫(xiě)本系列文章之前,我也看了很多網(wǎng)上的大佬那些微服務(wù)系列的文章,他們寫(xiě)的都非常好,別人問(wèn)我關(guān)于一些微服務(wù)的技術(shù)文章時(shí),我也都會(huì)把那些我認(rèn)為寫(xiě)的好的文章推送給他們,但是存在一個(gè)問(wèn)題,那就是剛剛接觸微服務(wù)的同學(xué),一開(kāi)始覺(jué)得寫(xiě)的通俗易懂而且確實(shí)很簡(jiǎn)單,但是越往后看越看不懂。因此才萌生出自己寫(xiě)一套循序漸進(jìn)的文章。
一、從單體結(jié)構(gòu)說(shuō)起
本來(lái)想以自己的項(xiàng)目為例,但是由于涉及一些學(xué)校不能外傳的信息,所以換一個(gè)常見(jiàn)的例子。我們以餐廳賣飯為例
從上圖我們會(huì)發(fā)現(xiàn),收銀、做飯、洗碗等操作都由小張一個(gè)人完成。隨著服務(wù)項(xiàng)目的不斷復(fù)雜,顧客人數(shù)的不斷增多,這會(huì)帶來(lái)大量的問(wèn)題。
1、技術(shù)太復(fù)雜,有時(shí)候往往會(huì)牽一發(fā)而動(dòng)全身,代碼耦合性太大,修改起來(lái)很麻煩。
2、拓展能力弱,功能模塊代碼緊耦合,無(wú)人進(jìn)行有效拓展
3、維護(hù)成本太高,一旦出一個(gè)問(wèn)題,修改很難受。
當(dāng)然還有很多很多的缺點(diǎn),為此繼續(xù)一種技術(shù)去改善這個(gè)問(wèn)題。什么技術(shù)呢?就是我們今天所說(shuō)的微服務(wù)架構(gòu)。
二、什么是微服務(wù)
由于業(yè)界還沒(méi)有對(duì)微服務(wù)的概念有一個(gè)統(tǒng)一的解釋,但是你可以這樣去理解,微服務(wù)其實(shí)就是一種思想,這個(gè)思想是:考慮如何把一個(gè)復(fù)雜的項(xiàng)目拆分成一個(gè)個(gè)獨(dú)立的小項(xiàng)目。就好比是電腦中的進(jìn)程,拆分成一個(gè)個(gè)小的線程一樣。
再舉個(gè)
現(xiàn)在,小張每一個(gè)服務(wù)業(yè)務(wù)都讓不同的人來(lái)負(fù)責(zé),這就大大簡(jiǎn)化了人的勞動(dòng)程度。
三、微服務(wù)和微服務(wù)架構(gòu)的區(qū)別是什么
他們倆的區(qū)別你可以這樣去理解,微服務(wù)就好比是指導(dǎo)思想,微服務(wù)架構(gòu)就是根據(jù)這個(gè)指導(dǎo)思想實(shí)施的方案。就好比是古代的時(shí)候,皇帝說(shuō)要減輕賦稅,然后下面的大臣根據(jù)這個(gè)指導(dǎo)思想去實(shí)施具體的方案。
當(dāng)然這里還有更加標(biāo)準(zhǔn)化的回答:
微服務(wù)架構(gòu)是?種架構(gòu)模式,它提倡將單?應(yīng)?程序劃分成?組?的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為?戶提供最終價(jià)值。每個(gè)服務(wù)運(yùn)?在其獨(dú)?的進(jìn)程中,采?輕量級(jí)的通信機(jī)制互相協(xié)作
如果你能理解剛剛皇帝的那個(gè)例子,應(yīng)該就能理解微服務(wù)架構(gòu)的含義了。
四、微服務(wù)技術(shù)有什么?
微服務(wù)的技術(shù)還是很多的,python、c++等等都有,不過(guò)因?yàn)槭菍W⒂趈ava,所以還是主要聊聊java中的微服務(wù)技術(shù)。
Dubbo被重啟之后又煥發(fā)出了新的光彩,但是跨語(yǔ)言支持不足是它的一個(gè)弱項(xiàng),另外功能比較少,之后服務(wù)治理相關(guān)的技術(shù),完全用好這個(gè)框架的門檻比較高。這對(duì)于初學(xué)者來(lái)說(shuō)開(kāi)發(fā)難度還是比較大的。目前dubbo已經(jīng)被阿里捐獻(xiàn)給Apache了,Apache也正在致力打造屬于dubbo的微服務(wù)體系,但是從這兩年多的發(fā)展情況來(lái)看,并不樂(lè)觀。
Netflix微服務(wù)架構(gòu)經(jīng)過(guò)多年生產(chǎn)驗(yàn)證,最終形成一整套開(kāi)源的微服務(wù)基礎(chǔ)組件,統(tǒng)稱 NetflixOSS,Netflix 的成功經(jīng)驗(yàn)開(kāi)始被業(yè)界認(rèn)可并推崇,于是Pivotal 將 NetflixOSS 開(kāi)源微服務(wù)組件集成到其 Spring 體系,推出 Spring Cloud 微服務(wù)開(kāi)發(fā)技術(shù)棧。隨著時(shí)間的推移目前基本上也占據(jù)了半壁江山。本系列教程也會(huì)圍繞著Springcloud來(lái)展開(kāi)。
其他的微服務(wù)技術(shù)比如springcloud Alibaba、istio等等在這里就不對(duì)比了,沒(méi)有大規(guī)模使用的還有待觀察。一旦流行了再學(xué)習(xí)也不遲。
五、微服務(wù)的優(yōu)缺點(diǎn)是什么?
既然要使用微服務(wù),微服務(wù)有什么優(yōu)點(diǎn)呢?他的優(yōu)缺點(diǎn)你可以對(duì)比著單體結(jié)構(gòu)的缺點(diǎn)來(lái)記憶。
1、維護(hù)起來(lái)比較簡(jiǎn)單,畢竟每一個(gè)服務(wù)只關(guān)注于項(xiàng)目中的一個(gè)小模塊
2、拓展性好,有新功能需要添加的時(shí)候,那就再建立一個(gè)微服務(wù),和之前的互不干擾。
3、每一個(gè)微服務(wù)都有著自己的數(shù)據(jù)庫(kù)
優(yōu)點(diǎn)真的是太多了,能想到的就這些吧。
當(dāng)然還有很多缺點(diǎn),咳咳,缺點(diǎn)不說(shuō)太多,要不然你覺(jué)得微服務(wù)不好了,缺點(diǎn)那就是一個(gè)個(gè)微服務(wù)構(gòu)成了分布式系統(tǒng),出現(xiàn)了分布式系統(tǒng)的各種問(wèn)題。
六、為什么選擇Springcloud?
說(shuō)實(shí)話,一開(kāi)始我在認(rèn)識(shí)微服務(wù)的時(shí)候,完全不理解他的特點(diǎn)是什么含義,只有當(dāng)學(xué)習(xí)了一遍之后,重新回過(guò)頭來(lái)看,才發(fā)現(xiàn),原來(lái)是這樣呀。不過(guò)在這里你最好先記住。否則以后你連回頭的想法都沒(méi):
1、約定大于配置。
2、適用于各種環(huán)境
3、整合了Springboot的優(yōu)點(diǎn)
4、輕量級(jí)組件
5、功能齊全
6、靈活
優(yōu)點(diǎn)太多,數(shù)不過(guò)來(lái),所以你先記住這幾條,看了幾本書(shū)發(fā)現(xiàn)基本上也是這樣介紹的。
這篇文章是我的微服務(wù)系列的第一篇文章,下一篇文章將主要開(kāi)始介紹Springcloud的每一個(gè)組件的功能,以及為什么要有這樣一個(gè)組件。
總結(jié)
以上是生活随笔為你收集整理的istio springcloud_手牵手一起学Springcloud(1)微服务这么流行,你理解了嘛?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python切面异常处理_Spring项
- 下一篇: c# opencv 轮廓检测_基于Ope