zookeeper下载

安装zookeeper

选择需要下载的版本,本文下载的是Apache ZooKeeper 3.8.1

点击HTTP的下方的链接进行下载,下载完成后解压文件




zookeeper Windows 查看注册日志 zookeeper的注册中心_zookeeper


进入./conf目录下,将zoo_sample.cfg复制一份更名为zoo.cfg


zookeeper Windows 查看注册日志 zookeeper的注册中心_zookeeper_02


打开zoo.cfg修改dataDir为kafka所在的路径

添加一行dataLogDir路径为zookeeper日志的地方,可以和dataDir一致

dataDir是zookeeper存放数据的地方,dataLogDir是存放zookeeper日志的地方


zookeeper Windows 查看注册日志 zookeeper的注册中心_spring cloud_03


启动zookeeper

进入./bin目录下,双击zkServer.cmd启动zookeeper(cmd命令窗口不要关闭)

此时zookeeper为启动状态


zookeeper Windows 查看注册日志 zookeeper的注册中心_Powered by 金山文档_04


可以查看官方链接,了解关于zookeeper cli的使用
https://zookeeper.apache.org/doc/r3.8.1/zookeeperStarted.html

SpringCloud

创建springcloud项目

new一个maven project作为springcloud项目的父工程


zookeeper Windows 查看注册日志 zookeeper的注册中心_Powered by 金山文档_05


然后在父工程中右击New > Module


zookeeper Windows 查看注册日志 zookeeper的注册中心_zookeeper_06


创建springboot项目,点击Spring Initializr,填写相关信息


zookeeper Windows 查看注册日志 zookeeper的注册中心_java-zookeeper_07


zookeeper作为注册中心项目的创建

zookeeper注册中心原理

在使用注册中心时,一共有三种角色:服务提供者(Service Provider)、服务消费者(Service Consumer)、注册中心(Registry)。


zookeeper Windows 查看注册日志 zookeeper的注册中心_spring_08


① Provider:

启动时,向 Registry 注册自己为一个服务(Service)的实例(Instance)。

同时,定期向 Registry 发送心跳,告诉自己还存活。

关闭时,向 Registry 取消注册。

② Consumer:

启动时,向 Registry 订阅使用到的服务,并缓存服务的实例列表在内存中。

后续,Consumer 向对应服务的 Provider 发起调用时,从内存中的该服务的实例列表选择一个,进行远程调用。

关闭时,向 Registry 取消订阅。

③ Registry:

Provider 超过一定时间未心跳时,从服务的实例列表移除。

服务的实例列表发生变化(新增或者移除)时,通知订阅该服务的 Consumer,从而让 Consumer 能够刷新本地缓存。

这部分内容转载,链接:

项目中使用的版本

不适配的版本有可能导致各种冲突,可以根据自身的springboot、springcloud、zookeeper版本进行选择适配的版本,以下是本文项目中使用的版本。


name

version

SpringBoot

2.6.11

Zookeeper sever

3.8.1

Zookeeper discovery

3.1.0


创建Provider

在pom.xml下加入以下依赖

zookeeper

<!--spring mvc的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--zookeeper discovery的依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <version>3.1.0</version>
        </dependency>

配置application.yml文件

server:
  port: 8089

spring:
  application:
    name: zookeeper-provider
  cloud:
    zookeeper:
      connect-string: localhost:2181

启动类上添加discovery注解

在启动类上方添加@EnableDiscoveryClient的注解

@EnableDiscoveryClient
@SpringBootApplication
public class ZookeeperProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ZookeeperProviderApplication.class, args);
    }

}

启动zookeeper-provider服务

选择IDEA下方的Service > 右击对应的服务名 > Run


zookeeper Windows 查看注册日志 zookeeper的注册中心_spring cloud_09


5. 使用zkCli查看服务是否成功注册到zookeeper中

进入zookeeper所在的./bin目录下,找到zkCli.cmd打开,进入zookeeper的命令行操作

使用ls命令可以查看到zookeeper-provider的服务已经在zookeeper中注册了

ls /service


zookeeper Windows 查看注册日志 zookeeper的注册中心_spring_10



GitHub地址:https://github.com/Caster-zehai/springcloud-learning