Dubbo ZooKeeper安装使用

1 ZooKeeper安装使用[windows单机版本]

1 下载地址:版本为3.4.14
在这里插入图片描述

2 解压到本地文件夹中
在这里插入图片描述

3将conf目录下的zoo_sample.cfg文件,复制一份,重命名为zoo.cfg
4 修改zoo.cfg配置文件,将dataDir=/tmp/zookeeper修改成zookeeper安装目录所在的data文件夹(需要在安装目录下面新建一个空的data文件夹和log文件夹),再添加一条添加数据日志的配置,如下图
在这里插入图片描述
5 启动:
启动zookeeper,判定是否安装成功,双击运行bin目录下的zkServer.cmd文件即可
双击zkCli.cmd
OK !

还可以配置环境变量:
ZOOKEEPER_HOME:E:\zkeeper\zookeeper-3.4.14
Path:%ZOOKEEPER_HOME%\bin

2 ZooKeeper安装使用[linux 伪集群]

1 在 linux 跟目录"/"新建opt1文件夹
2 把压缩文件上传到opt1文件夹,解压并重新命名为zookeeper1
3 进入zookeeper1 新建子目录data和logs
4修改zookeeper1/conf/zoo.cfg文件
dataDir=/opt1/zookeeper1/data
dataLogDir=/opt1/zookeeper1/logs
#------------端口------------
clientPort=2181

同时添加伪集群

#------------集群服务器------------
#server.id=host:port1:port2 后面2个端口 分别代表follow服务器端口、leader服务器端口
  server.1=127.0.0.1:1100:1200
  server.2=127.0.0.1:2100:2200
  server.3=127.0.0.1:3100:3200
5 设置服务器ID

在zookeeper1/data/ 目录下,新建myid文件,插入值1(服务器id)

6 复制zookeeper1多份,为了伪集群服务,并命名zookeeper2、zookeeper3…

修改zookeeper2和zookeeper3的 /conf/zoo.cfg分别为:

#------------日志目录------------
#dataDir=/tmp/zookeeper
dataDir=/opt1/zookeeper2/data

#日志位置
dataLogDir=/opt1/zookeeper2/logs
#------------端口------------
clientPort=2182
#------------集群服务器------------
#server.id=host:port1:port2 后面2个端口 分别代表follow服务器端口、leader服务器端口
server.1=127.0.0.1:1100:1200  
server.2=127.0.0.1:2100:2200  
server.3=127.0.0.1:3100:3200
#------------日志目录------------
#dataDir=/tmp/zookeeper
dataDir=/opt1/zookeeper3/data

#日志位置
dataLogDir=/opt1/zookeeper3/logs
#------------端口------------
clientPort=2183
#------------集群服务器------------
#server.id=host:port1:port2 后面2个端口 分别代表follow服务器端口、leader服务器端口
server.1=127.0.0.1:1100:1200  
server.2=127.0.0.1:2100:2200  
server.3=127.0.0.1:3100:3200
7 并分别修改文件 zookeeper2/data/myid 和zookeeper3/data/myid,分别修改数据为 2、3
8 启动集群

进入到zookeeper1/bin目录下 执行 zkServer.sh start
进入到zookeeper2/bin目录下 执行 zkServer.sh start
进入到zookeeper3/bin目录下 执行 zkServer.sh start

linux环境下,启动命名为[./zkServer.sh start]

9 查看状态

zkServer.sh start 启动
zkServer.sh status 查看状态
zkServer.sh stop 停止/关闭

10 使用3台服务器进行搭建

至于使用3台服务器进行搭建的话,只是zoo.cfg文件中3台服务器端口都是2181
集群服务器设置如下:

#------------集群服务器------------
#server.id=host:port1:port2 后面2个端口 分别代表follow服务器端口、leader服务器端口
server.1=192.168.0.113:1100:1200  
server.2=192.168.0.123:1100:1200  
server.3=192.168.0.133:1100:1200

4 Dubbo安装使用

window下安装dubbo-admin
dubbo本身并不是一个服务软件。它其实就是一个jar包,能够帮你的java程序连接到zookeeper,并利用zookeeper消费、提供服务。

但是为了让用户更好的管理监控众多的dubbo服务,官方提供了一个可视化的监控程序dubbo-admin,不过这个监控即使不装也不影响使用。

我们这里来安装一下:

  1. 下载dubbo-admin
    地址:https://github.com/apache/dubbo-admin/tree/master

2、解压进入目录

修改 dubbo-admin\src\main\resources \application.properties 指定zookeeper地址

server.port=7001
spring.velocity.cache=false
spring.velocity.charset=UTF-8
spring.velocity.layout-url=/templates/default.vm
spring.messages.fallback-to-system-locale=false
spring.messages.basename=i18n/message
spring.root.password=root
spring.guest.password=guest

dubbo.registry.address=zookeeper://127.0.0.1:2181

3.在项目目录下打包dubbo-admin

mvn clean package -Dmaven.test.skip=true 

第一次打包的过程有点慢,需要耐心等待!直到成功!
在这里插入图片描述
4. 执行 dubbo-admin\target 下的dubbo-admin-0.0.1-SNAPSHOT.jar

java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

【注意:zookeeper的服务一定要打开!】

执行完毕,我们去访问一下 http://localhost:7001/ , 这时候我们需要输入登录账户和密码,我们都是默认的root-root;

登录成功后,查看界面
在这里插入图片描述

3 案例使用

1 创建父项目为maven项目

2 创建子模块1为springboot项目[提供者]

1 创建provider-server的项目
2 导入依赖

<!-- Dubbo Spring Boot Starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>

        <!--zkclient-->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

        <!-- 引入zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <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.4.14</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

3 创建提供者接口 和实现类


public interface TickerService {

    String getTicket();
}

@Service //这个是dubbo的service注解不是spring的,加了这个注解在项目启动后就自动注册到注册中心zookeeper中
@Component //这个在spring中注册,由spring管理的组件,不用Service是因为为了避免与dubbo的service冲突(而忘了import)
public class TickerServiceImpl implements  TickerService {


    @Override
    public String getTicket() {
        return "getTicket success!";
    }
}

4 配置application.properties

server.port=8001

#当前应用名字
dubbo.application.name=provider-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫描指定包下服务
#dubbo.scan.base-packages=com.provideserver.service
dubbo.protocol.port=20880
dubbo.protocol.name=dubbo

5 provider集群启动
修改application.properties
思路:

  • 修改server.port=8088
  • 修改dubbo协议端口dubbo.protocol.port=20881
  • 添加消费者负载均衡策略,此处使用轮询策略dubbo.consumer.loadbalance=roundrobin
server.port=8010

#应用名字
dubbo.application.name=provider-server

#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
#扫描指定包下服务  使用@EnableDubbo代替
#dubbo.scan.base-packages=com.qidian.provideserver.service

##协议端口
dubbo.protocol.port=20881
##协议名称
dubbo.protocol.name=dubbo

在启动类添加注解:@EnableDubbo

3 创建子模块2为springboot项目[消费者]

1 创建consumer-server的项目
2 导入依赖

<!-- Dubbo Spring Boot Starter -->
        <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>

        <!--zkclient-->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

        <!-- 引入zookeeper -->
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.12.0</version>
        </dependency>
        <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.4.14</version>
            <!--排除这个slf4j-log4j12-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

3 创建消费者 实现类,准备调用提供者的接口服务

@Service // spring容器管理
public class UserService {
    
    //拿到远程的provider-server提供的服务
    @Reference     //dubbo的注解用于 调用提供者  直接引用,会导入提供者的依赖到消费者里面
    private TickerService tickerService;
    
    public void buyTicket(){

        String ticket = tickerService.getTicket();
        System.out.println("在注册中心拿到:"+ticket);
    }
    
}

4 配置消费者application.properties

server.port=8002
#当前应用名字
dubbo.application.name=consumer-server
#注册中心地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

在启动类添加注解:@EnableDubbo

先启动Windows下的zookeeper, dubbo-admin
开始测试

启动两个服务
在消费者进行单元测试:

@SpringBootTest
class ConsumerServerApplicationTests {

    @Autowired
    UserService userService;

    @Test
    void contextLoads() throws InterruptedException {

       for (int i =0;i<10;i++){
           userService.buyTicket();
       }
    }

}

结果如下:

在注册中心拿到:getTicket success!
在注册中心拿到:getTicket success!
在注册中心拿到:getTicket success!
在注册中心拿到:getTicket success!
在注册中心拿到:getTicket success!
在注册中心拿到:getTicket success!
在注册中心拿到:getTicket success!
在注册中心拿到:getTicket success!
在注册中心拿到:getTicket success!
在注册中心拿到:getTicket success!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值