From dbbcd003d6a5228195d4ee1681947501d4f5196c Mon Sep 17 00:00:00 2001 From: YunaiV <> Date: Thu, 14 May 2020 22:32:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20Hystrix=20=E5=85=A5?= =?UTF-8?q?=E9=97=A8=E7=A4=BA=E4=BE=8B=EF=BC=88Hystrix=20+=20Dubbo?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../labx-07-sca-dubbo-demo01-provider/pom.xml | 6 +- .../pom.xml | 6 +- .../pom.xml | 85 +++++++++++++++++++ .../labx23/demo/DemoApplication.java | 15 ++++ .../demo/controller/DemoController.java | 35 ++++++++ .../src/main/resources/application.yaml | 17 ++++ .../pom.xml | 15 ++++ .../labx23/userservice/api/UserService.java | 7 ++ .../pom.xml | 73 ++++++++++++++++ .../userservice/UserServiceApplication.java | 13 +++ .../userservice/service/UserServiceImpl.java | 13 +++ .../src/main/resources/application.yaml | 24 ++++++ .../labx-23-scn-hystrix-dubbo-demo/pom.xml | 22 +++++ labx-23/pom.xml | 2 + 14 files changed, 327 insertions(+), 6 deletions(-) create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/pom.xml create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/DemoApplication.java create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/controller/DemoController.java create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/resources/application.yaml create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service-api/pom.xml create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service-api/src/main/java/cn/iocoder/springcloud/labx23/userservice/api/UserService.java create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/pom.xml create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/UserServiceApplication.java create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/service/UserServiceImpl.java create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/resources/application.yaml create mode 100644 labx-23/labx-23-scn-hystrix-dubbo-demo/pom.xml diff --git a/labx-07/labx-07-sca-dubbo-demo01/labx-07-sca-dubbo-demo01-provider/pom.xml b/labx-07/labx-07-sca-dubbo-demo01/labx-07-sca-dubbo-demo01-provider/pom.xml index d34bd4db..b90611cc 100644 --- a/labx-07/labx-07-sca-dubbo-demo01/labx-07-sca-dubbo-demo01-provider/pom.xml +++ b/labx-07/labx-07-sca-dubbo-demo01/labx-07-sca-dubbo-demo01-provider/pom.xml @@ -20,9 +20,9 @@ + 引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。 + 在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系 + --> diff --git a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-rest/pom.xml b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-rest/pom.xml index ccff8b61..fcbc01ae 100644 --- a/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-rest/pom.xml +++ b/labx-07/labx-07-sca-dubbo-demo02/labx-07-sca-dubbo-demo02-provider-rest/pom.xml @@ -21,9 +21,9 @@ + 引入 Spring Boot、Spring Cloud、Spring Cloud Alibaba 三者 BOM 文件,进行依赖版本的管理,防止不兼容。 + 在 https://dwz.cn/mcLIfNKt 文章中,Spring Cloud Alibaba 开发团队推荐了三者的依赖关系 + --> diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/pom.xml b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/pom.xml new file mode 100644 index 00000000..5dbf7a82 --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/pom.xml @@ -0,0 +1,85 @@ + + + + labx-23-scn-hystrix-dubbo-demo + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-23-scn-hystrix-dubbo-demo-application + + + 1.8 + 1.8 + 2.2.4.RELEASE + Hoxton.SR1 + 2.2.0.RELEASE + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + + + + cn.iocoder.springboot.labs + labx-23-scn-hystrix-dubbo-demo-user-service-api + 1.0-SNAPSHOT + + + + + org.springframework.boot + spring-boot-starter-web + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-dubbo + + + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + + + diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/DemoApplication.java b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/DemoApplication.java new file mode 100644 index 00000000..fc9b5e6c --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/DemoApplication.java @@ -0,0 +1,15 @@ +package cn.iocoder.springcloud.labx23.demo; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; + +@SpringBootApplication +@EnableCircuitBreaker // 声明开启断路器 +public class DemoApplication { + + public static void main(String[] args) { + SpringApplication.run(DemoApplication.class, args); + } + +} diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/controller/DemoController.java b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/controller/DemoController.java new file mode 100644 index 00000000..ae52860f --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/java/cn/iocoder/springcloud/labx23/demo/controller/DemoController.java @@ -0,0 +1,35 @@ +package cn.iocoder.springcloud.labx23.demo.controller; + +import cn.iocoder.springcloud.labx23.userservice.api.UserService; +import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; +import org.apache.commons.lang.exception.ExceptionUtils; +import org.apache.dubbo.config.annotation.Reference; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/demo") +public class DemoController { + + private Logger logger = LoggerFactory.getLogger(getClass()); + + @Reference(protocol = "dubbo", version = "1.0.0") + private UserService userService; + + @GetMapping("/get_user") + @HystrixCommand(fallbackMethod = "getUserFallback") + public String getUser(@RequestParam("id") Integer id) { + logger.info("[getUser][准备调用 user-service 获取用户({})详情]", id); + return userService.getUser(id); + } + + public String getUserFallback(Integer id, Throwable throwable) { + logger.info("[getUserFallback][id({}) exception({})]", id, ExceptionUtils.getRootCauseMessage(throwable)); + return "mock:User:" + id; + } + +} diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/resources/application.yaml b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/resources/application.yaml new file mode 100644 index 00000000..e41d088e --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-application/src/main/resources/application.yaml @@ -0,0 +1,17 @@ +spring: + application: + name: demo-consumer + cloud: + # Nacos 作为注册中心的配置项 + nacos: + discovery: + server-addr: 127.0.0.1:8848 + +# Dubbo 配置项,对应 DubboConfigurationProperties 类 +dubbo: + # Dubbo 服务注册中心配置,对应 RegistryConfig 类 + registry: + address: spring-cloud://127.0.0.1:8848 # 指定 Dubbo 服务注册中心的地址 + # Spring Cloud Alibaba Dubbo 专属配置项,对应 DubboCloudProperties 类 + cloud: + subscribed-services: user-service # 设置订阅的应用列表,默认为 * 订阅所有应用。 diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service-api/pom.xml b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service-api/pom.xml new file mode 100644 index 00000000..4a242a78 --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service-api/pom.xml @@ -0,0 +1,15 @@ + + + + labx-23-scn-hystrix-dubbo-demo + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-23-scn-hystrix-dubbo-demo-user-service-api + + + diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service-api/src/main/java/cn/iocoder/springcloud/labx23/userservice/api/UserService.java b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service-api/src/main/java/cn/iocoder/springcloud/labx23/userservice/api/UserService.java new file mode 100644 index 00000000..a27ae4eb --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service-api/src/main/java/cn/iocoder/springcloud/labx23/userservice/api/UserService.java @@ -0,0 +1,7 @@ +package cn.iocoder.springcloud.labx23.userservice.api; + +public interface UserService { + + String getUser(Integer id); + +} diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/pom.xml b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/pom.xml new file mode 100644 index 00000000..7dbb598d --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/pom.xml @@ -0,0 +1,73 @@ + + + + labx-23-scn-hystrix-dubbo-demo + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-23-scn-hystrix-dubbo-demo-user-service + + + 1.8 + 1.8 + 2.2.4.RELEASE + Hoxton.SR1 + 2.2.0.RELEASE + + + + + + + org.springframework.boot + spring-boot-starter-parent + ${spring.boot.version} + pom + import + + + org.springframework.cloud + spring-cloud-dependencies + ${spring.cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-alibaba-dependencies + ${spring.cloud.alibaba.version} + pom + import + + + + + + + + cn.iocoder.springboot.labs + labx-23-scn-hystrix-dubbo-demo-user-service-api + 1.0-SNAPSHOT + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-dubbo + + + + diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/UserServiceApplication.java b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/UserServiceApplication.java new file mode 100644 index 00000000..4c8cff75 --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/UserServiceApplication.java @@ -0,0 +1,13 @@ +package cn.iocoder.springcloud.labx23.userservice; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class UserServiceApplication { + + public static void main(String[] args) { + SpringApplication.run(UserServiceApplication.class); + } + +} diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/service/UserServiceImpl.java b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/service/UserServiceImpl.java new file mode 100644 index 00000000..2215bdc3 --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/java/cn/iocoder/springcloud/labx23/userservice/service/UserServiceImpl.java @@ -0,0 +1,13 @@ +package cn.iocoder.springcloud.labx23.userservice.service; + +import cn.iocoder.springcloud.labx23.userservice.api.UserService; + +@org.apache.dubbo.config.annotation.Service(protocol = "dubbo", version = "1.0.0") +public class UserServiceImpl implements UserService { + + @Override + public String getUser(Integer id) { + return "User:" + id; + } + +} diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/resources/application.yaml b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/resources/application.yaml new file mode 100644 index 00000000..f62232a7 --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/labx-23-scn-hystrix-dubbo-demo-user-service/src/main/resources/application.yaml @@ -0,0 +1,24 @@ +spring: + application: + name: user-service + cloud: + # Nacos 作为注册中心的配置项 + nacos: + discovery: + server-addr: 127.0.0.1:8848 # Nacos 服务器地址 + +# Dubbo 配置项,对应 DubboConfigurationProperties 类 +dubbo: + scan: + base-packages: cn.iocoder.springcloud.labx23.userservice.service # 指定 Dubbo 服务实现类的扫描基准包 + # Dubbo 服务暴露的协议配置,对应 ProtocolConfig Map + protocols: + dubbo: + name: dubbo # 协议名称 + port: -1 # 协议端口,-1 表示自增端口,从 20880 开始 + # Dubbo 服务注册中心配置,对应 RegistryConfig 类 + registry: + address: spring-cloud://127.0.0.1:8848 # 指定 Dubbo 服务注册中心的地址 + # Spring Cloud Alibaba Dubbo 专属配置项,对应 DubboCloudProperties 类 + cloud: + subscribed-services: '' # 设置订阅的应用列表,默认为 * 订阅所有应用。 diff --git a/labx-23/labx-23-scn-hystrix-dubbo-demo/pom.xml b/labx-23/labx-23-scn-hystrix-dubbo-demo/pom.xml new file mode 100644 index 00000000..3b2c6363 --- /dev/null +++ b/labx-23/labx-23-scn-hystrix-dubbo-demo/pom.xml @@ -0,0 +1,22 @@ + + + + labx-23 + cn.iocoder.springboot.labs + 1.0-SNAPSHOT + + 4.0.0 + + labx-23-scn-hystrix-dubbo-demo + pom + + + labx-23-scn-hystrix-dubbo-demo-user-service + labx-23-scn-hystrix-dubbo-demo-user-service-api + labx-23-scn-hystrix-dubbo-demo-application + + + + diff --git a/labx-23/pom.xml b/labx-23/pom.xml index 6179dfad..0cdfdfcd 100644 --- a/labx-23/pom.xml +++ b/labx-23/pom.xml @@ -23,6 +23,8 @@ labx-23-scn-hystrix-dashboard-turbine labx-23-scn-hystrix-feign + + labx-23-scn-hystrix-dubbo-demo