1 什么是微服務架構
微服務架構(Micro Services Architecture, MSA)是當前流行的、被廣泛應用的分布式軟件構建模式,最初由Martin Fowler與James Lewis在2014年提出。與傳統的單體式架構不同,微服務架構注重細粒度的服務間相互協調,通過一系列職責單一的、互相配合的服務實現用戶的最終目標。在微服務運行與通信方面,各個微服務在獨立的進程中運行,彼此之間采用基于HTTP協議的RESTful接口進行通信,每一個服務都能夠被獨立的部署到生產環境、測試環境中。

2 微服務架構的優勢
(1)復雜度低。微服務架構將一個大的整體應用分成一組小的服務,每個微服務只專注于一件事情,通過 RPC 調用等方式良好的定義了服務邊界,每個微服務的體積輕巧、復雜度也隨之降低,提高了開發人員的開發效率且易于維護。
(2)可獨立部署。由于每個微服務運行在獨立的進程中,所以每個微服務都可以分開獨立部署,在傳統的單體式架構中,如果應用中某一部分發生了改變,則整個應用需要重新構建和部署。而基于微服務架構的應用則不同,當某個微服務發生了改變時,重新部署該微服務即可,而無需重新編譯部署整個應用。這也使得整個微服務架構應用的發布流程更加方便有效,且降低了由于系統環境造成的風險,使得整個應用開發粒度更小、沖突更少、流程更快、交付周期更短。
(3)技術靈活。不同于面向服務架構的集中化特性,微服務體系架構是去中心化的,所以每個微服務都可根據自身需求自行選擇合適的技術框架,而且每個微服務在功能上只占整個應用的一部分,邏輯較為簡單,當技術棧需要升級時,單個微服務的技術升級風險是比較低的,或者說直接完全重構也是可行的。
(4)容錯性好。在傳統的單體式架構中,如果某一塊功能發生故障,很可能直接擴散到整個應用,導致整個應用無法使用。而在微服務體系架構下,發生的故障被隔離在每個微服務中,通過良好的設計避免其帶來的影響(每一種微服務均有多個副本備用),實現應用層面的容錯,提升應用程序的健壯性。
(5)易擴展。雖然傳統的單體式架構也可以進行擴展,但它是橫向擴展,即直接復制整個應用到其他節點上。但是如果應用中不同功能模塊的擴展要求不同時,微服務架構的優點就體現出來了,微服務架構下每個微服務都可以按照其自身需求獨立的進行擴展,互相不受影響,方便靈活且風險較低。
3 微服務架構有哪些
(1)Dubbo框架:阿里巴巴開發的開源式的分布式服務化治理框架,通過RPC請求方式訪問。
(2)Dropwizard:具有輕量化的優勢。Dropwizard框架集中了Java生態系統中各個問題域里最好的組件集成于一身,可以快速打造一個Rest風格的后臺,整合Dropwizard核心以外的項目。
(3)Akka:一個用Scala編寫的庫,能夠被利用在有簡化編寫容錯、高可伸縮性的Java和Scala的Actor模型,使其實現微服務集群。
(4)Spring Boot:其設計目標是簡化新Spring應用初始搭建以及開發過程,是當前非常受歡迎的微服務開發框架。利用Spring
Boot開發的便捷度簡化分布式系統基礎設施的開發。
(5)Spring
Cloud:基于HTTP(s)的RETS服務構建服務體系的是=一整個系列的框架合計,并非單獨框架,能夠幫助架構師構建一整套完整的微服務架構技術生態鏈。
推薦閱讀:《GIAC_利開園_基于TarsGO的微服務技術架構實踐.pptx》
《網易-翁揚慧-網易數帆從微服務框架到服務網格架構平滑演進及最佳實踐.pdf》
《7-第四范式-微服務平臺中業務服務的全棧監控-余超.pdf》