一springcloudhystrix源碼深度分析

NO IMAGE

spring cloud hystrix原理

每週會定時更新spring cloud hystrix 對netflix公司的產品封裝實現原理,在這裡,你會學到實實際際的乾貨,如果文中有不正確的地方,還請多多包涵。

預計更新內容包括:
1.依賴包整理
2.對依賴包使用進行說明
3.分析如何封裝的netflix系列產品以及開源第三方輔助工具jar包。

spring cloud hystrix依賴原理圖

一springcloudhystrix源碼深度分析

自動配置實現原理解析

1.cloud commons 包 有一個作用之一:circuitbreaker包 實現了@EnableHystrix註解能否開啟dashboard的攔截功能。配置項是:spring.cloud.circuit.breaker.enabled 默認就是true. 2.我們回到spring-cloud-netflix-core.jar 該類實現了自動配置:

一springcloudhystrix源碼深度分析

  • HystrixAutoConfiguration
    一springcloudhystrix源碼深度分析

1. HealthIndicatorAutoConfiguration:該類主要是收集在spring-boot-actuator.jar包的健康狀配置態檢查參數:如下圖所示。這裡依賴監控jar包。也是集成使用的關鍵類。

一springcloudhystrix源碼深度分析

2. HystrixMetricsBinder 用於收集監控指標用的。後續會再說明。 對應的開源庫
micrometer

3. HystrixHealthIndicator:此默認實現不會更改系統狀態包括所有開放電路的名稱。


內部類:HystrixServletAutoConfiguration:

一springcloudhystrix源碼深度分析

1. HystrixMetricsStreamServlet: HystrixMetricsStreamServlet extends HystrixSampleSseServlet
該類實現了集成hystrix-metrics-event-stream.jar的功能。
集成的原理:配合Endpoint端點實現一個servlet: 裝配HystrixStreamEndpoint bean 這樣就可以暴漏servlet 的url就相當於一個接口能夠訪問到了,
訪問的地址是:HystrixSampleSseServlet重寫的get()方法,該方法有一個死循環,當請求來到的時候,不會釋放連接 同時藉助於rxjava完成數據的不斷訂閱進行輸出到請求方,完成頁面的數據的不斷顯示流動。
dashboard 模塊的監控數據流,就是從這裡採集過去的
2.HystrixCommandAspect:類的作用是攔截@HystrixCommand 的方法 藉助於(aspectjweaver-1.8.13.jar)包實現的。 這裡也用到了原生netflix的jar包:hystrix-javanica jar
hystrix-serialization等。

一springcloudhystrix源碼深度分析


內部類:HystrixWebfluxManagementContextConfiguration
該類主要是支持webflux的特性:用到的jar包:rxjava rxjava-reactive-streams hystrix-core 

  • HystrixSecurityAutoConfiguration

1.功能: 註冊現有插件不包括Concurrent Strategy插件
2.依賴的jar包:hystrix-core jar的來實現。配置項:hystrix.shareSecurityContext


  • HystrixCircuitBreakerConfiguration
如圖所示:主要是實現切面裝配 和應用優雅停機的支持。

一springcloudhystrix源碼深度分析


HystrixCommands 類

一springcloudhystrix源碼深度分析

該類的主要作用: 可以支持webflux特性,相關jar包:reactives-treams,rxjava 。

總結

spring-cloud-netflix-core的作用

1.實現應用健康參數收集
2.暴露servlet應用 便於採集數據到頁面
3.上下文訪問權限控制
4.支持webflux特性。

二 springcloud hystrix 與原生netflix集成的關聯類

相關文章

乾貨|BAT等一線大廠Elasticsearch面試題解讀

嚴選|Elasticsearch中文社區201901錯題本

數據庫持久層封裝設計

二springcloudhystrix與原生netflix集成的關聯類