1、spring cloud簡介web
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,均可以用Spring Boot的開發風格作到一鍵啓動和部署。Spring Cloud並無重複製造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,經過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分佈式系統開發工具包。spring
2、建立服務註冊中心瀏覽器
咱們須要用的的組件上Spring Cloud Netflix的Eureka ,eureka是一個服務註冊和發現模塊。springboot
一、建立一個web-app的maven工程。此處命名爲:springcloud網絡
二、在該工程下建立module。架構
選擇springboot的快速建立。 勾上Eureka Server。以便自動導入包 三、能夠檢查一下pom文件,這裏的依賴以下: 四、在application中加入註解@EnableEurekaServer,申明此處爲服務註冊中心。 五、yml中的加入以下配置:registerWithEureka 和 fetchRegistry 設置爲false,代表本身屬於服務中心主體 六、啓動服務,登錄瀏覽器查看。 http://localhost:8761/紅框內爲已經註冊的服務。這裏咱們只有服務中心,沒有寫生產者,因此紅框中的內容應該是空。app
3、建立生產者建立的過程如server同樣便可。負載均衡
一、建立完成以後檢查一下pom文件,這裏提供依賴以下:框架
二、在application中加入註解@EnableEurekaClient,代表本身屬於一個生產者。這裏爲了方便測試,直接使用@RestController獲取返回值。maven
三、yml配置 端口不能與上面的相同。這裏的服務name:service-hi 能夠根據本身狀況定義。四、運行服務,登錄環境 http://localhost:8765/hi?name=fys
能夠看到以下信息。這裏用postman進行測試:
在8761這個端口中,也能看到,該信息已經在服務中心進行了註冊。名字爲咱們yml中進行配置的名字。 3、建立消費者1.1 方式一:服務消費者(rest+ribbon) 一、建立消費者modul,流程如上述工程建立流程。
二、引入pom依賴
斷路器依賴在此章節中能夠不須要引入。
三、yml配置在工程的配置文件指定服務的註冊中心地址爲http://localhost:8761/eureka/ 。
四、application中加入註解:@EnableDiscoveryClient而且加入restTemplate以消費相關的服務。 五、建立service和controller。 這裏利用字符串進行傳輸。固然restTemplate也是能夠以對象進行傳輸的。例如:
service-hi中的返回以下:
調用界面以下。 能夠看到,都是能成功獲取到相關的返回內容。這裏用object的封裝是爲了方法的通用性。(這裏key值若是爲數字,只測試過字符串的數字,會引發報錯。有興趣的能夠進一步研究)。測試結果以下:
六、增長斷路器在微服務架構中,根據業務來拆分紅一個個的服務,服務與服務之間能夠相互調用(RPC),在Spring Cloud能夠用RestTemplate+Ribbon和Feign來調用。爲了保證其高可用,單個服務一般會集羣部署。因爲網絡緣由或者自身的緣由,服務並不能保證100%可用,若是單個服務出現問題,調用這個服務就會出現線程阻塞,此時如有大量的請求涌入,Servlet容器的線程資源會被消耗完畢,致使服務癱瘓。服務與服務之間的依賴性,故障會傳播,會對整個微服務系統形成災難性的嚴重後果,這就是服務故障的「雪崩」效應。爲了解決這個問題,業界提出了斷路器模型。
Netflix開源了Hystrix組件,實現了斷路器模式,SpringCloud對這一組件進行了整合。
在微服務架構中,一個請求須要調用多個服務是很是常見的,以下圖:
較底層的服務若是出現故障,會致使連鎖故障。當對特定的服務的調用的不可用達到一個閥值(Hystric 是5秒20次) 斷路器將會被打開。 斷路打開後,可用避免連鎖故障,fallback方法能夠直接返回一個固定值。首先。須要引入斷路器的pom依賴:
在application中增長@EnableHystrix註解表示開啓斷路器 在上一小節基礎上增長斷路器所需的fallback方法: 代碼以下: 完成上述工做後,將service-hi服務關閉,調用service-ribbon 的hi方法。能夠看到hiError的輸出結果。 更多內容可關注主頁