Zookeeper初探

分布式编程中,网络中各个节点的数据同步,数据一致性保障,事务控制,容错控保障等都需要一个稳定可靠的协调服务。Zookeeper则是分布式程序中使用最广泛的协调服务技术。从前面的kafka,storm,ignite使用文章中我们可以看到,Zookeeper广泛用于这些方分布式大数据技术的节点选举以及数据同步等服务。百度百科上对Zookeeper的介绍如下:

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

ZooKeeper包含一个简单的原语集,[1]  提供Java和C的接口。

ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。

Zookeeper实际上组织了一个分布式的树形节点数据结构(类似windows的文件夹系统),各个Zookeeper节点可以同步监听节点树的增删改,所以可以通过对节点树的操作来达到数据同步的目的。

本文简单介绍Zookeeper在Java编程中对树形节点增删改操作,Zookeeper详细介绍请参考后续文章。

1、 Zookeeper服务端搭建暂且不表,可以参考《Ignite集群管理——基于Zookeeper的节点发现》中单机zookeeper的安装步骤;

2、 Zookeeper树形节点增删改查代码

package com.coshaho.learn.zookeeper;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;

/**
 *
 * ZookeeperTest.java Create on 2017年6月10日 下午11:07:02
 *
 * 类功能说明:   zookeeper入门
 *
 * Copyright: Copyright(c) 2013
 * Company: COSHAHO
 * @Version 1.0
 * @Author coshaho
 */
public class ZookeeperHelloWorld
{
    private static final int TIME_OUT = 3000;
    private static final String HOST = "192.168.1.104:12181";
    public static void main(String[] args) throws Exception
    {
        ZooKeeper zookeeper = new ZooKeeper(HOST, TIME_OUT, null);

        // 创建根节点/coshaho
        if(zookeeper.exists("/coshaho", false) == null)
        {
            // 参数:节点名称,节点数据,不进行ACL控制,节点为永久性节点
            zookeeper.create("/coshaho", "zookeeper, I‘m comming.".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        }

        // 查询根节点/coshaho数据
        System.out.println("节点/coshaho数据为:" + new String(zookeeper.getData("/coshaho", false, null)));

        // 创建节点/coshaho/learn
        if(zookeeper.exists("/coshaho/learn", false) == null)
        {
            zookeeper.create("/coshaho/learn", "Hello, zookeeper.".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        }

        // 查询节点/coshaho/learn数据
        System.out.println("节点/coshaho/learn数据为:" + new String(zookeeper.getData("/coshaho/learn", false, null)));

        // 修改节点/coshaho/learn数据
        String data = "I have modified node text.";
        zookeeper.setData("/coshaho/learn", data.getBytes(), -1);

        // 查询节点/coshaho/learn数据
        System.out.println("修改节点/coshaho/learn数据后:" + new String(zookeeper.getData("/coshaho/learn", false, null)));

        // 删除节点
        //zookeeper.delete("/coshaho/learn", -1);

        zookeeper.close();
    }
}

3、 运行结果

4、 命令行连接Zookeeper服务端:zkCli.sh -server {IP}:{Port}

5、 可以看到,/coshaho/learn节点成功创建,/coshaho文本信息和程序设置一致

6、 maven配置

<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.6</version>
</dependency>    
时间: 2024-08-06 11:58:40

Zookeeper初探的相关文章

Dubbo zookeeper 初探【转】

先把zookeeper在本地给安装好, 这里的话讲述了两个工程一个工程是提供服务的,一个工程是调用服务的,因为dubbo是跟spring进行无缝连接的,故功能配置在spring的配置文件中,跟spring进行整合开发 1.工程是以maven进行构建的,使用的jar包如下: 2.服务提供者的工程 a.dubbo-demo-api  定义接口 [java] view plain copy public interface IProcessData { public String deal(Strin

zookeeper初探一

1.下载zookeeper https://www.apache.org/dyn/closer.cgi/zookeeper/ 2. 配置 zoo.cfg 添加配置如下(windows配置环境) tickTime=2000 dataDir=E:\\ProgramFiles\\zookeeper-3.4.10\\data clientPort=2181 3.单机启动zookeeper zkServer.cmd 4.使用客户端连接zookeeper zkCli.cmd -server 127.0.0.

搞懂分布式技术3:初探分布式协调服务zookeeper

搞懂分布式技术3:初探分布式协调服务zookeeper 1.Zookeepr是什么 Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅,负载均衡,命名服务,分布式协调/通知.集群管理,Master选举,分布式锁和分布式队列等功能. 2.zookeeper可以保证的分布式一致性 a.顺序一致性 从一个客户端发起的事务请求,最终将会严格地按照其发起顺序被应用到zookeeper中去 b.原子性 所有事务请求的处理结果在整个集群中所有机器上的应用情

dubbo初探二之简单搭建zookeeper注册中心

jdk须为1.7 pom.xml <dependency>     <groupId>com.netflix.curator</groupId>     <artifactId>curator-framework</artifactId>     <version>1.1.10</version> </dependency> <dependency>     <groupId>org.a

初探分布式环境的指挥官ZooKeeper

目录 1. 从单机到集群,分布式环境中的挑战 1.1 集中式的特点 1.2 集中式的痛点 1.3 从单体到SOA的转变 1.4 分布式服务总体框架 1.5 分布式应用概述 2. ZK基本概念及核心原理 2.1 ZK自我介绍 2.2 ZK基本概念 3. ZK应用举例 3.1 应用举例 3.2 项目中的应用 4 小结 1. 从单机到集群,分布式环境中的挑战 1.1 集中式的特点 部署结构简单 协作相对简单,不存在分布式协作问题 单点故障问题 1.2 集中式的痛点 随着业务的发展和演进,将所有业务集中

入门初探+伪集群部署

Kafka入门初探+伪集群部署 Kafka是目前非常流行的消息队列中间件,常用于做普通的消息队列.网站的活性数据分析(PV.流量.点击量等).日志的搜集(对接大数据存储引擎做离线分析). 全部内容来自网络,可信度有待考证!如有问题,还请及时指正. 概念介绍 在Kafka中消息队列分为三种角色: producer,即生产者,负责产生日志数据. broker,存储节点,负责按照topic中的partition分区,均匀分布式的存储分区. consumer,即消费者,负责读取使用broker中的分区.

Hadoop那些事儿(一)–Hadoop初探

前言 Hadoop是什么? 用百科上的话说:"Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储." 可能有些抽象,这个问题可以在一步步学习Hadoop的各种知识以后再回过头来重新看待. Hadoop大家族 Hadoop不是一个单一的项目,经过10年的发展,Hadoop已经成为了一个拥有近20个产品的庞大家族. 其中最核心的包括以下9个产品,并且我们将按照下面的顺序一步步学习.

Apache Drill初探

    Apache Drill初探 介绍 Apache Drill是一个开源的,对于Hadoop和NoSQL低延迟的SQL查询引擎. Apache Drill 实现了 Google's Dremel.那么什么是Google's Dremel?网络中一段描述:Dremel 是Google 的"交互式"数据分析系统.可以组建成规模上千的集群,处理PB级别的数据.MapReduce处理一个数据,需要分钟级的时间.作为MapReduce的发起人,Google开发了Dremel将处理时间缩短到

kafka+storm初探

由于项目需要,最近对storm进行了预研,安装与使用方式网上有很多示例,在此记录一下,备忘. 一.storm简介 Storm的术语包括Stream.Spout.Bolt.Task.Worker.Stream Grouping和Topology.Stream是被处理的数据.Sprout是数据源.Bolt处理数据.Task是运行于Spout或Bolt中的 线程.Worker是运行这些线程的进程.Stream Grouping规定了Bolt接收什么东西作为输入数据.数据可以随机分配(术语为Shuffl