微服務(wù)架構(gòu)淺析及應(yīng)用場(chǎng)景

好久沒有寫文章了洽损,主要是每天閑下來(lái)的時(shí)間太少,好不容易這個(gè)周末閑下來(lái)沒什么事情革半,于是就買了《Spring Boot實(shí)戰(zhàn)》和《Spring Cloud微服務(wù)實(shí)戰(zhàn)》兩本書來(lái)學(xué)習(xí)一下微服務(wù)架構(gòu)碑定,也算是為后面的項(xiàng)目做準(zhǔn)備或者技術(shù)儲(chǔ)備吧。下面放一張兩本書的照片又官,省得想看的人找不到延刘,個(gè)人感覺這兩本書相當(dāng)不錯(cuò),想了解微服務(wù)架構(gòu)這兩本書加實(shí)踐就足夠了六敬。

《Spring Boot實(shí)戰(zhàn)》和《Spring Cloud微服務(wù)實(shí)戰(zhàn)》

??我也只是走馬觀花看了一遍全書碘赖,然后回來(lái)跟著書一點(diǎn)點(diǎn)實(shí)踐了一部分,了解的還不是很深入外构,所以哪里有理解不正確的地方歡迎指正普泡。這篇文章主要是對(duì)微服務(wù)和微服務(wù)架構(gòu)了解個(gè)大概,下一篇會(huì)寫深入一點(diǎn)的比如自定義配置等內(nèi)容审编。

Spring Boot

要了解微服務(wù)架構(gòu)撼班,首先要了解的就是Spring Boot。這里吐槽一下垒酬,java這個(gè)Spring終于出了個(gè)讓我不惡心的東西砰嘁,就是這個(gè)Spring Boot件炉。因?yàn)槲抑案愕氖?net一套,后來(lái)接觸java別的沒感覺啥矮湘,就這配置文件一堆一堆真是讓我惡心透了斟冕。
  可能Javaer們要噴我,說(shuō)什么.Net很簡(jiǎn)單啊缅阳,項(xiàng)目一新建就可以用啦宫静,沒啥技術(shù)含量。其實(shí)何必呢券时,好比你打電話點(diǎn)一份披薩孤里,Spring以前是什么情況?開始就是告訴廚師怎么做橘洞、放什么調(diào)料捌袜、怎么放、放多少等等啥都你去決定炸枣。而.net呢虏等?直接就是給你一個(gè)對(duì)應(yīng)口味的披薩,需要定制可以自己提适肠。
  所以吧霍衫,不是說(shuō)配置文件多是毛病,只是大多數(shù)人用框架的目的就是上來(lái)就寫業(yè)務(wù)代碼侯养,給我個(gè)默認(rèn)配置好的就好了敦跌,哪里不合我意我就改哪里。
  Spring Boot就做的很好逛揩,省去了很多麻煩的XML配置柠傍,一切依賴項(xiàng)直接在Maven配置文件的dependencies里面加上,內(nèi)部就自動(dòng)給你配置好了辩稽。這也就是為什么它很適合作為微服務(wù)的原因之一惧笛。
  另一個(gè)原因就是它可以自宿主,也就是可以不需要tomcat逞泄,直接運(yùn)行患整。執(zhí)行Maven Install之后會(huì)生成jar可執(zhí)行程序,直接在命令行執(zhí)行 $java -jar ***.jar 就可以通過(guò)瀏覽器訪問了喷众。當(dāng)然各谚,也可自己配置生成war包,然后在tomcat中運(yùn)行侮腹。
  Spring Boot的優(yōu)點(diǎn)不止這些嘲碧,還有起步依賴、Spring Boot CLI父阻、Actuator等愈涩,而且雖然很多東西都已經(jīng)配置好望抽,但是也可以自定義配置來(lái)覆蓋默認(rèn)配置,并且都是通過(guò)寫代碼的方式而不是XML配置文件的方式履婉∶焊荩總之它是一個(gè)為微服務(wù)而生的輕量級(jí)框架。
  關(guān)于Spring Boot的初體驗(yàn)可以從start.spring.io開始毁腿。

Spring Cloud 微服務(wù)架構(gòu)

上面介紹的Spring Boot是微服務(wù)辑奈,這里的微服務(wù)架構(gòu)才是重點(diǎn)。那什么是微服務(wù)架構(gòu)呢已烤?

它的主旨是將一個(gè)原本獨(dú)立的系統(tǒng)拆分成多個(gè)微小型服務(wù)鸠窗,這些小型服務(wù)都在各自獨(dú)立的進(jìn)程中運(yùn)行,服務(wù)之間通過(guò)基于HTTP的RESTful API進(jìn)行協(xié)作胯究。被拆分成的每一個(gè)小型服務(wù)都圍繞著系統(tǒng)中的某一項(xiàng)或一些耦合度較高的業(yè)務(wù)功能進(jìn)行構(gòu)建稍计,并且每個(gè)服務(wù)都維護(hù)著自身的數(shù)據(jù)存儲(chǔ)、業(yè)務(wù)開發(fā)裕循、自動(dòng)化測(cè)試案例以及獨(dú)立部署機(jī)制臣嚣。由于有了輕量級(jí)的通信協(xié)作基礎(chǔ),所以這些微服務(wù)可以用不同的語(yǔ)言來(lái)編寫----《Spring Cloud微服務(wù)實(shí)戰(zhàn)》

先舉幾個(gè)實(shí)際情況來(lái)說(shuō)說(shuō)我為什么要考慮微服務(wù)架構(gòu):
   1剥哑、 我們的整個(gè)系統(tǒng)目前是所有業(yè)務(wù)都在一個(gè)項(xiàng)目里面硅则,而且不同客戶對(duì)不同業(yè)務(wù)模塊的需求和取舍都不同,每個(gè)業(yè)務(wù)模塊也不能獨(dú)立出來(lái)復(fù)用株婴,這樣就導(dǎo)致一個(gè)項(xiàng)目改來(lái)改去N多個(gè)版本怎虫,管理起來(lái)非常麻煩。
   2督暂、有些業(yè)務(wù)模塊是非常重要且常用的揪垄,有些是不常用的,但在整個(gè)系統(tǒng)中一旦其中一個(gè)不常用模塊出現(xiàn)問題可能會(huì)導(dǎo)致整個(gè)系統(tǒng)不可用逻翁。
   3、團(tuán)隊(duì)中有人對(duì)業(yè)務(wù)A熟悉捡鱼,有人對(duì)業(yè)務(wù)B熟悉八回,也有人對(duì)業(yè)務(wù)C熟悉。在這種情況下業(yè)務(wù)A驾诈、B缠诅、C都在一個(gè)系統(tǒng)中且有關(guān)聯(lián)時(shí)往往會(huì)耦合性比較大,造成的溝通也比較復(fù)雜乍迄。除此之外管引,目前的模式是一個(gè)人設(shè)計(jì)以及分配任務(wù)給其他人,這樣的問題是一個(gè)項(xiàng)目在設(shè)計(jì)初期一個(gè)人難以掌控項(xiàng)目全局闯两,也就難以保證每個(gè)業(yè)務(wù)模塊都能理解到位褥伴。
   根據(jù)以上三點(diǎn)問題谅将,通過(guò)微服務(wù)架構(gòu)完全可以解決。如:
   問題1:采用微服務(wù)架構(gòu)重慢,每個(gè)業(yè)務(wù)模塊作為一個(gè)微服務(wù)饥臂,根據(jù)需求不斷完善對(duì)應(yīng)模塊的API,這樣可以局部更新且不影響其它模塊也達(dá)到模塊復(fù)用的目的似踱。在應(yīng)對(duì)不同需求只需調(diào)整前端頁(yè)面和調(diào)用不同API隅熙,不必復(fù)制整個(gè)項(xiàng)目。
   問題2:由于各個(gè)服務(wù)獨(dú)立核芽,所以會(huì)互不影響囚戚。
   問題3:對(duì)于業(yè)務(wù)模塊之間需要通信的,可以采用消息隊(duì)列來(lái)實(shí)現(xiàn)轧简,比如RabbitMQ弯淘。或者互相調(diào)用API來(lái)達(dá)到目的吉懊,具體方案要根據(jù)業(yè)務(wù)情況來(lái)確定庐橙。不同服務(wù)只需要約定好通信方式即可。
   如果采用微服務(wù)架構(gòu)就要做到根據(jù)業(yè)務(wù)模塊來(lái)組織團(tuán)隊(duì)借嗽,也就是一個(gè)業(yè)務(wù)模塊一個(gè)團(tuán)隊(duì)或一個(gè)人來(lái)負(fù)責(zé)每個(gè)負(fù)責(zé)指定業(yè)務(wù)模塊的團(tuán)隊(duì)或個(gè)人用做“產(chǎn)品”的心態(tài)去做好需求設(shè)計(jì)以及開發(fā)态鳖。這樣會(huì)大大減少溝通以及可能存在的設(shè)計(jì)問題。當(dāng)然恶导,這種分工形式對(duì)某個(gè)團(tuán)隊(duì)或個(gè)人要求比較高浆竭。
   除此之外微服務(wù)還有很多特點(diǎn),如:
  相比單體項(xiàng)目惨寿,可以做到不同業(yè)務(wù)采取不同的技術(shù)方案以及技術(shù)平臺(tái)邦泄,這樣就不會(huì)出現(xiàn)殺雞用牛刀或是殺牛用指甲鉗的窘境了。就如書中所說(shuō)的

不是每一個(gè)問題都是釘子裂垦,不是每一個(gè)解決方案都是錘子顺囊。

去中心化管理數(shù)據(jù),每個(gè)微服務(wù)都有自有的數(shù)據(jù)庫(kù)蕉拢,這樣做到去中心化數(shù)據(jù)管理特碳。
  統(tǒng)一的權(quán)限驗(yàn)證,Spring Cloud提供API網(wǎng)管來(lái)管理微服務(wù)接口并做到請(qǐng)求過(guò)濾的功能晕换,這樣就可以對(duì)多個(gè)微服務(wù)做到統(tǒng)一的權(quán)限驗(yàn)證午乓,當(dāng)然,每個(gè)微服務(wù)也可以擁有自己的權(quán)限驗(yàn)證闸准。
  微服務(wù)雖然增加了運(yùn)維難度和架構(gòu)上的復(fù)雜性益愈,整體來(lái)說(shuō)對(duì)于我這種情況的單體項(xiàng)目是利非常大于弊的。
??對(duì)于微服務(wù)架構(gòu)的簡(jiǎn)單介紹以及應(yīng)用場(chǎng)景就介紹到此夷家,下一篇將會(huì)根據(jù)我的初步實(shí)踐總結(jié)一下Spring Boot相關(guān)知識(shí)蒸其。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末敏释,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子枣接,更是在濱河造成了極大的恐慌颂暇,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件但惶,死亡現(xiàn)場(chǎng)離奇詭異耳鸯,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)膀曾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門县爬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人添谊,你說(shuō)我怎么就攤上這事财喳。” “怎么了斩狱?”我有些...
    開封第一講書人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵耳高,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我所踊,道長(zhǎng)泌枪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任秕岛,我火速辦了婚禮碌燕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘继薛。我一直安慰自己修壕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開白布遏考。 她就那樣靜靜地躺著慈鸠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诈皿。 梳的紋絲不亂的頭發(fā)上林束,一...
    開封第一講書人閱讀 52,158評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音稽亏,去河邊找鬼。 笑死缕题,一個(gè)胖子當(dāng)著我的面吹牛截歉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烟零,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼瘪松,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咸作!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宵睦,我...
    開封第一講書人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤记罚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后壳嚎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桐智,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年烟馅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了说庭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡郑趁,死狀恐怖刊驴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寡润,我是刑警寧澤捆憎,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站梭纹,受9級(jí)特大地震影響躲惰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜栗柒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一礁扮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瞬沦,春花似錦太伊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至曙痘,卻和暖如春芳悲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背边坤。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工名扛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人茧痒。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓肮韧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弄企,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理超燃,服務(wù)發(fā)現(xiàn),斷路器拘领,智...
    卡卡羅2017閱讀 134,693評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,839評(píng)論 6 342
  • 軟件是有生命的意乓,你做出來(lái)的架構(gòu)決定了這個(gè)軟件它這一生是坎坷還是幸福。 本文不是講解如何使用Spring Cloud...
    Bobby0322閱讀 22,659評(píng)論 3 166
  • 文/以琳_ 寂寞枝頭三五萼约素,斷腸已在早涼秋届良。 但知紅粉佳人面,不解相思黛紫眸业汰。 苦戀情長(zhǎng)埋幾許伙窃,浮...
    以琳_閱讀 1,275評(píng)論 38 69
  • redis-訂閱與發(fā)布 Redis 通過(guò) PUBLISH 、 SUBSCRIBE 等命令實(shí)現(xiàn)了訂閱與發(fā)布模式样漆, 這...
    全能程序猿閱讀 5,851評(píng)論 0 4