一.搭建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

spring boot 连接 IotDB 集群 springboot连接 zookeeper集群_ide


到这,第一台zookeeper服务器已经启动,此时zookeeper集群还不能用,必须三台zookeeper启动之后才行。

其他两台zookeeper按照以上步骤安装即可,只需要改变myid 为2或者3启动另外两台服务器,查看三台服务器状态如下图,可以看到集群模式为一主两从

spring boot 连接 IotDB 集群 springboot连接 zookeeper集群_ide_02


到这,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调用注入服调用即可

spring boot 连接 IotDB 集群 springboot连接 zookeeper集群_zookeeper_03

三.分别启动dubbo-provider,dubbo-consume,可以看到服务消费者生成了代理类去访问远程服务。

spring boot 连接 IotDB 集群 springboot连接 zookeeper集群_配置文件_04

四.用postman测试一下

spring boot 连接 IotDB 集群 springboot连接 zookeeper集群_zookeeper_05


到这,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查看服务信息

spring boot 连接 IotDB 集群 springboot连接 zookeeper集群_zookeeper集群_06