栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Zookeeper第一话 -- docker安装zookeeper以及Springboot集成zk

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Zookeeper第一话 -- docker安装zookeeper以及Springboot集成zk

1.介绍

zookeeper是一个分布式协调组件,为分布式应用提供一致性服务的软件。提供的功能包括:配置维护、域名服务、分布式同步等
zookeeper服务中含有临时节点和永久的节点。临时节点当客户端和服务端断开以后,会自动删除该节点。永久节点则不会。
zookeeper服务中提供了分布式独享锁,选举、队列的接口。
此外zookeeper提供了观察者回调,为继续等待获取分布式锁提供了监控的能力(1.监听节点的数据变化。2.监听子节点的增减变化)。基于这个监听机制可以实现配置统一管理。

2.docker安装zookeeper

基于liunx centos7、zookeeper3.7。

2.1 yaml文件
version: '3.7'
services:
  zk01:
    image: zookeeper:3.7.0
    container_name: zk01
    restart: always
    ports:
    - "2181:2181"
    environment:
    - TZ=Asia/Shanghai
    volumes:
    - /root/local/zookeeper/data:/data
    networks:
    - my-net
networks:
  my-net:
    external: true
2.2 容器启动测试

启动容器后,进入容器连接zookeeper服务

[root@m zookeeper]# docker-compose up -d
Starting zk01 ... done
[root@m zookeeper]# docker exec -it zk01 /bin/bash
root@f773b5679fb0:/apache-zookeeper-3.7.0-bin# ./bin/zkCli.sh 
Connecting to localhost:2181
......
#创建持久节点
[zk: localhost:2181(CONNECTED) 1] create /test hello
Created /test
#创建临时节点,在客户端断开后会自动删掉
[zk: localhost:2181(CONNECTED) 2] create -e /temp
Created /temp
#查看节点
[zk: localhost:2181(CONNECTED) 3] ls /
[temp, test, zookeeper]
#修改节点的值
[zk: localhost:2181(CONNECTED) 2] set /test 123456
#获取节点的值
[zk: localhost:2181(CONNECTED) 3] get /test 
123456
#创建同名节点
[zk: localhost:2181(CONNECTED) 4] create -e /temp
#独占锁的效果
Node already exists: /temp
3.springboot中集成zookeeper

基于springboot 2.5.6,zookeeper3.7。

3.1 pom文件

   org.springframework.boot
    spring-boot-starter-web


	org.apache.zookeeper
	zookeeper
	3.7.0
	
	
		
			slf4j-log4j12
			org.slf4j
		
		
			log4j
			log4j
		
	

3.2 yaml文件
zookeeper:
  address: 192.168.0.221:2181
  timeout: 60000

server:
  port: 8999

由于zookeeper没有springboot star包,需要自己初始化,

3.3 BeanConfig文件
package com.example.config;

import org.apache.zookeeper.ZooKeeper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class BeanConfig {

    @Value("${zookeeper.address}")
    String address;
    @Value("${zookeeper.timeout}")
    Integer timeout;


    @Bean
    public ZooKeeper zooKeeper() {
        try {
            ZooKeeper zooKeeper = new ZooKeeper(address, timeout, watchedEvent -> {
            });
            return zooKeeper;
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("初始化zookeeper异常");
        }
    }
}
3.4 controller层代码
@RestController
public class ZookeeperController {

    @Autowired
    ZooKeeper zooKeeper;

    @GetMapping("/create")
    public String create(@RequestParam String path, @RequestParam String value) throws KeeperException, InterruptedException {
        String s = zooKeeper.create(path, value.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
        return s;
    }

    @GetMapping("/set")
    public String set(@RequestParam String path, @RequestParam String value) throws KeeperException, InterruptedException {
        Stat stat = zooKeeper.setData(path, value.getBytes(), -1);
        return stat.toString();
    }

    @GetMapping("/get")
    public String get(@RequestParam String path) throws KeeperException, InterruptedException {
        byte[] data = zooKeeper.getData(path, false, null);
        return new String(data);
    }
}

上述内容仅仅是安装和初始使用,下节使用zookeeper来实现公用配置文件和备用节点。
以上就是本章的全部内容了。

上一篇:Redis第四话 – redis高性能原理(多路复用)和高可用分析(备份、主从))
下一篇:Zookeeper第二话 – Springboot基于zk watch机制实现公用配置和备用节点

书山有路勤为径,学海无涯苦作舟

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/973962.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号