zookeeper下载
安装zookeeper
选择需要下载的版本,本文下载的是Apache ZooKeeper 3.8.1
点击HTTP的下方的链接进行下载,下载完成后解压文件
进入./conf目录下,将zoo_sample.cfg复制一份更名为zoo.cfg
打开zoo.cfg修改dataDir为kafka所在的路径
添加一行dataLogDir路径为zookeeper日志的地方,可以和dataDir一致
dataDir是zookeeper存放数据的地方,dataLogDir是存放zookeeper日志的地方
启动zookeeper
进入./bin目录下,双击zkServer.cmd启动zookeeper(cmd命令窗口不要关闭)
此时zookeeper为启动状态
可以查看官方链接,了解关于zookeeper cli的使用
https://zookeeper.apache.org/doc/r3.8.1/zookeeperStarted.html
SpringCloud
创建springcloud项目
new一个maven project作为springcloud项目的父工程
然后在父工程中右击New > Module
创建springboot项目,点击Spring Initializr,填写相关信息
zookeeper作为注册中心项目的创建
zookeeper注册中心原理
在使用注册中心时,一共有三种角色:服务提供者(Service Provider)、服务消费者(Service Consumer)、注册中心(Registry)。
① 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
5. 使用zkCli查看服务是否成功注册到zookeeper中
进入zookeeper所在的./bin目录下,找到zkCli.cmd打开,进入zookeeper的命令行操作
使用ls命令可以查看到zookeeper-provider的服务已经在zookeeper中注册了
ls /service
GitHub地址:https://github.com/Caster-zehai/springcloud-learning