微服務架構設計實踐系列之二:微服務

原文: 微服務架構設計實踐系列之二:微服務

版權聲明: https://blog.csdn.net/beyondself_77/article/details/79841455

微服務架構設計實踐
 


目    次

2  微服務
css

2.1  微服務的定義html

        微服務是一個獨立、可部署的服務,它只專一作一件事情而且作好,而這個事情一般能夠是業務能力,或者提供業務價值的最小單元服務。數據庫

        微服務的描述具備通常服務描述所遵循的內容:微信

        1.使用明確的接口方式,如:WebService、Rest。架構

        2.描述裏應該包括約束和策略,如:參數、返回值,以及使用什麼通信協議和數據格式等。分佈式

        微服務中「微」是其獨特個性的體現,「微」表示「接口粒度細」。模塊化

        簡而言之,微服務的特徵歸結爲:微服務

        1.職責單一,相對獨立。組件化

        2.接口粒度細。性能

        3.輕量級通信協議。

        4.服務之間鬆耦合。

2.2  微服務架構的定義

        James Lewis 和 Martin Fowler 給微服務架構的定義以下:

        微服務架構風格指將複雜系統切分爲幾十甚至上百個小服務,每一個服務負責實現一個獨立的業務邏輯。系統中的各個服務一般是獨立部署,彼此之間是鬆耦合的。

        每一個服務都運行在本身的進程中,通常採用Rest API風格的輕量級通信協議進行相互通訊。

        這些服務圍繞業務功能進行構建,經過全自動化的部署方式來進行獨立部署。

        這些服務可使用不一樣的語言來編寫,也可使用不一樣的數據存儲技術,而且基於最低限度的集中管理。

2.3  微服務架構的特徵

        Martin Fowler 認爲,微服務架構具備以下 9 個特性:

        1.組件以服務的形式提供。

        2.圍繞業務功能進行組織。

        3.產品而不是項目。

        4.強化終端與弱化管道。

        5.「去中心化」 地治理技術。

        6.「去中心化」 地管理數據。

        7.「基礎設施」 自動化。

        8.「容錯」 設計。

        9.「演進式」 設計。

2.4  微服務架構的優缺點

        微服務架構的優勢在於:

        1.更加完全的組件化,系統內部各個組件之間解耦的比較乾脆,單個系統的規模小不少。

        2.能夠組建每一個服務獨立的維護團隊,利於各自團隊獨立的開發和維護。

        3.每一個微服務獨立部署,只要服務間的接口穩定,各系統能夠相互之間互不干擾的獨立發展。

        4.微服務架構使得每一個服務自己能夠獨立的擴展,性能出現瓶頸,優化或增長這個服務的配置便可。

        微服務架構的缺點在於:

        1. 微服務強調了服務大小,但實際上,業界並無給出一個明確的、統一的標準。業務邏輯應該按照什麼規則劃分爲微服務,這自己就是一個經驗工程。但要記住,微服務是達到目的的手段,而不是目標。微服務的目標是充分分解應用程序,以促進敏捷開發和持續集成部署。

        2. 它的分佈式特色帶來的複雜性。開發人員須要基於RPC或者消息實現微服務之間的調用和通訊,而這就使得服務之間的發現、服務調用鏈的跟蹤和質量問題變得的至關棘手。

        微服務架構所面臨的挑戰:

        1.分區的數據庫體系和分佈式事務。在微服務架構下,不一樣服務可能擁有不一樣的數據庫。CAP原理的約束,使得咱們不得不放棄傳統的強一致性,而轉而追求最終一致性,這個對開發人員來講是一個挑戰。

        2.對測試帶來了很大的挑戰。對微服務進行測試,須要啓動它依賴的全部其餘服務,這種複雜性不可低估。

        3.對跨多個服務的更改帶來的挑戰。在微服務架構中,如有A、B、C三個服務須要更改,A依賴B,B依賴C。此時,咱們須要仔細規劃和協調每一個服務的變動部署,可能須要先更新C,而後更新B,最後更新A。

        4.部署基於微服務的應用也要複雜得多。微服務由不一樣的大量服務構成,每種服務擁有本身的配置、應用實例數量以及基礎服務地址,這裏就須要不一樣的配置、部署、擴展和監控組件。此外,咱們還須要服務發現機制,以便服務能夠發現與其通訊的其餘服務的地址。所以,成功部署微服務應用須要開發人員有更好地部署策略和高度自動化的水平。

        基於上述的微服務存在的優缺點,以及微服務架構設計過程當中面臨的挑戰,建議在軟件架構設計時,不要從一開始就以微服務架構做爲系統設計的起點。相反地,要用一個單個系統做爲起點,並保持其模塊化。當這個系統出現了問題後,再將其分解爲微服務。

  微信掃一掃,關注該公衆號

  該系列文章已經在微信公衆號發佈,若是感興趣,請關注。

   之後更多知識經過該微信公衆號分享。

  
相關文章
相關標籤/搜索