使用springcloud的hystrix功能,有幾種方式:
1、單應用監聽,也可以用於測試
引用包:
org.springframework.boot模擬呼叫失敗情況:spring-boot-starter-actuator
org.springframework.cloud
spring-cloud-starter-hystrix
org.springframework.cloud
spring-cloud-starter-hystrix-dashboard
unable to connect to command metric stream
如下:
修改monitor位址後為:
使用hystrix示例:
@enablediscoveryclient
@enablecircuitbreaker
@enablehystrixdashboard
public class monitorserverboot
}
@component若想看到效果斷路效果,需要呼叫失敗服務public class calldependencyservice else
}public string fallback()
}
特別說明:
@enablehystrix與@enablecircuitbreaker效果一樣,都是enablecircuitbreaker,所以建議直接使用@enablecircuitbreaker註解
@hystrixcommand註解與@enablecircuitbreaker配合使用,否則無效
如果你使用了feign,feign是自帶斷路器的,並且是已經開啟了。如果使用feign不想用斷路器的話,可以在配置檔案中關閉它,配置如下:feign.hystrix.enabled=false
如果這個區域一直為loading..... 表示很可能沒有使用執行緒隔離方式,而是訊號模式
hystrix.command.default.execution.isolation.strategy= thread|semaphore應用場景選擇:
執行緒池隔離:
1、 第三方應用或者介面
2、 併發量大
訊號量隔離:
1、 內部應用或者中介軟體(redis)
2、 併發需求不大
hystrix.command.default和hystrix.threadpool.default中的default為預設commandkey
hystrix.command.default.execution.isolation.thread.timeoutinmilliseconds 命令執行超時時間,預設1000ms
hystrix.command.default.execution.timeout.enabled 執行是否啟用超時,預設啟用true
hystrix.command.default.execution.isolation.thread.interruptontimeout 發生超時是是否中斷,預設true
hystrix.command.default.execution.isolation.semaphore.maxconcurrentrequests 最大併發請求數,預設10,該引數當使用executionisolationstrategy.semaphore策略時才有效。如果達到最大併發請求數,請求會被拒絕。理論上選擇semaphore size的原則和選擇thread size一致,但選用semaphore時每次執行的單元要比較小且執行速度快(ms級別),否則的話應該用thread。
semaphore應該佔整個容器(tomcat)的執行緒池的一小部分。
這些引數可以應用於hystrix的thread和semaphore策略
hystrix.command.default.requestcache.enabled 預設true,需要過載getcachekey(),返回null時不快取
hystrix.command.default.requestlog.enabled 記錄日誌到hystrixrequestlog,預設true
hystrix.collapser.default.maxrequestsinbatch 單次批處理的最大請求數,達到該數量觸發批處理,預設integer.max_value
hystrix.collapser.default.timerdelayinmilliseconds 觸發批處理的延遲,也可以為建立批處理的時間+該值,預設10
hystrix.collapser.default.requestcache.enabled 是否對hystrixcollapser.execute() and hystrixcollapser.queue()的cache,預設true
執行緒數預設值10適用於大部分情況(有時可以設定得更小),如果需要設定得更大,那有個基本得公式可以follow:
requests per second at peak when healthy × 99th percentile latency in seconds + some breathing room
每秒最大支撐的請求數 (99%平均響應時間 + 快取值)
比如:每秒能處理1000個請求,99%的請求響應時間是60ms,那麼公式是:
1000 (0.060+0.012)
基本得原則時保持執行緒池盡可能小,他主要是為了釋放壓力,防止資源被阻塞。
當一切都是正常的時候,執行緒池一般僅會有1到2個執行緒啟用來提供服務
學習SpringCloud之斷路器Hystrix
以下示例均基於springcloud的greenwich.sr1版本。org.springframework.cloudgroupid spring cloud starter netflix hystrixartifactid dependency dependencies 以 enablehys...
SpringCloud之Dashboard 流監控
新建springcloud consumer hystrix dashboard模組 新增依賴 org.springframework.cloudgroupid spring cloud starter hystrixartifactid 1.4.6.releaseversion dependenc...
SpringCloud學習之eureka集群配置
如果是單節點的註冊中心,是無法保證系統穩定性的,當然現在專案部署架構不可能是單節點的。集群節點的部署思路 通過執行多個例項並請求他們相互註冊,來完成註冊中心的高可用性 結伴註冊 注意 用於本機模擬的前期準備工作 將電腦上hosts 新增如下配置 linux下位置 etc hosts 127.0.0....