是解決系統架構的手段,不是目的,圍繞業務,松耦合,獨立部署,不同語言
在微服務管理中常常需要使用到的一些列的元件:
服務註冊:服務提供方將自己呼叫位址註冊到服務註冊中心,讓服務呼叫方能夠方便地找到自己。
服務發現:服務呼叫方從服務註冊中心找到自己需要呼叫的服務的位址。
負載均衡:服務提供方一般以多例項的形式提供服務,負載均衡功能能夠讓服務呼叫方連線到合適的服務節點。並且,節點擊擇的工作對服務呼叫方來說是透明的。
服務閘道器:服務閘道器是服務呼叫的唯一入口,可以在這個元件是實現使用者鑑權、動態路由、灰度發布、a/b 測試、負載限流等功能。
配置中心:將本地化的配置資訊(properties, xml, yaml 等)註冊到配置中心,實現程式包在開發、測試、生產環境的無差別性,方便程式包的遷移。
api 管理:以方便的形式編寫及更新 api 文件,並以方便的形式供呼叫者檢視和測試。
整合框架:微服務元件都以職責單一的程式包對外提供服務,整合框架以配置的形式將所有微服務元件(特別是管理端元件)整合到統一的介面框架下,讓使用者能夠在統一的介面中使用系統。
分布式事務:對於重要的業務,需要通過分布式事務技術(tcc、高可用訊息服務、最大努力通知)保證資料的一致性。
呼叫鏈:記錄完成乙個業務邏輯時呼叫到的微服務,並將這種序列或並行的呼叫關係展示出來。在系統出錯時,可以方便地找到出錯點。
支撐平台:系統微服務化後,系統變得更加碎片化,系統的部署、運維、監控等都比單體架構更加複雜,那麼,就需要將大部分的工作自動化。現在,可以通過 docker 等工具來中和這些微服務架構帶來的弊端。 例如持續整合、藍綠發布、健康檢查、效能健康等等。
微服務架構的優點:
降低系統複雜度:每個服務都比較簡單,只關注於乙個業務功能。
松耦合:微服務架構方式是松耦合的,每個微服務可由不同團隊獨立開發,互不影響。
跨語言:只要符合服務 api 契約,開發人員可以自由選擇開發技術。這就意味著開發人員可以採用新技術編寫或重構服務,由於服務相對較小,所以這並不會對整體應用造成太大影響。
獨立部署:微服務架構可以使每個微服務獨立部署。開發人員無需協調對服務公升級或更改的部署。這些更改可以在測試通過後立即部署。所以微服務架構也使得 ci/cd 成為可能。
docker 容器:和 docker 容器結合的更好。
ddd 領域驅動設計:和 ddd 的概念契合,結合開發會更好。
微服務架構的缺點:
微服務強調了服務大小,但實際上這並沒有乙個統一的標準:業務邏輯應該按照什麼規則劃分為微服務,這本身就是乙個經驗工程。有些開發者主張 10-100 行**就應該建立乙個微服務。雖然建立小型服務是微服務架構崇尚的,但要記住,微服務是達到目的的手段,而不是目標。微服務的目標是充分分解應用程式,以促進敏捷開發和持續整合部署。
微服務的分布式特點帶來的複雜性:開發人員需要基於 rpc 或者訊息實現微服務之間的呼叫和通訊,而這就使得服務之間的發現、服務呼叫鏈的跟蹤和質量問題變得的相當棘手。
分割槽的資料庫體系和分布式事務:更新多個業務實體的業務交易相當普遍,不同服務可能擁有不同的資料庫。cap 原理的約束,使得我們不得不放棄傳統的強一致性,而轉而追求最終一致性,這個對開發人員來說是乙個挑戰。
測試挑戰:傳統的單體web應用只需測試單一的 rest api 即可,而對微服務進行測試,需要啟動它依賴的所有其他服務。這種複雜性不可低估。
跨多個服務的更改:比如在傳統單體應用中,若有 a、b、c 三個服務需要更改,a 依賴 b,b 依賴 c。我們只需更改相應的模組,然後一次性部署即可。但是在微服務架構中,我們需要仔細規劃和協調每個服務的變更部署。我們需要先更新 c,然後更新 b,最後更新 a。
部署複雜:微服務由不同的大量服務構成。每種服務可能擁有自己的配置、應用例項數量以及基礎服務位址。這裡就需要不同的配置、部署、擴充套件和監控元件。此外,我們還需要服務發現機制,以便服務可以發現與其通訊的其他服務的位址。因此,成功部署微服務應用需要開發人員有更好地部署策略和高度自動化的水平。
總的來說(問題和挑戰):api gateway、服務間呼叫、服務發現、服務容錯、服務部署、資料呼叫以及測試。
二、架構
dubbo
springcloud
go-kit
go-micro
istio(service mesh)
論微服務架構及其應用
宣告 本文為本人在軟考系統架構設計師備考期間的練手寫作,不保證內容的原創性與正確性,僅供參考,請勿照抄和用於學術 等正規場合,因不當使用產生後果一律自負。系統自2019年10月正式上線已執行一年有餘,在學校的日常教學考試和競賽培訓中投入使用,截至目前已有3000以上的學生使用者 評測了70000條以...
微服務簡單架構及其重要元件
如今的各大網際網路公司專案都不在使用單體架構,而採用微服務架構,今天我們來 一下微服務的概念。首先微服務是一種架構風格,他不是一種架構,它是由一些列微小服務構成的,這些服務間要通過某種機制進行通訊。下面用一張圖來了解一下微服務架構。1.服務註冊與發現 服務的提供方必然要進行註冊,將自己的位址和各種位...
微服務與微服務架構
微服務 微服務強調的是服務的大小,它關注的是某乙個點,是具體解決某乙個問題 提供落地對應服務的乙個服務應用,狹意的看,可以看作eclipse裡面的乙個個微服務工程 或者module。例如 訂單服務 支付服務 微服務架構 馬丁.福勒 martin fowler 微服務架構介紹 微服務架構是 種架構模式...