一.搭建zookeeper集群(必须大于3台服务器,小于三台不能启动)
1.下载安装zookeeper
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz #下载地址
2. 修改配置文件
/home/dubbo/zoo/zookeeper-3.4.13 # 进入zookeeper目录
mkdir data #新建data目录,用于存放集群文件myid
cd data #进入该目录
touch myid #新建集群文件,当前的机器为1
echo 1 > myid #写入配置文件,1代表第一台服务器,其他两台分别为 2, 3
mv zoo_sample.cfg zoo.cfg #移动配置文件
vi /home/dubbo/zoo/zookeeper-3.4.13/conf zoo.cfg #进入配置文件
server.1=172.25.62.101:2888:3888 (主机名,心跳端口,数据端口) #第一台zookeeper
server.2=172.25.62.102:2888:3888 #第二台zookeeper
server.3=172.25.62.100:2888:3888 #第三台zookeeper
vi /etc/profile #进入系统配置文件
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin #
export ZOOKEEPER_HOME=/home/dubbo/zoo/zookeeper-3.4.13 #zookeeper安装目录
cd /home/dubbo/zoo/zookeeper-3.4.13/bin #进入zookeeper启动目录
sh zkServer.sh start #启动第一台zookeeper
配置文件如下,当前三台服务地址为 172.25.62.100, 172.25.62.101, 172.25.62.102
到这,第一台zookeeper服务器已经启动,此时zookeeper集群还不能用,必须三台zookeeper启动之后才行。
其他两台zookeeper按照以上步骤安装即可,只需要改变myid 为2或者3启动另外两台服务器,查看三台服务器状态如下图,可以看到集群模式为一主两从
到这,zookeeper集群已经安装好。
二.将dubbo注册到zookeeper集群
说明:这里dubbo分为服务提供者(dubbo-provider),服务消费者(dubbo-consume),以及dubbo管理平台(dubbo-admin)
a.新建服务提供者(dubbo-provider)
1.新建springboot项目dubbo-provider,引入dubbo和zookeeper的maven依赖,这里服务提供者和消费者一样。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.4.10</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<exclusions>
<exclusion>
<artifactId>slf4j-log4j12</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
2.新建provider.xml文件(记得在启动类上引入该文件)
<!--<!– 服务提供方应用名,用于计算依赖关系 –>-->
<dubbo:application name="dubbo-provider" owner="dubbo-provider"/>
<!--<!– 定义 zookeeper 注册中心地址及协议 –>这里是集群方式-->
<dubbo:registry protocol="zookeeper" address="172.25.62.101:2181,172.25.62.102:2181,172.25.62.100:2181" client="zkclient"/>
<!--<!– 定义 Dubbo 协议名称及使用的端口,dubbo 协议缺省端口为 20880,如果配置为 -1 或者没有配置 port,则会分配一个没有被占用的端口 –>-->
<dubbo:protocol name="dubbo" port="-1"/>
<!--<!– 声明需要暴露的服务接口 –>-->
<dubbo:service interface="com.gdz.dubbo.provider.service.DubboService" ref="dubboService" timeout="10000"/>
<!--<!– 服务接口实现类 –>-->
<bean id="dubboService" class="com.gdz.dubbo.provider.service.impl.DubboServiceImpl"/>
3. 新建服务接口和实现类,这里分别为DubboService DubboServiceImpl
public interface DubboService {
String getName(String name);
}
public class DubboServiceImpl implements DubboService {
@Override
public String getName(String name) {
return "my name is " + name;
}
}
b.新建服务消费者(dubbo-consume)
1.新建springboot项目,引入dubbo和zookeepermaven依赖,参考dubbo-provider
2.新建consume.xml文件
<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="dubbo-consumer" owner="dubbo-consumer"/>
<!-- 定义 zookeeper 注册中心地址及协议 ,这里是集群方式-->
<dubbo:registry protocol="zookeeper" address="172.25.62.101:2181,172.25.62.102:2181,172.25.62.100:2181" client="zkclient" />
<!-- 生成远程服务代理,可以和本地 bean 一样使用 dubboService-->
<dubbo:reference id="dubboService" interface="com.gdz.dubbo.provider.service.DubboService"/>
3.新建调用接口
说明:1.调用的时候生成代理类,通过代理类去调用远程服务
2.这里直接新建的调用接口(实际不推荐这么用,一般是通过jar的导入来引用),这里类名和包名必须和服务提供者一致, 否则找不到服务提供者
public interface DubboService {
String getName(String name);
}
controller调用注入服调用即可
三.分别启动dubbo-provider,dubbo-consume,可以看到服务消费者生成了代理类去访问远程服务。
四.用postman测试一下
到这,dubbo整合zookeeper集群已经ok了,下面安装一个dubbo-admin来管理服务。
四.下载dubbo-admin
一.下载地址:
dubbo-admin:https://github.com/apache/incubator-dubbo/tree/dubbo-2.6.0
注意:dubbo-2.6.1以后的版本不再有dubbo-admin
二.修改dubbo-admin配置文件
dubbo.registry.address=zookeeper://172.25.62.101:2181 #改成自己的zookeeper地址
三.启动dubbo-amdin查看服务信息