01-微服務簡介

背景分析

單體應用架構

在傳統的單體應用系統架構中,通常分爲三個部分,即數據庫端、服務應用端和前端展示端,如圖所示:
image
在業務發展初期,因爲全部的業務邏輯在一個應用中,開發、測試、部署都比較容易。可是,隨着業務的發展,系統爲了應對不一樣的業務需求會不斷爲單體應用增長不一樣的業務模塊。長此以往,不斷擴充的業務需求致使單體應用的系統愈來愈龐大臃腫。此時,單體應用的問題也逐漸顯現出來,因爲單體應用是一個「總體」,每每修改一個小的功能,爲了部署上線就會影響到其餘功能的運行。前端

對於業務而言,每每不一樣模塊對系統資源的要求不也盡相同,而單體應用各個功能模塊由於沒法分割,也就沒法細化對系統資源的需求。因此,單體應用在初期是比較方便快捷,可是隨着業務的發展,維護成本會愈來愈大,且難以控制。數據庫

雲原生應用分析

雲原生的概念最先開始於2010年,主要用於描述一種和雲同樣的系統行爲應用的編寫,好比分佈式的、鬆散的、自服務的、持續部署與測試的。當時提出「雲原生」是爲了能構建一種符合雲計算特性的標準來指導雲計算應用的編寫。架構

致使了「雲原生」概念的誕生的因素,主要有幾個方面:
  • 雲計算平臺的普及。
  • 虛擬化技術的發展。
  • 敏捷開發的出現,DevOps的應用縮短了發佈週期

雲平臺具備很好的可擴展性,爲了利用這一點,雲原生應用由多個小而獨立的模塊組成,如圖所示:分佈式

image

基於這些獨立模塊構建的服務架構,就叫作微服務。微服務

微服務簡介

微服務定義

微服務架構(MSA)的基礎是將單個應用程序開發爲一組小型獨立服務,這些獨立服務在本身的進程中運行,獨立開發和部署。
image學習

image
這些服務使用輕量級 API 經過明肯定義的接口進行通訊。這些服務是圍繞業務功能構建的,每項服務執行一項功能。因爲它們是獨立運行的,所以能夠針對各項服務進行更新、部署和擴展,以知足對應用程序特定功能的需求。測試

微服務是分佈式系統中的一種流行的架構模型,它並非銀彈,因此,也不要寄但願於微服務構架可以解決全部的問題。微服務架構主要解決的是如何快速地開發和部署咱們的服務,這對於一個可以適應快速開發和成長的公司是很是必要的。同時,微服務設計中有不少很不錯的想法和理念,經過學習微服務架構咱們能夠更快的邁向卓越。雲計算

微服務特性

  • 自主性

能夠對微服務架構中的每一個組件服務進行開發、部署、運營和擴展,而不影響其餘服務的功能。這些服務不須要與其餘服務共享任何代碼或實施。各個組件之間的任何通訊都是經過明肯定義的 API 進行的。spa

  • 專用性

每項服務都是針對一組功能而設計的,並專一於解決特定的問題。若是開發人員逐漸將更多代碼增長到一項服務中而且這項服務變得複雜,那麼能夠將其拆分紅多項更小的服務。設計

微服務的優點

  • 敏捷性

微服務促進若干小型獨立團隊造成一個組織,這些團隊負責本身的服務。各團隊在小型且易於理解的環境中行事,而且能夠更獨立、更快速地工做。這縮短了開發週期時間。您能夠從組織的總吞吐量中顯著獲益。

  • 擴展性

經過微服務,您能夠獨立擴展各項服務以知足其支持的應用程序功能的需求。這使團隊可以適當調整基礎設施需求,準確衡量功能成本,並在服務需求激增時保持可用性。

  • 輕鬆部署

微服務支持持續集成和持續交付,能夠輕鬆嘗試新想法,並能夠在沒法正常運行時回滾。因爲故障成本較低,所以能夠大膽試驗,更輕鬆地更新代碼,並縮短新功能的上市時間。

  • 代碼可重用性

將軟件劃分爲小型且明肯定義的模塊,讓團隊能夠將功能用於多種目的。專爲某項功能編寫的服務能夠用做另外一項功能的構建塊。這樣應用程序就能夠自行引導,由於開發人員能夠建立新功能,而無需從頭開始編寫代碼。

  • 較好的彈性設計

服務獨立性增長了應用程序應對故障的彈性。在總體式架構中,若是一個組件出現故障,可能致使整個應用程序沒法運行。經過微服務,應用程序能夠經過下降功能而不致使整個應用程序崩潰來處理整體服務故障。

總結(Summary)

在本章節中,講述了微服務誕生的背景,傳統單體架構的劣勢,同時,基於雲原生技術的的發展,微服務架構誕生。基於微服務架構,能夠更好的,靈活的處理客戶端的請求並提升系統的可靠性,可擴展性。

相關文章
相關標籤/搜索