原文地址:微服務架構概述
博客地址:blog.720ui.com/html
傳統的單體架構,使用三層架構,包括視圖表現層、業務邏輯層與數據訪問層,其劃分的目的是爲了更好地規劃軟件系統的邏輯結構,便於開發與維護。單體架構將整個應用系統視爲一個總體,部署在同一個 Web 容器。例如,一個 VR 資訊系統包含資訊模塊、話題模塊、日報模塊、百科模塊等多個模塊,在單體架構中,全部的功能模塊都在同一個應用系統中,而且共同使用一個數據庫。數據庫
單體架構的好處在於,全部的功能模塊都在同一個應用系統中,很是容易開發與測試。可是,隨着系統規模的不斷擴大,業務需求的不斷迭代,系統功能的持續增長,傳統的單體架構面對的問題也愈來愈多,主要體如今幾個方面:編程
隨着敏捷開發、持續交付、虛擬化技術、DevOps 理論的實踐,微服務架構應運而生,並逐漸使得應用架構朝着高可用性、可擴展性、可伸縮性發展的方向演進。ThoughtWorks 公司的首席科學家 Martin Fowler 對微服務進行了描述,他說到:「微服務是一種將單個應用劃分紅許多小的服務來構建軟件的架構模式。每一個服務運行在本身的進程中,服務與服務間採用輕量級的通訊機制互相溝通(一般是基於 HTTP 協議的 RESTful API)。每一個服務都圍繞着具體業務和各自獨立的自動化部署機制構建而來。每一個服務須要極少的集中管理,所以可使用不一樣的編程語言以及不一樣的存儲技術。」。Martin Fowler 還列舉了微服務的九個特徵,包括經過服務實現組件化、圍繞業務能力進行組織、基於產品而不是項目、智能端點與啞管道、去中心化治理、去中心化數據管理、基礎設施自動化、爲故障而生、演進的設計。若是對Martin Fowler 的微服務描述感興趣,能夠閱讀 martinfowler.com/articles/mi…微信
請讀者思考,微服務的拆分粒度多小,才能算是「微」?通常狀況下,拆分粒度應該保證微服務具備業務的獨立性與完整性,所以微服務的拆分圍繞業務模塊進行拆分。那麼,這裏將 VR 資訊系統進行服務拆分,分爲資訊系統、話題系統、日報系統、百科系統四個微服務系統,每一個微服務獨立使用一個數據庫。架構
微服務帶來的價值,主要體如今幾個方面:併發
微服務不是銀彈,它也帶來了一些技術的複雜度。所以,咱們須要思考與解決分佈式的複雜性、事務的一致性、服務的管理與運維、服務的自動化部署等解決方案。運維
總結下,隨着系統規模的不斷擴大,業務需求的不斷迭代,系統功能的持續增長,傳統的單體架構面對的問題也愈來愈多。而且互聯網產品需求變化快、用戶量大,傳統的單體架構顯得力不從心。而隨着敏捷開發、持續交付、虛擬化技術、DevOps 理論的實踐,微服務架構取代了傳統的單體架構,將單個應用劃分紅許多小的服務,服務與服務間採用基於 HTTP 協議的 RESTful API 通訊。在收穫微服務帶來的價值的同時,須要解決微服務帶來的一些技術的複雜度問題。編程語言
(完)分佈式
更多精彩文章,盡在「服務端思惟」微信公衆號!
微服務