Spring Cloud由衆多子項目組成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分佈式系統及微服務經常使用的工具,如配置管理、服務發現、斷路器、智能路由、微代理、控制總線、一次性token、全局鎖、選主、分佈式會話和集羣狀態等,知足了構建微服務所需的全部解決方案。html
服務發現——Netflix Eurekajava
客服端負載均衡——Netflix Ribbonnginx
斷路器——Netflix Hystrix算法
服務網關——Netflix Zuul服務器
分佈式配置——Spring Cloud Config負載均衡
一個RESTful服務,用來定位運行在AWS地區(Region)中的中間層服務。由兩個組件組成:Eureka服務器和Eureka客戶端。Eureka服務器用做服務註冊服務器。Eureka客戶端是一個java客戶端,用來簡化與服務器的交互、做爲輪詢負載均衡器,並提供服務的故障切換支持。Netflix在其生產環境中使用的是另外的客戶端,它提供基於流量、資源利用率以及出錯狀態的加權負載均衡。框架
Ribbon,主要提供客戶側的軟件負載均衡算法。運維
Ribbon客戶端組件提供一系列完善的配置選項,好比鏈接超時、重試、重試算法等。Ribbon內置可插拔、可定製的負載均衡組件。下面是用到的一些負載均衡策略:異步
簡單輪詢負載均衡分佈式
加權響應時間負載均衡
區域感知輪詢負載均衡
隨機負載均衡
Ribbon中還包括如下功能:
易於與服務發現組件(好比Netflix的Eureka)集成
使用Archaius完成運行時配置
使用JMX暴露運維指標,使用Servo發佈
多種可插拔的序列化選擇
異步和批處理操做(即將推出)
自動SLA框架(即將推出)
系統管理/指標控制檯(即將推出)
斷路器能夠防止一個應用程序屢次試圖執行一個操做,即極可能失敗,容許它繼續而不等待故障恢復或者浪費 CPU 週期,而它肯定該故障是持久的。斷路器模式也使應用程序可以檢測故障是否已經解決。若是問題彷佛已經獲得糾正,應用程序能夠嘗試調用操做。歡迎你們一塊兒學習研究相關技術願意瞭解源碼的朋友直接求求交流分享技術:2147775633
斷路器增長了穩定性和靈活性,以一個系統,提供穩定性,而系統從故障中恢復,並儘可能減小此故障的對性能的影響。它能夠幫助快速地拒絕對一個操做,即極可能失敗,而不是等待操做超時(或者不返回)的請求,以保持系統的響應時間。若是斷路器提升每次改變狀態的時間的事件,該信息能夠被用來監測由斷路器保護系統的部件的健康情況,或以提醒管理員當斷路器跳閘,以在打開狀態。
流程圖
相似nginx,反向代理的功能,不過netflix本身增長了一些配合其餘組件的特性。
這個仍是靜態的,得配合Spring Cloud Bus實現動態的配置更新。
更多詳細源碼參考來源:http://minglisoft.cn/honghu/technology.html