Spring Cloud項目的既定目標在於為Spring開發人員提供壹整套易於使用的工具集,從而保證其輕松構建起自己需要的分布式系統方案。為了實現這壹目標,Spring Cloud以Netflix OSS堆棧為基礎將大量實現堆棧加以整合並打包。這些堆棧而後可以通過大家所熟知的各類基於註釋的配置工具、Java配置工具以及基於模板的編程工具實現交付。下面就讓我們壹起了解Spring Cloud當中的幾類常見組件。 Spring Cloud Config Server Spring Cloud Config Server能夠提供壹項具備橫向擴展能力的集中式配置服務。它所使用的數據被保存在壹套可插拔庫層當中,後者目前能夠支持本地存儲、Git以及Subversion。通過利用壹套版本控制系統作為配置存儲方案,開發人員能夠輕松實現版本與審計配置的內容調整。 如何利用Spring Cloud構建起自我修復型分布式系統 配置內容會以Java屬性或者YAML文件的形式體現。該Config Server會將這些文件合並為環境對象,其中包含易於理解的Spring屬性模型以及作為REST API存在的配置文件。任何應用程序都能夠直接調用該REST API當中所包含的配置數據,但我們也可以將智能客戶端綁定方案添加到Spring Boot應用程序當中,並由後者自動將接收自Config Server的配置信息分配至任意本地配置當中。 Spring Cloud Bus Spring Cloud Config Server是壹套強大的配置分發機制,能夠在保障壹致性的前提下將配置內容分發到多個應用程序實例當中。然而根據其設計思路的限定,我們目前只能在應用程序啟動時對其配置進行更新。在向Git中的某壹屬性發送新值時,我們需要以手動方式重啟每個應用程序進程,從而保證該值被切實納入應用當中。很明顯,大家需要能夠在無需重啟的前提下完成對應用程序配置內容的更新工作。 如何利用Spring Cloud構建起自我修復型分布式系統 Spring Cloud Bus的任務正是為應用程序實例添加壹套管理背板。它目前依靠將壹套客戶端綁定至壹組AMQP交換與隊列當中來實現,但這壹後端在設計上也實現了可插拔特性。Spring Cloud Bus為我們的應用程序帶來了更多管理端點。在圖二中,我們可以看到壹個面向greeting屬性的值被發送至Git當中,而後壹條請求被發送至應用A中的/bus/refresh端點。該請求會觸發以下三個事件: 應用A從Config Server處請求獲取最新版本的配置內容。任意註明了@RefreshScope的Spring Bean都會被重新初始化並載入新的配置內容。 應用A向AMQP交換機制發送壹條消息,表明其已經收到更新指示。 通過監聽AMQP隊列而被納入Cloud Bus的應用B與應用C會獲取到上述消息,並以與應用A同樣的方式實現配置更新。 現在我們已經有能力在無需重啟的情況下對應用程序配置進行更新了。
上一篇:詳解vuex中action何時完成以及如何正確調用dispatch的思考下一篇:求魔方的公式 最好說具體點 不要用太多專業術語