下载zookeeper
网址 https://zookeeper.apache.org/releases.html
(不要用源代码发布版本)
双击 bin/zkServer.cmd
若闪退,则打开这个,在倒数第二行加上 pause
这样在双击就可以看到错误信息
一般错误时在 conf文件夹下面少一个zoo.cfg的文件
把zoo_sample.cfg 复制一份命名为zoo.cfg即可
下载dubbo-admin 监控程序
下在地址 https://github.com/apache/dubbo-admin/tree/master
可以在dubbo-admin-master\dubbo-admin\src\main\resources 下的application.properties配置文件进行修改配置信息。
zookeeper 本身并不是一个服务软件,它就是一个jar包,帮助你的程序连接到zookeeper,并利用zookeeper消费,提供服务
在项目目录下打包dubbo-admin
mvn clean package -Dmaven.test.skip=true
完成后在dubbo-admin-master\dubbo-admin\target 下有
dubbo-admin-0.0.1-SNAPSHOT.jar
测试:运行zookeeper服务器后
在命令行执行 java -jar …/dubbo-admin-0.0.1-SNAPSHOT.jar
在网页上 http://localhost:7001
页面输入用户名和密码 root
SpringBoot 整合
导入依赖(服务器和客户端一样)
<!--导入依赖 zookeeper+dubbo-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
<!--解决日志冲突-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.curator/curator-recipes -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
//版本要与下载的版本一致
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.1</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
服务器配置:
application.properties
server.port=8001
#服务应用名
dubbo.application.name=zookeeper-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#那些服务要被注册
dubbo.scan.base-packages=com.wh.service
注册服务
import org.apache.dubbo.config.annotation.Service;
//zokeeper注册与发现
@Service //是apache下的service 而不是spring下的
@Component //使用了Dubbo后尽量不要用Service
public class TickerServiceImpl implements TicketService {
@Override
public String getTicket() {
return "狂神说java";
}
}
运行项目后,在监控页面可以看到
点击进入,可以看到
此时服务器配置成功
客户端配置
application.properties
server.port=8002
#消费者去哪里拿服务需要暴露自己的名字
dubbo.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2128
Uservice
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;
/**
* @author wanghao
* @date 2020/5/28 18:49
*/
@Service //这里是spring下的
public class UserService {
//想拿到zookeeper-servker提供的票,要去注册中心拿到服务
//import org.apache.dubbo.config.annotation.Reference;
@Reference //引用,正常开发:引入Pom坐标 现在没有:可以定义路径相同的接口名(及服务器的TicketService copy过来)
TicketService ticketService;
public void buyTicket(){
String ticket = ticketService.getTicket();
System.out.println("在注册中心拿到一张票>"+ticket);
}
}
测试
结果