1. springboot整合dubbo
-
在provider端,添加maven引入,修改pom.xml文件
引入springboot,版本:2.3.2.RELEASE,dubbo(org.apache.dubbo)版本:2.7.8,服務注冊中心采用consul,添加consul注冊支持


添加org.apache.curator包引入:

-
在程序主入口處,添加配置文件掃描路徑及啟用dubbo

配置類:DubboConfiguration

里面包含應用信息,注冊中心配置及應用服務協議定義在Annotation目錄下,定義服務接口定義IUserService及服務實現UserServiceImp


-
consumer端,同樣引入springboot運行程序,pom文件的內容與provider端一樣
程序主入口如下:

定義一個服務接口IUserOperateService與實現UserOperateService,用來調用provider端提供的服務


注意,dubbo的注解都有所變化,見紅圈處 -
運行provider與consumer端,可以運行成功,springboot整合dubbo完成
2. dubbo集成hystrix框架
-
看一下hystrix工作流程,參考url: https://www.jianshu.com/p/611a7f150180

-
Dubbo服務降級

-
Hystrix
Hystrix 旨在通過控制那些訪問遠程系統、服務和第三方庫的節點,從而對延遲和故障提供更強大的容錯能力。Hystrix具備擁有回退機制和斷路器功能的線程和信號隔離,請求緩存和請求打包,以及監控和配置等功能。
在provider項目中,添加Hystrix依賴
<!--服務降級服務容錯 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> <version>2.2.5.RELEASE</version> </dependency>
在項目中,maven添加web引用,否則provider會自動退出

在provider啟動端,添加Hytrix服務熔斷啟用注解@EnableHystrix

在Provider端,添加UserServiceImp和IUserService服務定義,驗證服務熔斷

定義為DubboService,添加Hystrix注解,定義熔斷條件,超時時間為2s
-
Consumer端Hystrix配置
主程序,添加配置@EnableHystrix

@EnableDubbo(scanBasePackages = "com.dubbo.consumer.Annotation"),掃描dubbo相關配置文件定義類
新建UserOperateService和IUserOperateService操作來,用來遠程調用userservice服務

定義一個Controller,進行熔斷測試

-
運行調試
輸入地址:http://localhost:8580/GetHelloWorldReply?uid=xujk
多刷新幾次,看返回的結果也是不同的
成功調用:

失敗(超時)調用:

