0. 什么是ZooKeeper

ZooKeeper 是一个开源的分布式,它的设计目标是将那些复杂且容易出错的分布式协同服务封装起来,抽象出一个高效可靠的原语集,并以一系列简单的接口提供个用户使用。

ZooKeeper 有几大特征:

易用

ZooKeeper 的理解和使用成本都很低,它提供的是一种层级式的命名空间,这一点和标准的文件系统类似。

可靠

ZooKeeper 服务可以支持集群模式,并且能够轻松扩展,客户端可以连接到任意一个服务器,都能够获得服务。

有序

ZooKeeper 的节点是可以保证有序的。每一个更新操作都会被标记一个序号,ZooKeeper 执行的时候会按照顺序执行。

快速

ZooKeeper 在读多写少的应用场景中可以实现快速响应。这是因为 ZooKeeper 本身的部署架构是主从模式,主节点可以响应读写请求,而从节点只能响应读请求。当读写比例大于10:1时,ZooKeeper 就可以利用扩展能力改善集群的响应速度。

介绍完了 ZooKeeper 的整体情况,我们再来看看 ZooKeeper 的另一个比较重要的概念——节点(Node)。

ZooKeeper 的节点叫做Znode,可以分为两种:一种是持久性的,一种是临时性的。每一个 Znode 都可以存储数据,Znode 的更新是以版本更新的形式迭代的。因此,客户端接收数据的同时还会接收到版本信息。

ZooKeeper 临时节点的生命周期是与 session 相关的,当 session 处于活跃状态时,临时节点会一直存在,当 session 消亡时,临时节点会被删除。

Session

ZooKeeper 客户端在和 Server 端进行连接的时候,会创建一个 session,客户端可以主动关闭 session。当 ZooKeeper 服务端节点没有在指定时间内收到客户端消息的话,服务端也会关闭 session。如果建立连接出错,ZooKeeper 客户端也会自动和其他服务端节点尝试建立新的连接。

1. 安装 ZooKeeper

ZooKeeper 的安装方式非常简单,首先到官网下载 ZooKeeper 的安装包,然后解压安装包。

接着是修改配置文件,进入目录apache-zookeeper-3.6.2-bin/conf,从 zoo_sample.cfg 文件复制出来一个名为 zoo.cfg 的配置文件,修改dataDir=/data/zookeeper,这个目录用于存储 ZooKeeper 的数据。配置好之后,我们就可以启动 ZooKeeper 了,不过为了更好的使用 ZooKeeper 命令,我们把 ZooKeeper 相关命令配置到 PATH 中。

启动 ZooKeeper

现在就可以启动 ZooKeeper 了。只需要使用下面这个命令即可。

zkServer.sh start

启动之后,我们来看一下 ZooKeeper 有没有报错,我们来到 ZooKeeper 目录下的 logs 目录,输入命令

grep -E -i "((exception)|(error))" *

如果没有输出,说明 ZooKeeper 启动没有报错。

接着查看对2181端口的监听

netstat -an | grep 2181

正常监听的话,我们就可以使用客户端进行连接了。

体验 ZooKeeper 命令

在确保 ZooKeeper 服务端启动没有问题后,我们使用客户端进行连接。

连接时会有上图所示的日志输出。

连接好之后可以输入命令

ls -R /

这个命令用来查看 ZooKeeper 现有的节点。

/
/zookeeper
/zookeeper/config
/zookeeper/quota

最初只有几个 ZooKeeper 自带的目录。

这里可以使用 create /app 命令来创建一个名为 app 的目录。

2. 小结

对于 ZooKeeper 的初印象到这里就结束了,目前我已经对 ZooKeeper 有了一个大概的了解,并且能够顺利在本机安装 ZooKeeper,对于 ZooKeeper 的命令也有一定的了解。

后面我们会对 ZooKeeper 常见的应用进行介绍。

遇见ZooKeeper:初识的更多相关文章

  1. Dubbo+Zookeeper(一)Zookeeper初识

    前面花了一段时间去学习SpringCloud的相关知识,主要是理解微服务的概念并使用SpringCloud的一系列组件实现微服务落地.学习这些组件本身是简单的,跟着操作一遍基本就会了,这也得益于Spr ...

  2. zookeeper初识之原理

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. Zookeeper是hadoop的一个子项目 ...

  3. Zookeeper —— 初识

    什么是 Zookeeper Zookeeper 是一个开放源代码的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现: Zookeeper 是典型的分布式数据一致性的解决方案,分布 ...

  4. zookeeper初识

    ZOOKEEPER是为分布式系统提供高性能的协调工具 角色: 1.领导者(leader):负责进行投票的发起和决议,更新系统状态2.学习者(learner):包括跟随者(follower)和观察者(o ...

  5. 什么是ZooKeeper?

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上次写了一篇 什么是消息队列?以后,本来想入门一下K ...

  6. 答应我,不会这些概念,简历不要写 “熟悉” zookeeper

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 一口气说出 9种 分布式ID生成方式,面试官有点懵了 面试总被问 ...

  7. 【分布式锁】06-Zookeeper实现分布式锁:可重入锁源码分析

    前言 前面已经讲解了Redis的客户端Redission是怎么实现分布式锁的,大多都深入到源码级别. 在分布式系统中,常见的分布式锁实现方案还有Zookeeper,接下来会深入研究Zookeeper是 ...

  8. 初识zookeeper(1)之zookeeper的安装及配置

    初识zookeeper(一)之zookeeper的安装及配置 1.简要介绍 zookeeper是一个分布式的应用程序协调服务,是Hadoop和Hbase的重要组件,是一个树型的目录服务,支持变更推送. ...

  9. 初识zookeeper以及安装和集群部署

    初识zookeeper以及安装和集群部署     一.Zookeeper单体版安装     在安装zookeeper之前要先安装jdk环境,具体在linux环境安装jdk1.8请参照linux笔记. ...

随机推荐

  1. java压缩图片设置宽高

    package html2pdf_2; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; ...

  2. 文本处理三剑客简介(grep、awk、sed)

    本章内容: 命令 描述 awk 支持所有的正则表达式 sed 默认不支持扩展表达式,加-r 选项开启 ERE,如果不加-r 使用花括号要加转义符\{\} grep 默认不支持扩展表达式,加-E 选项开 ...

  3. DDD领域驱动设计:CQRS

    1 前置阅读 在阅读本文章之前,你可以先阅读: DDD领域驱动设计是什么 DDD领域驱动设计:实体.值对象.聚合根 DDD领域驱动设计:仓储 MediatR一个优秀的.NET中介者框架 2 什么是CQ ...

  4. 线段树扫描线(一、Atlantis HDU - 1542(覆盖面积) 二、覆盖的面积 HDU - 1255(重叠两次的面积))

    扫描线求周长: hdu1828 Picture(线段树+扫描线+矩形周长) 参考链接:https://blog.csdn.net/konghhhhh/java/article/details/7823 ...

  5. Java并发包源码学习系列:线程池ThreadPoolExecutor源码解析

    目录 ThreadPoolExecutor概述 线程池解决的优点 线程池处理流程 创建线程池 重要常量及字段 线程池的五种状态及转换 ThreadPoolExecutor构造参数及参数意义 Work类 ...

  6. kubeadm---高可用安装

    1.修改主机名 如何使用hostnamectl set-hostname name来为每台主机设置不同的机器名 #hostnamectl set-hostname k8s-master01 或者使用以 ...

  7. Win10永久禁用驱动程序强制签名

    在win10下用一个命令就可以禁用驱动程序强制签名 1.禁止强制签名,以管理员的身份运行cmd 执行以下命令 bcdedit.exe /set nointegritychecks on 恢复默认验证, ...

  8. nyoj-2357

    2357: 插塔憋憋乐 时间限制: 1 秒  内存限制: 128 MB提交: 107  解决: 28提交 状态 题目描述 众所不知,LLM是一位红警3大佬,打的非常厉害,但是曾经也是一位萌新,喜欢在家 ...

  9. IPC$入侵

    一 唠叨一下: 网上关于ipc$入侵的文章可谓多如牛毛,而且也不乏优秀之作,攻击步骤甚至可以说已经成为经典的模式,因此也没人愿意再把这已经成为定式的东西拿出来摆弄. 二 什么是ipc$ IPC$(In ...

  10. 记一次FreeRTOS错误配置导致无法进入临界区

    最近项目用到FreeRTOS,在实际调试中发现我自己的一段代码本来好用的(在无RTOS的情况下),但是当我在带RTOS的情况下把代码放到一个单独的任务中运行时我发现本来好用的代码莫名其妙的出现问题,有 ...