项目demo 下载链接 https://gitee.com/leonzhang2013/dubbo-demo
第一步安装启动 zookeeper (为了方便试验,这里使用 window环境,在linux 方式启动配置方式是一样的,只是最后启动的 方法不同)
1、 zookeeper 官网下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/
2、这里下载的是 stable (稳定版) 版本下载。
下载完成后,解压后。
开始配置。(这里我解压到了 F:/server)
进入 zookeeper/conf目录下,
1、复制 zoo_sample.cfg 并重命名为:zoo.cfg
2、打开 zoo.cfg。编辑dataDir 为对应zookeeper目录下。方便查找,然后保存。
dataDir=F:/server/zookeeper/data
3、启动 cmd ,cd 到 F:/server/zookeeper/bin 目录下
输入 zkServer.cmd 启动 zookeeper .(在linux 下命令为 zkServer.sh start )
恭喜你单机版的 zookeeper 部署并启动成功。
第二步:使用 dubbo 构架一个简单的分布式项目。
工程目录如下。dubbo-demo2
第一步 首先创建 dubbo-demo 外部工程
1、创建一个 spring boot 工程。修改 pom
外部工程用户 统一管理项目的依赖包。
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>dubbo-demo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<!--工程内所有版本在这里配置 -->
<properties>
<java.version>1.8</java.version>
<spring.my.version>2.1.3.RELEASE</spring.my.version>
<zk.version>0.10</zk.version>
<dubbo.version>2.0.0</dubbo.version>
</properties>
<!--所有继承自该工程的,共享下面的依赖包,不用再次引入-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--dubbo 依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
<!--zookeeper -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
</dependency>
<!--my interface-->
<dependency>
<groupId>com.example</groupId>
<artifactId>myinterface</artifactId>
</dependency>
<!--spring boot test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
<!--依赖管理,这里每个依赖都需要配置版本号,其他工程引入时,就不需要在加入版本号了,统一使用这里的版本号 -->
<dependencyManagement>
<dependencies>
<!--dubbo-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<!--zookeeper -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>${zk.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>${spring.my.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>myinterface</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
第二步 创建 myinterface。
创建一个 module-> maven 不需要任何依赖。
只写一个项目共用的接口类,
/**
* @Author: zll
* @Date @{DATE} 22:58
*/
public interface HelloService {
String sayHello(String name);
}
第三步,创建 provider 服务提供者:
创建一个 module-> spring initializr 只需要 web 依赖。(可以不用,只是用它帮我生成的 application)
pom 如下:
<?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>
<parent>
<groupId>com.example</groupId>
<artifactId>dubbo-demo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.zll</groupId>
<artifactId>provider</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>provider</name>
<dependencies>
<!--继承了父类的依赖,如果不是共享的,就单独加入。-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application添加 dubbo 注解
@SpringBootApplication
@EnableDubboConfiguration //开启dubbo 配置
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
编写 service 实现类:
import com.alibaba.dubbo.config.annotation.Service; //不要导错了
@Component
@Service(interfaceClass = HelloService.class) // 千万注意这里servier 要使用 dubbo 的。
public class HelloServiceImpl implements HelloService {
@Override
public String sayHello(String name) {
return "hello dubbo~!!"+name;
}
}
application.properties
server.port=8000 #随便写,只要不冲突就行
# 用于名称,会显示在dubbo 上,一定要见名知意
spring.application.name=dubbo-demo-provider
#表示注册该模块为服务提供者。默认是true
spring.dubbo.server=true
#注册 zookeeper 的地址
spring.dubbo.registry=zookeeper://localhost:2181
第四步,创建consumer 服务消费。
和第三步一样。创建一个 module-> spring initializr 只需要 web 依赖。
pom.xml
<?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>
<parent>
<groupId>com.example</groupId>
<artifactId>dubbo-demo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.zll</groupId>
<artifactId>consumer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>consumer</name>
<dependencies>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
application
@SpringBootApplication
@EnableDubboConfiguration //开启dubbo 配置
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
controller
import com.alibaba.dubbo.config.annotation.Reference;//这个别导错了,不然helloService 为null
/**
* @Author: zll
* @Date @{DATE} 23:14
*/
@RestController
@RequestMapping("dubbo")
public class HelloCntroller {
@Reference //这里会自动去dubbo 找 HelloService 的服务实现类。
public HelloService helloService;
@RequestMapping("hello/{name}")
public String getHello(@PathVariable("name") String name){
return helloService.sayHello(name);
}
}
application.properties
server.port=8001
spring.application.name=dubbo-demo-cousumer
spring.dubbo.registry=zookeeper://127.0.0.1:2181
好了简单的工程搭建完成。
下面先运行 provider ,在运行 consumer .
输入:http://localhost:8001/dubbo/hello/zll
这里如果有个 dubbo的 可视化界面。
下载路径