#數據結構和算法 HashMap #SpringMVC:各類註解 #SpringBoot:各類註解 #SpringCloud:各類組件
此圖轉載,圖片來源@王璐-Louise
Netflix是一個大的模塊,包含幾個核心項目算法
- 服務發現(Eureka)
- 客服端負載均衡
- 斷路器(Hystrix)
- 服務網關
- 分佈式配置
做爲微服務框架,服務註冊和發現組件是必不可少的。 Eureka:服務註冊與發現,CP,高可用。中止更新。 Zookeeper:服務註冊與發現,AP,最終一致性。Zookeeper像一個文件系統,有存儲的功能,保證一致性。 Consul:SpringCloud服務註冊與發現。分佈式的、高可用、橫向擴展的服務器
- service discovery:consul經過DNS或者HTTP接口使服務註冊和服務發現變的很容易,一些外部服務,例如saas提供的也能夠同樣註冊。
- health checking:健康檢測使consul能夠快速的告警在集羣中的操做。和服務發現的集成,能夠防止服務轉發到故障的服務上面。
- key/value storage:一個用來存儲動態配置的系統。提供簡單的HTTP接口,能夠在任何地方操做。
- multi-datacenter:無需複雜的配置,便可支持任意數量的區域。 點評: Zookeeper做爲一個強一致性(CP)的組件,很適合大數據等一些對數據要求嚴格的業務場景,好比hadoop框架中,就使用的是Zookeeper。HBase和kafka Eureka是一個高可用(AP)的組件,適合互聯網企業的一些應用場景,即便一些服務器宕機,也能夠保證對外提供服務。可是中止維護與更新。 Consul也是一個強一致性(CP)組件,自身和SpringCloud框架融合的很是好。 題外話:除了這3個,還有其餘的服務註冊與發現組件,再也不一一贅述,並且,Zookeeper和Consul等CP組件,也能夠構建高可用集羣。
通常來說,微服務結構下,會有不少獨立的業務項目,每一個項目都有一套配置的話,就很繁雜,也不容易維護和保持一致。 Config:是一個配置外部化的組件。Config實現了SpringCloud的分佈式配置功能。
Hystrix斷路器 在微服務架構中,一般有多層服務調用。較低級別的服務中的服務故障可能致使用戶級聯故障。當對特定服務的呼叫達到必定閾值時(Hystrix中的默認值爲5秒內的20次故障),電路打開,不進行通話。在錯誤和開路的狀況下,開發人員能夠提供後備。 注意事項: Hystrix超時和Ribbon客戶 當使用包含Ribbon客戶端的Hystrix命令時,您須要確保您的Hystrix超時配置爲長於配置的Ribbon超時,包括可能進行的任何潛在的重試。例如,若是您的Ribbon鏈接超時爲一秒鐘,而且Ribbon客戶端可能會重試該請求三次,那麼您的Hystrix超時應該略超過三秒鐘。
客戶端負載平衡器:Ribbon Ribbon是一個客戶端負載均衡器,它能夠很好地控制HTTP和TCP客戶端的行爲。Feign已經使用Ribbon數據結構