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