一.安装zookeeper
1.下载zookeeper
https://zookeeper.apache.org/releases.html
2.解压zookeeper
apache-zookeeper-3.6.1-bin.tar.gz>apache-zookeeper-3.6.1-bin.tar>apache-zookeeper-3.6.1-bin
3.配置zk
conf>cfg改为zoo.cfg>加上:
dataDir=C:/data(自行创建)
dataLogDir=C:/logs(自行创建)
clientPort=2181
admin.serverPort=8888 #zk自带的jetty端口号
4.启动zk
cmd运行zkServer.cmd
二.创建项目
分为三个模块:1.api(接口)(该模块必须要有,如果没有我的是报端口号被占用异常) 2.provider(实现接口,发布服务) 3.customer(订阅消费服务)
根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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<modules>
<module>provider</module>
<module>customer</module>
<module>api</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.lyf</groupId>
<artifactId>dubbo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dubbo2</name>
<description>Demo project for Spring Boot</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<java.version>1.8</java.version>
<lombok.version>1.18.12</lombok.version>
<fastjson.version>1.2.62</fastjson.version>
<mysql.version>5.1.38</mysql.version>
<druid.version>1.1.10</druid.version>
<shiro.version>1.4.0</shiro.version>
<kaptcha.version>0.0.9</kaptcha.version>
<okhttp3.version>3.11.0</okhttp3.version>
<fileupload.version>1.3.3</fileupload.version>
<javax.mail.version>1.4.7</javax.mail.version>
<dubbo.version>2.7.5</dubbo.version>
</properties>
<dependencies>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!--jsp解析器-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!--jstl标签库,jsp页面可能会使用-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--***************************************以上为spring boot中开发jsp的最小依赖************************* *-->
<!-- <!–jpa–>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!–mysql–>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency>
<!–druid–>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>-->
<!--***************************************以上为增删改查的最小依赖***************************************-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>${dubbo.version}</version>
<type>pom</type>
</dependency>
<!--******************************************以上为Dubbo依赖******************************************-->
</dependencies>
<build>
<plugins>
<!--多模块项目时使用spring-boot-maven-plugin必须每个模块包含Main方法,故不用-->
<!--<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>-->
</plugins>
</build>
</project>
api模块如下:
provider模块如下:
customer模块如下:
项目搭建完成
三.运行项目
首先cmd运行zkServer.cmd,然后启动provider模块的Main方法,最后启动Customer的Main方法,此时服务已被注册到zk,且消费者已从zk订阅所有被注册的服务
四.查看监控
下载https://github.com/apache/dubbo-admin
运行这个:
端口号是8080,用户名和密码都是root,浏览器输入localhost:8080就能看到服务注册和订阅情况