微服務基礎

一,什么是微服務

在這里插入圖片描述

在這里插入圖片描述

什么是服務化?

  • 把傳統的單擊應用中的本地方法調用,改造成通過RPC,HTTP產生的遠程方法調用

  • 把模塊從單體應用中拆分出來,獨立成一個服務部署

  • 用戶模塊就可以獨立開發,測試,上線和運維,可以交由專門的團隊來做,與主模塊不耦合

    在這里插入圖片描述

    什么是微服務?

  • 一種架構風格

  • 開發單個應用作為一系列小型服務的套件,其中每個服務都運行在自己的進程中,并且通過輕量級的機制實現彼此間的通信,這通常是http資源API

  • 這些服務是圍繞著業務功能構建的,并且可以通過完全自動化的部署機制進行獨立部署

  • 這些服務的集中式管理做到了最小化(比如docker相關技術),每一種服務都可以通過不同的編程語言進行編寫,并且可以使用不同的數據存儲技術。

二,微服務的特點

  1. 組件以服務的形式來提供:微服務面向服務,提倡以獨立部署的服務來作為一個個組件,而不是提供包括類庫,本地方法之間的調用的形式,這樣我們需要明確組件間的接口和通信協議

  2. 產品不是項目(傳統開發中我們一般把它當做項目,做完了交給維護部門去維護即可。微服務不是這樣的,需要對整個生命周期去負責,這樣也導致不方便進行外包,因為涉及到的人力會非常多)

  3. 輕量級通信,獨立進程(會更加傾向于restful,http,rpc,或愿意采用輕量級的消息隊列,比如rabbitmq,而不是更加復雜的協議)

  4. 分散治理,去中心化治理(微服務會把單體框架的組件拆成不同的服務,構建時候是比較分散的,意味著責任下放,不同團隊需要對自己的項目負責)

  5. 容錯性設計(現在每個服務是獨立的,所以對于每一個模塊,都要提供日常的故障檢測。使用微服務一方面整體的容錯性提高了,因為一個模塊的故障不會影響全部,但是對個人而言壓力更大了,因為一個模塊的錯誤可能會影響其他模塊)

  6. 會帶來團隊組織架構的調整(從橫向編程斜向)

    在這里插入圖片描述

    結論:

微服務系統需要滿足一系列條件和原則,但是并不代表你使用了某個技術或框架就是微服務了。微服務可用模塊非常多,我們應該按照項目需要進行選取

三,微服務的優缺點

優點

1)服務簡單,便于學習和上手,相對易于維護

2)獨立部署,靈活擴展


在這里插入圖片描述

3)技術棧豐富,比如語言,開發工具,中間件等技術(非常有利于去引入新技術,可以在某一個小模塊先進行使用,等成熟之后再推廣到其他模塊)

缺點

1)運維成本過高

2)接口可能不匹配

3)代碼可能重復

4)架構復雜度提高

不同復雜度情況下,單體應用和微服務的優劣勢
橫軸復雜度,數軸生產率,綠色是單體應用,藍色是微服務架構

在這里插入圖片描述

四,微服務的兩大門派

在這里插入圖片描述

在這里插入圖片描述

ps:無只是表示dubbo沒有,但是它可以使用三方插件來實現
image

在這里插入圖片描述

總結和選型建議:

  • dubbo誕生于阿里系,而且這個也廣泛應用,但是因為誕生之初是為阿里的業務服務的,所以各個組件不太全面,增加了使用難度。spring cloud是spring家族的,專注企業級微服務領域,而且迭代快,組件全,開發起來非常簡單便捷。dubbo再次之前有很長時間的停止維護,但是現在正常更新了

  • 比喻:組裝電腦,品牌機

  • 如果想穩定可靠,就選擇spring cloud,如果想了解dobbo,或者覺得文檔全,就選擇dubbo,需要根據自身的研發水平和所處階段選擇

五,微服務的拆分

什么時候進行服務化拆分:

  1. 第一階段的主要目標是快速開發和驗證想法(通常第一階段都打包在一起進行開發運維,這是最高效也最節省成本的方式)

  2. 進一步增加更多的新特性來吸引更多的目標用戶

  3. 同時進行開發的人員超過10人,這個時候就該考慮進行服務化拆分了

不適合拆分的情況:

  1. 小團隊,技術基礎較為薄弱

  2. 流量不高,壓力小,業務變化也不大(比如企業內部的管理系統)

  3. 對延遲很敏感的低延遲高并發系統

微服務拆分的兩種方式:

  1. 縱向拆分:按照業務維度去拆分,關聯程度緊的就拆分成一個微服務,功能比較獨立的拆分成一個微服務。比如社交app,可以對評論,消息,個人主頁獨立拆分

  2. 橫向拆分:按照公共領域去拆分,比如社交app,評論,消息,個人主頁都需要用到用戶模塊,如果縱向拆分里這幾個模塊都分別實現用戶模塊,成本就太高了,可以把用戶服務作為橫向拆分出來,并且把這個功能提供給各個模塊,這樣用戶服務復用性就很高

  3. 結合業務綜合分析,一般需要同時采用橫向和縱向兩種,無論是采用橫向還是縱向拆分,不一定是拆分的越細越好,過細會讓服務數量膨脹,變得難以管理,要結合實際進行拆分,建議每個開發負責的服務不超過3個。
    六,服務擴展


    在這里插入圖片描述
  • x軸-水平復制:把系統作為一個整體,直接重新部署幾套,然后前面加幾個負載均衡器解決問題(效果部署特別好,資源存在浪費)

  • y軸-功能解耦:微服務拆解,效率比x軸高

  • z軸-數據分區:在系統更大之后,數據庫是需要分區獨立的,可以按照不同屬性值進行數據拆分,獨立提供資源,提高系統的可用性和性能

自動按需擴展:

  • 根據cpu負載程度,特定時間(比如周末),消息中間件的隊列長度,業務具體規則,預測等來決定是否擴展

  • 自動分配一個新的服務實例,提高可用性

  • 提高了可伸縮性(雙11之后,自動減少服務器)

  • 具有最佳使用率,節約成本

六,微服務重要模塊

  1. 服務描述:說明是http服務還是其他類型的,接口什么樣子,返回什么內容

  2. 注冊中心:不注冊消費者就不知道去哪里找到

  3. 服務框架:注冊好后還需要解決以下問題,比如采用什么協議,傳輸類型等,服務框架就會對此進行統一

  4. 負載均衡

  5. 熔斷與降級:服務多了以后,如果某一個服務發生故障,那還有兜底策略

  6. 網關:當服務多了以后,需要統一網關,然后由網關進行下一步的分發,還有進行統一轉換,權限校驗,過濾等

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

推薦閱讀更多精彩內容

  • 單點****系統架構 傳統****項目****架構 傳統項目分為三層架構,將業務邏輯層、數據庫訪問層、控制層放入在...
    冷楓abc閱讀 1,196評論 0 0
  • 引言 為了幫助初學者快速理解入門微服務,這里簡單介紹一下微服務的基本概念及常用組件說明,希望能給初學者帶來幫助,如...
    槿灬閱讀 666評論 0 0
  • 垂直系統VS微服務 垂直系統的弊端:1、 隨著業務量的增加,復雜性逐漸變高、代碼耦合太深,不利于開發和維護2、技術...
    壹點零閱讀 454評論 0 1
  • Monolithic單體式架構指的是盡管是模塊化邏輯,但是最終還是會打包并部署為一個單一應用。 基準代碼 基準代碼...
    Mjolnir1107閱讀 575評論 1 1
  • 微服務概述 微服務架構主旨 將原本獨立的一個系統,拆分成多個小型服務,每個小型服務在各自獨立的進程中運行,相互之間...
    JHolland閱讀 112評論 0 0