這是我參與8月更文挑戰的第4天,活動詳情查看:8月更文挑戰」程序員
微服務架構(Microservice Architecture)是一種架構概念,旨在經過將功能分解到各個離散的服務中以實現對解決方案的解耦。你能夠將其看做是在架構層次而非獲取服務的類上應用不少 SOLID 原則。微服務架構是個頗有趣的概念,它的主要做用是將功能分解到離散的各個服務當中,從而下降系統的耦合性,並提供更加靈活的服務支持。web
**概念:**把一個大型的單個應用程序和服務拆分爲數個甚至數十個的支持微服務,它可擴展單個組件而不是整個的應用程序堆棧,從而知足服務等級協議。面試
**定義:**圍繞業務領域組件來建立應用,這些應用可獨立地進行開發、管理和迭代。在分散的組件中使用雲架構和平臺式部署、管理和服務功能,使產品交付變得更加簡單。markdown
**本質:**用一些功能比較明確、業務比較精練的服務去解決更大、更實際的問題。架構
無論你使用何種實現風格和拓撲,有幾個通用的核心概念應用在這種架構模式上。首先是分隔發佈單元(separately deployed units)。app
如圖所示,每個微內核的組件都被分隔成一個獨立的單元。分佈式
微服務包含服務組件(service component)。不要考慮微內核的單個服務,而是最好考慮服務組件,從粒度上講它能夠是單一的模塊或者一個一個大的應用程序,表明單一功能(提供天氣預報或者圖片存儲)。微服務
正確設計服務組件的粒度是一個很大的挑戰。工具
另外一個關鍵概念是微內核是分佈式的。這意味着服務組件多是遠程方法(經過 JMS, AMQP, REST, SOAP, RMI......等等)。分佈式意味着這種模式能夠創建大規模的應用。post
另外一個值得興奮的特性是它能夠從其它有問題的架構模式中演化出來,而不是直接建立出來等待問題發生。當你遇到一些沒法解決的問題,特別是互聯網企業的規模擴大時,是很好的引入微服務架構的時機。
通常會從兩個模式中演化:
一種就是一開始就是總體的應用,全部的模塊都是緊耦合的;
另一種是面向服務的架構模式(SOA,service-oriented architecture pattern)。SOA 不是很差,可是太昂貴了,很差理解和實現。
有不少實現微服務的方式。最通用最流行的三個方式是: API REST-based, applicaiton REST-based 和 中心化的消息。API REST-based 適合網站提供小規模的,自包含的服務。不少互聯網網站都提供這樣的服務,好比 OAuth2 服務。
application REST-based 不一樣於上面的架構,客戶端看到的是 web 界面或者富客戶端程序,而不是調用 API。UI 層獨立發佈,能夠訪問服務組件。
中心消息模式,它相似前面的模式,可是使用一個輕量級的消息 broker 取代 RESTful 的服務調用。這個輕量級的 broker 不會執行服務的編排,傳輸和路由,這和 SOA 不一樣,不要把它看做 SOA 的簡化版。
微服務架構解決了無架構的總體編碼的應用的問題以及 SOA 的問題。同時它還能夠提供實時的產品發佈。它是一個分佈式架構,也會有上面分佈式的問題。
微服務模式優劣分析:
整體靈活性:高
發佈易用性:高
可測試性:高
性能:低
規模擴展性:高
開發容易度:高
微服務做爲單一總體的程序和麪向服務架構的替代者, 微服務架構模式在工業界很快贏得了地位。這種模式還在進化之中,在業界對於它的特性和實現還有些困惑。對於咱們的思考,更多的是思惟上的轉變。對於微服務架構:技術上不是問題,意識比工具重要。
做者:架構精進之路,十年研發風雨路,大廠架構師,CSDN 博客專家,專一架構技術沉澱學習及分享,職業與認知升級,堅持分享接地氣兒的乾貨文章,期待與你一塊兒成長。
關注「架構精進之路」同名公衆號並回復「01」,送你一份程序員成長進階大禮包,另外面試寶典、大量技術電子書免費領取。
Thanks for reading!