diff --git a/53.Dubbo-High-Availability/common-api/pom.xml b/53.Dubbo-High-Availability/common-api/pom.xml new file mode 100644 index 0000000..e517365 --- /dev/null +++ b/53.Dubbo-High-Availability/common-api/pom.xml @@ -0,0 +1,14 @@ + + + + dubbo-boot + cc.mrbird + 1.0 + + + 4.0.0 + common-api + + \ No newline at end of file diff --git a/53.Dubbo-High-Availability/common-api/src/main/java/cc/mrbird/common/api/HelloService.java b/53.Dubbo-High-Availability/common-api/src/main/java/cc/mrbird/common/api/HelloService.java new file mode 100644 index 0000000..bf9c27b --- /dev/null +++ b/53.Dubbo-High-Availability/common-api/src/main/java/cc/mrbird/common/api/HelloService.java @@ -0,0 +1,5 @@ +package cc.mrbird.common.api; + +public interface HelloService { + String hello(String message); +} diff --git a/53.Dubbo-High-Availability/pom.xml b/53.Dubbo-High-Availability/pom.xml new file mode 100644 index 0000000..3af2aac --- /dev/null +++ b/53.Dubbo-High-Availability/pom.xml @@ -0,0 +1,73 @@ + + + 4.0.0 + + cc.mrbird + dubbo-boot + pom + 1.0 + + dubbo-boot + Spring Boot-Dubbo-ZooKeeper + + + common-api + server-provider + server-consumer + + + + org.springframework.boot + spring-boot-starter-parent + 2.0.4.RELEASE + + + + + UTF-8 + UTF-8 + 1.8 + 1.0 + + + + + org.springframework.boot + spring-boot-starter-web + + + + com.alibaba.boot + dubbo-spring-boot-starter + 0.2.0 + + + + + org.apache.zookeeper + zookeeper + 3.4.8 + + + com.101tec + zkclient + 0.10 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + + \ No newline at end of file diff --git a/53.Dubbo-High-Availability/server-consumer/pom.xml b/53.Dubbo-High-Availability/server-consumer/pom.xml new file mode 100644 index 0000000..165cf71 --- /dev/null +++ b/53.Dubbo-High-Availability/server-consumer/pom.xml @@ -0,0 +1,21 @@ + + + + dubbo-boot + cc.mrbird + 1.0 + + 4.0.0 + + server-consumer + + + + cc.mrbird + common-api + ${project.version} + + + \ No newline at end of file diff --git a/53.Dubbo-High-Availability/server-consumer/src/main/java/cc/mrbird/ConsumerApplicaiton.java b/53.Dubbo-High-Availability/server-consumer/src/main/java/cc/mrbird/ConsumerApplicaiton.java new file mode 100644 index 0000000..0c4f7cc --- /dev/null +++ b/53.Dubbo-High-Availability/server-consumer/src/main/java/cc/mrbird/ConsumerApplicaiton.java @@ -0,0 +1,13 @@ +package cc.mrbird; + +import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@EnableDubbo +@SpringBootApplication +public class ConsumerApplicaiton { + public static void main(String[] args) { + SpringApplication.run(ConsumerApplicaiton.class, args); + } +} diff --git a/53.Dubbo-High-Availability/server-consumer/src/main/java/cc/mrbird/consumer/controller/HelloController.java b/53.Dubbo-High-Availability/server-consumer/src/main/java/cc/mrbird/consumer/controller/HelloController.java new file mode 100644 index 0000000..72c37ca --- /dev/null +++ b/53.Dubbo-High-Availability/server-consumer/src/main/java/cc/mrbird/consumer/controller/HelloController.java @@ -0,0 +1,22 @@ +package cc.mrbird.consumer.controller; + +import cc.mrbird.common.api.HelloService; +import com.alibaba.dubbo.config.annotation.Reference; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HelloController { + + // @Reference(url = "http://127.0.0.1:8080") + // @Reference(loadbalance = RoundRobinLoadBalance.NAME) + @Reference(timeout = 1000) + private HelloService helloService; + + @GetMapping("/hello/{message}") + public String hello(@PathVariable String message) { + return this.helloService.hello(message); + } + +} diff --git a/53.Dubbo-High-Availability/server-consumer/src/main/resources/application.yml b/53.Dubbo-High-Availability/server-consumer/src/main/resources/application.yml new file mode 100644 index 0000000..d2339f5 --- /dev/null +++ b/53.Dubbo-High-Availability/server-consumer/src/main/resources/application.yml @@ -0,0 +1,15 @@ +server: + port: 8081 + +dubbo: + application: + # 服务名称,保持唯一 + name: server-consumer + # zookeeper地址,用于从中获取注册的服务 + registry: + address: zookeeper://127.0.0.1:2181 + protocol: + # dubbo协议,固定写法 + name: dubbo + monitor: + protocol: registry \ No newline at end of file diff --git a/53.Dubbo-High-Availability/server-provider/pom.xml b/53.Dubbo-High-Availability/server-provider/pom.xml new file mode 100644 index 0000000..6e624c6 --- /dev/null +++ b/53.Dubbo-High-Availability/server-provider/pom.xml @@ -0,0 +1,27 @@ + + + + dubbo-boot + cc.mrbird + 1.0 + + 4.0.0 + + server-provider + + + + cc.mrbird + common-api + ${project.version} + + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + 2.0.2.RELEASE + + + \ No newline at end of file diff --git a/53.Dubbo-High-Availability/server-provider/src/main/java/cc/mrbird/ProviderApplicaiton.java b/53.Dubbo-High-Availability/server-provider/src/main/java/cc/mrbird/ProviderApplicaiton.java new file mode 100644 index 0000000..c22c05d --- /dev/null +++ b/53.Dubbo-High-Availability/server-provider/src/main/java/cc/mrbird/ProviderApplicaiton.java @@ -0,0 +1,16 @@ +package cc.mrbird; + +import com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.hystrix.EnableHystrix; + +@EnableHystrix +@EnableDubbo +@SpringBootApplication +public class ProviderApplicaiton { + public static void main(String[] args) { + SpringApplication.run(ProviderApplicaiton.class, args); + System.out.println("complete"); + } +} diff --git a/53.Dubbo-High-Availability/server-provider/src/main/java/cc/mrbird/provider/service/HelloServiceImpl.java b/53.Dubbo-High-Availability/server-provider/src/main/java/cc/mrbird/provider/service/HelloServiceImpl.java new file mode 100644 index 0000000..232a450 --- /dev/null +++ b/53.Dubbo-High-Availability/server-provider/src/main/java/cc/mrbird/provider/service/HelloServiceImpl.java @@ -0,0 +1,35 @@ +package cc.mrbird.provider.service; + +import cc.mrbird.common.api.HelloService; +import com.alibaba.dubbo.config.annotation.Service; +import com.alibaba.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance; +import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; +import org.springframework.stereotype.Component; + +import java.util.concurrent.TimeUnit; + +@Service( + interfaceClass = HelloService.class, + weight = 100, + loadbalance = RoundRobinLoadBalance.NAME) +@Component +public class HelloServiceImpl implements HelloService { + + @Override + @HystrixCommand(fallbackMethod = "defaultHello") + public String hello(String message) { + System.out.println("调用 cc.mrbird.provider.service.HelloServiceImpl#hello"); + // try { + // TimeUnit.SECONDS.sleep(2); + // } catch (InterruptedException e) { + // e.printStackTrace(); + // } + String a = null; + a.toString(); + return "hello," + message; + } + + public String defaultHello(String message) { + return "hello anonymous"; + } +} diff --git a/53.Dubbo-High-Availability/server-provider/src/main/resources/application.yml b/53.Dubbo-High-Availability/server-provider/src/main/resources/application.yml new file mode 100644 index 0000000..8c8a7ab --- /dev/null +++ b/53.Dubbo-High-Availability/server-provider/src/main/resources/application.yml @@ -0,0 +1,18 @@ +server: + port: 8080 + +dubbo: + application: + # 服务名称,保持唯一 + name: server-provider + # zookeeper地址,用于向其注册服务 + registry: + address: zookeeper://127.0.0.1:2181 + #暴露服务方式 + protocol: + # dubbo协议,固定写法 + name: dubbo + # 暴露服务端口 (默认是20880,不同的服务提供者端口不能重复) + port: 20880 + monitor: + protocol: registry