一、服務降級
什么是服務降級?
當服務器壓力劇增的情況下,根據實際業務情況及流量,對一些服務和頁面有策略的不處理或換種簡單的方式處理,從而釋放服務器資源以保證核心交易正常運作或高效運作。
通過Dubbo-Admin控制台進行操作
可以通過服務降級功能臨時屏蔽某個出錯的非關鍵服務,並定義降級后的返回策略。
向注冊中心寫入動態配置覆蓋規則:
RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension(); Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181")); registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&mock=force:return+null")); |
其中:
- mock=force:return+null 表示消費方對該服務的方法調用都直接返回 null 值,不發起遠程調用。用來屏蔽不重要服務不可用時對調用方的影響。
- 還可以改為 mock=fail:return+null 表示消費方對該服務的方法調用在失敗后,再返回 null 值,不拋異常。用來容忍不重要服務不穩定時對調用方的影響。
二、整合hystrix
Hystrix 旨在通過控制那些訪問遠程系統、服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。Hystrix具備擁有回退機制和斷路器功能的線程和信號隔離,請求緩存和請求打包,以及監控和配置等功能。
演示代碼,只顯示重要部分,全部代碼文章末尾有代碼下載地址
2.1新建Maven項目
2.2dubbo-spring-boot-hystrix
2.2.1pom.xml
2.3dubbo-spring-boot-hystrix-provider
2.3.1pom.xml
2.3.2 對外暴露RPCs實現類
2.4 dubbo-spring-boot-hystrix-consumer
2.4.1 pom.xml
2.4.2調用服務提供者
5.1成功調用
5.2失敗調用
6.源碼
https://gitee.com/niugangxy/dubbo
微信公眾號