```java
@HystrixCommand(fallbackMethod = "str_fal1backMethod",
groupKey = "strGroupCommand",
commandKey = "strCommand",
threadPoolKey = "strThreadPoo1",
commandProperties = {
//設置隔離策略,THREAD表示線程地SEMAPHORE:信號池隔離
@HystrixProperty(name = "execution.isolation.strategy", value = "THREAD"),
//當隔離策略選擇信號池隔離的時候,用來設置信號池的大小(最大并發數)
@HystrixProperty(name = "execution.isolation.semaphore.maxConcurrentRequests", value = "10"),
//配置命令執行的超時時間
@HystrixProperty(name = "execution.isolation.thread.timeoutinMilliseconds", value = "10"),
//是否啟用超時時間
@HystrixProperty(name = "execution.timeout.enabled", value = "true"),
//執行超時的時候是否中斷
@HystrixProperty(name = "execution.isolation.thread.interruptOnTimeout", value = "true"),
//執行被取消的時候是否中斷
@HystrixProperty(name = "execution.isolation.thread.interruptOnCancel", value = "true"),
//允許回調方法執行的最大并發數
@HystrixProperty(name = "fallback.isolation.semaphore.maxConcurrentRequests", value = "10"),
//服務降級是否啟用,是否執行回調函數
@HystrixProperty(name = "fallback.enabled", value = "true"),
@HystrixProperty(name = "circuitBreaker.enabled", value = "true"),
//該屬性用來沒置在滾動時間窗中,斷路器熔斷的最小請求數。例如,默認該值為20的時候
//,如果滾動時間窗(默認10秒)內僅收到了19個請求,即使這19個請求都失敗了,斷路器也不會打開。
@HystrixProperty(name = "circuitBreaker.requestVolumeThreshold", value = "20"),
//該屬性用來沒置在滾動時間窗中,表示在滾動時間窗中,在請求數量超過
//circuitBreaker.requestVolumeThreshold的情況下,如果錯誤
//請求數的百分比超過50,就把斷路器設置為“打開”狀態,否則就設置為“關閉”狀態。
@HystrixProperty(name = "circuitBreaker.errorThresholdPercentage", value = "50"),
//該屬性用來設置當斷路器打開之后的休眠時間窗。休眠時間窗結束之后,
//會將斷路器置為“半開”狀態,嘗試熔斷的請求命令,如果依然失敗就將斷路器繼續設置為“打開”狀態,
//如果成功就沒置為"關閉”狀態。
@HystrixProperty(name = "circuitBreaker.sleepWindowinMilliseconds", value = "5000"),
//斷路器強制打開
@HystrixProperty(name = "circuitBreaker.forceOpen", value = "false"),
//斷路器強制關閉
@HystrixProperty(name = "circuitBreaker.forceClosed", value = "false"),
//滾動時間窗設置,該時間用于斷路器判斷健康度時需要收集信息的持續時間
@HystrixProperty(name = "metrics.rollingStats.timeinMilliseconds", value = "10000"),
//該屬性用來設置滾動時間窗統計指標信息時劃分"桶"的數量,斷路器在收集指標信息的時候會根據
//設置的時間窗長度拆分成多個“桶”來累計各度量值,每個”桶"記錄了一段時間內的采集指標。
//比如10秒內拆分成10個"桶"收集這樣,所以 timeinMilliseconds必須能被numBuckets整除。否則會拋異常@HystrixProperty(name = "metrics.rollingStats.numBuckets", value = "10"),
@HystrixProperty(name = "metrics.rollingStats.numBuckets", value = "10"),
//該屬性用來設置對命令執行的延遲是否使用百分位數來跟蹤和計算。如果沒置為false,那么所有的概要統計都將返回-1。
@HystrixProperty(name = "metrics.rollingPercentile.enabled", value = "false"),
//該屬性用來沒置百分位統計的滾動窗口的持續時間,單位為毫秒。
@HystrixProperty(name = "metrics.rollingPercentile.timeInMilliseconds", value = "60000"),
// 該屬性用來沒置百分位統計滾動窗口中使用“桶”的數量。
@HystrixProperty(name = "metrics.rollingPercentile.numBuckets", value = "60000"),
//該屬性用來沒置在執行過程中每個“桶”中保留的最大執行次數。如果在添動時間窗內發生超過該設定值的執行次數,
//就從最初的位置開始重寫。例如,將該值設置為100,滾動窗口為10秒,若在10秒內一個“桶”中發生了500次執行,
//那么該“桶”中只保留最后的100次執行的統計。另外,增加該值的大小將會增加內存量的消耗,并增加排序百分位數所需的計算時間。
@HystrixProperty(name = "metrics.rollingPercentile.bucketSize", value = "100"),
//該屬性用來設置采集影響斷路器狀態的健康快照(請求的成功、錯誤百分比)的間隔等待時間。
@HystrixProperty(name = "metrics.healthSnapshot.intervalinMilliseconds", value = "500"),
//是否開啟請求緩存
@HystrixProperty(name = "requestCache.enabled", value = "true"),
//HystrixCommand的執行和事件是否打印日志到 HystrixRequestLog 中
@HystrixProperty(name = "requestLog.enabled", value = "true"),},
threadPoolProperties = {
//該參數用來設置執行命令線程池的核心線程數,該值也就是命令執行的最大并發量
@HystrixProperty(name = "coreSize", value = "10"),
//該參數用來沒置線程池的最大隊列大小。當設置為-1時,線程池將使用SynchronousQueue實現的隊列,
//否則將使用LinkedBLockingQueue實現的隊列。
@HystrixProperty(name = "maxQueueSize", value = "-1"),
//該參數用來為隊列設置拒絕閾值。通過該參數,即使隊列沒有達到最大值也能拒絕請求。
//該參數主要是對LinkedBLockingQueue 隊列的補充,因為LinkedBLockingQueue
//隊列不能動態修改它的對象大小,而通過該屬性就可以調整拒絕請求的隊列大小了。
@HystrixProperty(name = "queueSizeRejectionThreshold", value = "5")})
```
- 微服務
- 微服務是什么?
- 微服務架構
- 微服務優缺點
- 微服務技術棧
- 微服務框架對比
- SpringCloud
- SpringCloud是什么
- SpringCloud與SpringBoot對比
- SpringCloud與Dubbo對比
- Rest微服務案例
- 總體介紹
- 父工程構建步驟
- 公共模塊構建步驟
- 服務端模塊構建步驟
- 消費端模塊構建步驟
- Eureka服務注冊與發現
- Eureka是什么
- Eureka原理
- Eureka注冊服務中心構建
- 向Eureka注冊已有微服務
- Eureka的自我保護機制
- Eureka服務發現
- Eureka集群配置
- Eureka與Zookeeper對比
- Ribbon負載均衡
- Ribbon是什么
- Ribbon負載均衡演示
- 構建服務端模塊
- 構建消費端模塊
- Ribbon核心組件IRule
- 自定義負載均衡策略
- Ribbon均衡策略優先級
- 輪詢策略算法
- OpenFeign負載均衡
- OpenFeign是什么
- 負載均衡演示
- 日志打印功能
- 導出功能
- Hystrix斷路器
- Hystrix是什么
- 服務熔斷
- Hystrix服務端構建
- 服務熔斷演示
- 服務熔斷類型
- HystrixProperty配置匯總
- 服務降級
- Hystrix客戶端構建
- 服務降級演示
- fallbackFactory
- 熔斷與降級
- 服務監控
- 網關服務Zuul
- Zuul是什么
- Zuul路由服務構建
- 設置訪問映射規則
- Config分布式配置中心
- Config分布式配置中心是什么
- Config服務端與Git通信
- Config客戶端獲取配置
- Config客戶端動態刷新
- Bus消息總線
- Bus消息總線是什么
- Bus消息總線原理
- 廣播通知設計思想
- 廣播通知演示
- 定點通知演示
- Stream消息驅動
- 為什么要引入Stream
- Stream消息驅動是什么
- Stream設計思想
- Stream流程和注解
- Stream案例演示
- 重復消費問題
- 消息持久化
- Sleuth分布式鏈路跟蹤
- Sleuth是什么
- 搭建鏈路監控
- SpringCloud Alibaba
- Nacos注冊與配置中心
- Nacos是什么
- 安裝并運行Nacos
- Nacos注冊中心
- 服務端入住Nacos
- 消費端入住Nacos
- Nacos負載均衡演示
- 服務注冊中心對比
- Nacos的AP和CP轉化
- Nacos配置中心
- 基礎配置演示
- Nacos分類配置
- Nacos集群搭建
- Sentinel實現熔斷與限流
- Sentinel是什么
- Sentinel環境搭建
- Sentinel監控微服務演示
- Sentinel流控規則
- 流量監控的作用
- 設置流控規則
- Sentinel降級規則
- 熔斷降級作用
- 設置降級規則
- Sentinel熱點限流
- 什么是熱點
- 設置熱點限流
- Sentinel系統限流
- @SentinelResource
- @SentinelResource屬性
- @SentinelResource限流演示
- @SentinelResource熔斷演示
- 規則持久化
- 熔斷框架比較
- Seata分布式事務
- 分布式事務問題
- Seata是什么
- Seata分布式事務過程
- Seata環境搭建
- 演示示例
- 業務說明
- 數據庫環境準備
- 微服務環境準備
- 測試
- Consul服務注冊與發現
- Consul是什么
- Consul能做什么
- 環境搭建
- Windows平臺
- 服務端入住Consul
- 消費端入住Consul
- 注冊中心對比
- Zookeeper服務注冊與發現
- Zookeeper是什么
- 環境搭建
- 服務端入住Zookeeper
- 消費端入住Zookeeper
- 網關服務Gateway
- Gateway是什么
- Gateway能做什么
- Gateway對比Zuul
- 三大核心概念
- Gateway工作流
- 環境搭建
- 網關路由配置方式
- 配置文件配置
- 代碼中配置
- 動態路由
- Predicate斷言
- 斷言是什么
- 常用斷言
- Filter過濾器
- 過濾器是什么
- 過濾器種類
- 自定義過濾器