微服務的概念源于2014年3月Martin Fowler(馬丁·福勒)所寫的一篇文章“Mieroservices”(微服務)。文中表達了一種觀念,微服務架構是一種架構模式,它提倡將單一應用程序劃分成一組小的服務,服務之間互相協調、互相配合,為用戶提供最終價值。
微服務架構是一種架構風格,一個大型復雜軟件應用由多個微服務架構組成。系統中的各個微服務架構可被獨立部署,各個微服務架構之間是松耦合的。每個微服務架構僅關注于完成一項任務并很好地完成該任務。在所有情況下,每項任務代表著一個小的業務能力。微服務架構的功能如下。
1.微服務架構的自動化部署
微服務架構中,系統會被拆分為若干個微服務架構,每個微服務架構又是一個獨立的應用程序。單體架構中的應用程序只需要部署一次,而微服務架構中有多少服務就需要部署多少次。隨著服務數量的增加,部署的難度就會增加。業務的粒度劃分得越細,微服務架構的數量就越多。因此就出現了自動化部署技術,例如Docker容器自動化部署技術方便了微服務架構項目下各模塊在服務器上的部署。
2.服務集中化管理
微服務架構系統是按照業務單元來劃分的,服務數量越多,管理起來越復雜。在這里,微服務架構提供了集中化管理組件Spring Cloud Config,人們可以在Spring Cloud Config配置文件中統一配置服務,這樣很大程度上方便了對項目的集中化管理。
3.支持熔斷機制
微服務架構就是分布式的。在分布式系統中,服務之間是相互依賴的,如果一個服務出現了故障或者網絡延遲,在高并發的情況下,就會導致線程阻塞,在很短的時間內該服務的線程資源會消耗殆盡,最終使得該服務不可用。
由于服務相互依賴,這樣可能會導致整個服務的不可用,這就是“雪崩”效應。熔斷機制是應對“雪崩”效應的一種微服務架構鏈路保護機制。我們在各種場景下都會接觸到熔斷這兩個字。高壓電路中,如果某個地方的電壓過高,熔斷器就會熔斷,對電路進行保護;股票交易中,如果股票指數過高,就也會采用熔斷機制,暫停股票的交易。同樣,在微服務架構中,熔斷機制也是起著類似的作用。當一條鏈路的某個微服務架構不可用或者響應時間太長時,會進行服務的降級,進而調用熔斷該節點的微服務架構,快速返回錯誤的響應信息;當檢測到該節點微服務架構調用響應正常后,恢復調用鏈路。