自JAVA9誕生以來,經常會聽到"子產品化開發"這一詞語。是的,子產品化與元件化開發将會是未來開發的主要潮流,無論是作為開發人員還是架構師都必須掌握的一種開發方式。spring cloud微服務正是在這種條件下誕生的,簡單的說微服務不是一種編碼技術或者是設計模式,它是一種系統架構上的設計風格。它存在的主要意義就是将一個獨立的系統拆分成多個小型服務,這些服務運作在自己獨立的程序中,互補幹擾。這相比于傳統的系統架構好處是,單一子產品發生的故障并不會影響到整個系統的運作,同時可以有效地支援高并發。
各種小型服務之間基于HTTP的RESTful API進行資料通信與協作。這些不同的服務分别維護着自身的資料存儲、業務開發、自動化測試以及獨立部署。由于采用了采用了輕量級的通信協作基礎,是以微服務可以通過不同的語言來編寫并且互相調用。同時随着移動端裝置的進步,前端子產品的展示已經不再局限于Web形式,後端需要向前端提供更多的接口子產品,如果不采用微服務的話,單體應用系統将會變得越來越臃腫,這是架構師在架構設計的時候不得不面對的問題。那麼,開始學習微服務究竟需要學習那些重要知識呢?下面的内容将會帶你初步接觸到微服務。
1、Spring Boot
Spring Boot是Spring Cloud的重要基礎,他自身擁有着很多的優點,比如自動化配置、快速開發、靈活部署等等。非常适合作為微服務的建構架構。它解決了各種棘手複雜的開發配置,讓開發變得非常容易簡單。應用的啟動不再需要通過熱部署,隻要通過一個簡單地指令就可以啟動應用。
2、服務治理 Eureka
服務治理是微服務架構中最為核心和基礎的子產品,它主要提供實作各個微服務執行個體的自動化注冊與發現。服務通常首先将自己提供的服務注冊到注冊中心,以便用戶端進行服務發現。當用戶端将服務注冊到注冊中心的時候就可以進行服務的調用了,這裡可以同時實作服務端與用戶端的叢集。
3、客服端負載均衡 Ribbon
Spring Cloud Ribbon 是一個基于Http和TCP的客服端負載均衡工具,它是基于Netflix Ribbon實作的。它不像服務注冊中心、配置中心、API網關那樣獨立部署,但是它幾乎存在于每個微服務的基礎設施中。包括前面的提供的聲明式服務調用也是基于該Ribbon實作的。了解Ribbon對于我們使用Spring Cloud來講非常的重要,因為負載均衡是對系統的高可用、網絡壓力的緩解和處理能力擴容的重要手段之一。
4、熔斷器 hystrix
在微服務架構中通常會有多個服務層調用,基礎服務的故障可能會導緻級聯故障,進而造成整個系統不可用的情況,這種現象被稱為服務雪崩效應。服務雪崩效應是一種因“服務提供者”的不可用導緻“服務消費者”的不可用,并将不可用逐漸放大的過程。官方解釋:hystrix通過服務隔離、熔斷(也可以稱為斷路)、降級等手段控制依賴服務的延遲與失敗。 通過上述講解我們可以得知,hystrix可以在依賴服務延遲或失敗時,提供服務保護機制。
5、分布式配置中心 config
Spring Cloud Config是一個配置管理工具包,讓你可以把配置放到遠端伺服器,集中化管理叢集配置,目前支援本地存儲、Git以及Subversion。用Spring Cloud開發者能快速的建立支援實作這些模式的服務和應用程式。他們将适用于任何分布式環境,無論是開發者的個人電腦還是生産環境,還是雲平台。當然了,以上隻是spring cloud提供的最基本的服務,它還有一些更為進階的服務提供,例如消息總線、消息驅動、分布式服務追蹤等等。

圖檔發自簡書App