單體架構,SOA架構,微服務架構,分布式架構,集群架構

單體架構

什么是單體架構

一個歸檔包(例如war格式或者Jar格式)包含了應用所有功能的應用程序,我們通常稱之為單體應用。架構單體應用的方法論,我們稱之為單體應用架構,這是一種比較傳統的架構風格。。

單體架構示例圖

QQ截圖20180517151958.png

單體架構的缺陷

1.復雜性高
整個項目包含的模塊非常多,模塊的邊界模糊,依賴關系不清晰,代碼質量參差不齊,整個項目非常復雜。每次修改代碼都心驚膽戰,甚至添加一個簡單的功能,或者修改一個BUG都會造成隱含的缺陷。

2.技術債務逐漸上升
隨著時間推移、需求變更和人員更迭,會逐漸形成應用程序的技術債務,并且越積越多。已使用的系統設計或代碼難以修改,因為應用程序的其他模塊可能會以意料之外的方式使用它。

3.部署速度逐漸變慢
隨著代碼的增加,構建和部署的時間也會增加。而在單體應用中,每次功能的變更或缺陷的修復都會導致我們需要重新部署整個應用。全量部署的方式耗時長、影響范圍大、風險高,這使得單體應用項目上線部署的頻率較低,從而又導致兩次發布之間會有大量功能變更和缺陷修復,出錯概率較高。

4.擴展能力受限,無法按需伸縮
單體應用只能作為一個整體進行擴展,無法結合業務模塊的特點進行伸縮。

5.阻礙技術創新
單體應用往往使用統一的技術平臺或方案解決所有問題,團隊的每個成員都必須使用相同的開發語言和架構,想要引入新的框架或技術平臺非常困難。

由于單體架構的缺陷日益明顯,所以越來越多的公司采用微服務架構范式解決上面提到的單體架構中的問題。

不同于構建單一、龐大的應用,微服務架構將應用拆分為一套小且互相關聯的服務。

SOA架構

SOA是Service-Oriented Architecture的英文縮寫,就是面向服務的架構。這里的服務可以理解為service層業務服務。
單一應用架構
當網站流量很小時,只需一個應用,將所有功能都部署在一起,以減少部署節點和成本。
垂直應用架構
當訪問量逐漸增大,單一應用增加機器帶來的加速度越來越小,將應用拆成互不相干的幾個應用,以提升效率。
分布式服務架構
當垂直應用越來越多,應用之間交互不可避免,將核心業務抽取出來,作為獨立的服務,逐漸形成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。
流動計算架構
當服務越來越多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增加一個調度中心基于訪問壓力實時管理集群容量,提高集群利用率。
此時,用于提高機器利用率的SOA服務治理方案是關鍵。
Dubbo就是SOA服務治理方案的核心框架。
總結:dubbo不僅可以對服務進行治理,而且還可以對服務進行調用。

微服務架構

什么是微服務架構

簡而言之,微服務架構風格的開發方法,是以開發一組小型服務的方式來開發一個獨立的應用系統的。其中每個小型服務都運行在自己的進程中,并經常采用HTTP資源API輕量的機制來相互通信。

這些服務圍繞業務功能進行構建,并能通過全自動的部署機制來進行獨立部署。這些微服務可以使用不同的語言來編寫,并且可以使用不同的數據存儲技術。對這些微服務我們僅做最低限度的集中管理。

微服務架構示例圖

QQ截圖20180517201613.png

微服務架構的特性

每個微服務可獨立運行在自己的進程里
一系列獨立運行的微服務共同構建起整個系統
每個服務為獨立的業務開發,一個微服務只關注某個特定的功能,如訂單管理、用戶管理等
微服務之間通過一些輕量的通信機制進行通信,如REST API接口進行調用
可以使用不同的語言與存儲技術
全自動的部署機制

微服務架構的優勢

1.易于開發和維護
一個微服務只關注一個特定的業務功能,所以它的業務清晰、代碼量較少。開發和維護單個微服務相對比較簡單,整個應用是由若干個微服務構建而成,所以整個應用也會維持在可控狀態;

2.單個微服務啟動較快
單個微服務代碼量較少,所以啟動會比較快;

3.局部修改容易部署
單體應用只要有修改,就要重新部署整個應用,微服務解決了這樣的問題。一般來說,對某個微服務進行修改,只需要重新部署這個服務即可;

4.技術棧不受限
在微服務中,我們可以結合項目業務及團隊的特點,合理地選擇技術棧

5.按需伸縮

微服務架構的挑戰

1.運維要求較高
更多的服務意味著更多的運維投入。在單體架構中只需要保證一個應用的正常運行;而在微服務中,需要保證幾十甚至幾百個服務的正常運行與協作,帶來了巨大的挑戰;

2.分布式固有的復雜性
使用微服務構建的是分布式系統。對于一個分布式系統,系統容錯、網絡延遲、分布式事務等都帶來了巨大的挑戰;

3.接口調整成本高
微服務之間通過接口進行通信。如果修改某個微服務的API,可能所有使用了該接口的微服務都需要做調整;

4.重復勞動
很多服務可能都會使用到相同的功能。而這個功能并沒有達到分解為一個微服務的程度,這個時候,可能各個服務都會開發這一功能,導致代碼重復。

微服務設計原則

單一職責原則
服務自治原則
輕量級通信原則
接口明確原則

微服務和SOA的區別

微服務架構強調的第一個重點就是業務系統需要徹底的組件化和服務化
微服務不再強調傳統SOA架構里面比較重的ESB企業服務總線,同時SOA的思想進入到單個業務系統內部實現真正的組件化。

分布式-微服務-集群的區別

分布式

QQ截圖20180517203448.png

service A、B、C、D 分別是業務組件,通過API Geteway進行業務訪問。

將一個大的系統劃分為多個業務模塊,業務模塊分別部署到不同的機器上,各個業務模塊之間通過接口進行數據交互。

區別分布式的方式是根據不同機器不同業務。

注:分布式需要做好事務管理。

集群模式

QQ截圖20180517203458.png

集群模式是不同服務器部署同一套服務對外訪問,實現服務的負載均衡。

區別集群的方式是根據部署多臺服務器業務是否相同。

注:集群模式需要做好session共享,確保在不同服務器切換的過程中不會因為沒有獲取到session而中止退出服務。

一般配置Nginx*的負載容器實現:靜態資源緩存、Session共享可以附帶實現,Nginx支持5000個并發量。

分布式是否屬于微服務?

答案是肯定的。微服務的意思也就是將模塊拆分成一個獨立的服務單元通過接口來實現數據的交互。

微服務架構

微服務的設計是為了不因為某個模塊的升級和BUG影響現有的系統業務。

微服務與分布式的細微差別是,微服務的應用不一定是分散在多個服務器上,他也可以是同一個服務器。

QQ截圖20180517203925.png

分布式和微服的架構很相似,只是部署的方式不一樣而已。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374