本次针对dubbo demo代码进行简单的升级,包括以下:
1. dubbo接口抽取
2. dubbo依赖版本统一管理实现
3. dubbo服务集群简单实现
一. dubbo接口抽取
1. 新建Maven工程 dubbo-demo-api
public interface DemoProviderService {
public String sayHello(String name);
}
删除原来的provider中的接口(实现类保留),删除原来的provider中的接口
2. 在provider与consumer的pom.xml中,加入依赖:
<dependency>
<groupId>com.****.dubbo</groupId>
<artifactId>dubbo-demo-api</artifactId>
</dependency>
二. dubbo依赖版本统一管理实现
1. 新建Maven工程 dubbo-demo-parent
2. 在子项目中引入parent:
<parent>
<groupId>com.****.dubbo</groupId>
<artifactId>dubbo-demo-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
接着删除子项目pom.xml中不必要的版本信息
3. 在 dubbo-demo-parent 的 pom.xml 中写入:
<properties>
<dubbo-demo-api.version>0.0.1-SNAPSHOT</dubbo-demo-api.version>
<dubbo.verison>2.6.0</dubbo.verison>
<zkclient.version>0.10</zkclient.version>
<curator-framework.version>4.0.1</curator-framework.version>
<fastjson.version>1.2.46</fastjson.version>
<log4j.version>1.2.17</log4j.version>
<slf4j-api.version>1.7.25</slf4j-api.version>
<commons-lang3.version>3.4</commons-lang3.version>
<netty-all.version>4.0.35.Final</netty-all.version>
<junit.version>4.12</junit.version>
</properties>
统一版本管理之后,用el表达式的方式,在每个jar包的版本,如:
<version>${dubbo-demo-api.version}</version>
三. dubbo服务集群简单实现步骤:
1. 启动zookeeper,启动一个provider服务
2. 现在内存中已经有一个provider服务
<dubbo:protocol name="dubbo" port="20880"/>
public class Provider {
public static void main(String[] args) {
//从类路径下读取XML文件生成上下文环境
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-demo-provider.xml");
context.start();
System.out.println("服务提供者向zookeeper注册中心注册服务成功(端口:20880)");
try {
System.in.read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
context.close();
}
}
启动dubbo-demo-provider服务,然后再修改:
<dubbo:protocol name="dubbo" port="20880"/>端口,20881
public class Provider {
public static void main(String[] args) {
//从类路径下读取XML文件生成上下文环境
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-demo-provider.xml");
context.start();
System.out.println("服务提供者向zookeeper注册中心注册服务成功(端口:20881)");
try {
System.in.read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
context.close();
}
}
启动dubbo-demo-provider服务,再启动一个服务,这时候,可以搞一个dubbo admin就可以查到两个provider在提供服务了
这就是简单的dubbo服务集群的简单实现。