Dubbo的高可用
This commit is contained in:
parent
727f860abd
commit
b6f95a6d1e
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>dubbo-boot</artifactId>
|
||||||
|
<groupId>cc.mrbird</groupId>
|
||||||
|
<version>1.0</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<artifactId>common-api</artifactId>
|
||||||
|
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package cc.mrbird.common.api;
|
||||||
|
|
||||||
|
public interface HelloService {
|
||||||
|
String hello(String message);
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,73 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<groupId>cc.mrbird</groupId>
|
||||||
|
<artifactId>dubbo-boot</artifactId>
|
||||||
|
<packaging>pom</packaging>
|
||||||
|
<version>1.0</version>
|
||||||
|
|
||||||
|
<name>dubbo-boot</name>
|
||||||
|
<description>Spring Boot-Dubbo-ZooKeeper</description>
|
||||||
|
|
||||||
|
<modules>
|
||||||
|
<module>common-api</module>
|
||||||
|
<module>server-provider</module>
|
||||||
|
<module>server-consumer</module>
|
||||||
|
</modules>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-parent</artifactId>
|
||||||
|
<version>2.0.4.RELEASE</version>
|
||||||
|
<relativePath/>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
|
<java.version>1.8</java.version>
|
||||||
|
<project.version>1.0</project.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-web</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<!-- dubbo -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.alibaba.boot</groupId>
|
||||||
|
<artifactId>dubbo-spring-boot-starter</artifactId>
|
||||||
|
<version>0.2.0</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- zookeeper -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.zookeeper</groupId>
|
||||||
|
<artifactId>zookeeper</artifactId>
|
||||||
|
<version>3.4.8</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.101tec</groupId>
|
||||||
|
<artifactId>zkclient</artifactId>
|
||||||
|
<version>0.10</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<source>${java.version}</source>
|
||||||
|
<target>${java.version}</target>
|
||||||
|
<encoding>${project.build.sourceEncoding}</encoding>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>dubbo-boot</artifactId>
|
||||||
|
<groupId>cc.mrbird</groupId>
|
||||||
|
<version>1.0</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>server-consumer</artifactId>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cc.mrbird</groupId>
|
||||||
|
<artifactId>common-api</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<parent>
|
||||||
|
<artifactId>dubbo-boot</artifactId>
|
||||||
|
<groupId>cc.mrbird</groupId>
|
||||||
|
<version>1.0</version>
|
||||||
|
</parent>
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
<artifactId>server-provider</artifactId>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>cc.mrbird</groupId>
|
||||||
|
<artifactId>common-api</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
|
||||||
|
<version>2.0.2.RELEASE</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
||||||
|
|
@ -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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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
|
||||||
Loading…
Reference in New Issue