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. linux下安装 zookeeper-3.4.9并搭建集群环境

    本文主要记录作者在实践过程中实现在centos7环境下安装zookeeper并搭建集群的详细步骤,关于zookeeper本文将不做详细介绍,安装步骤详情如下: 前提准备:3台linux服务器(因为zo ...

  2. c++指针 c指针 改变值

    1. #include <iostream>using namespace std;void move(int *p)    ====>void move(*&p){     ...

  3. B 明码

    B 明码 :汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛. 16点阵的字库把每个汉字看成是16x16个像素信息.并把这些信息记录在字节中. 一个字节可以存储8位信息,用32个字节就 ...

  4. 【noi 2.6_9285】盒子与小球之三(DP)

    题意:有N个相同的球,M个不同的盒子,每个盒子最多放K个球.请计算将这N个球全部放入盒子中的方案数模1000007后的结果. 解法:f[i][j]表示i个盒子里放j个球的方案数. 1.得到3重循环的坐 ...

  5. CodeForces 630Q Pyramids(数学公式)

    IT City administration has no rest because of the fame of the Pyramids in Egypt. There is a project ...

  6. Codeforces Round #645 (Div. 2) D、The Best Vacation

    题目链接:The Best Vacation 题意: 给你n个月份,每一个月份有di天.你可以呆在那里x天(x天要连续),如果你在某月的第y天呆在这.那么你的拥抱值就加y 1<=n<=2e ...

  7. Linux 搭建网站

    wget http://dl.wdlinux.cn/lanmp_laster.tar.gz tar zxvf lanmp_laster.tar.gz sh lanmp.sh https://www.w ...

  8. Dubbo和SpringCloud的优劣势比较--总体架构

    从整体架构上来看 二者模式接近,都需要服务提供方,注册中心,服务消费方.差异不大.详见下方: Dubbo Provider: 暴露服务的提供方,可以通过jar或者容器的方式启动服务 Consumer: ...

  9. Kubernets二进制安装(10)之部署主控节点部署调度器服务kube-scheduler

    Kubernetes Scheduler是一个策略丰富.拓扑感知.工作负载特定的功能,调度器显著影响可用性.性能和容量.调度器需要考虑个人和集体的资源要求.服务质量要求.硬件/软件/政策约束.亲和力和 ...

  10. 注意力(Attention)与Seq2Seq的区别

    什么是注意力(Attention)? 注意力机制可看作模糊记忆的一种形式.记忆由模型的隐藏状态组成,模型选择从记忆中检索内容.深入了解注意力之前,先简要回顾Seq2Seq模型.传统的机器翻译主要基于S ...