zookeeper(二)zookeeper简介及基本数据模型
阅读原文时间:2021年04月20日阅读:1

一、基本概念

    1.什么是zookeeper

  • 中间件,提供协调服务
  • 作用于分布式系统,可以为大数据服务
  • 支持java,提供java和c语言的客户端api

    2.zookeeper特性

  • 一致性:数据一致性,数据按照顺序分批入库
  • 原子性:事务要么成功要么失败,不会局部化
  • 单一视图:客户端连接集群中任意zk节点,数据都是一致的
  • 可靠性:每次对zk的操作状态都会保存在服务端
  • 实时性:客户端可以读取到zk服务端的最新数据

    3.zookeeper的主要作用

  • master节点选举,主节点宕机后,从节点会接替主节点并保证该节点是唯一的(首脑模式),从而保证集群的高可用性
  • 统一配置文件管理,即只需要部署一台服务器,即可把相同的配置文件同步更新到其他所有服务器,此操作在云计算中使用较多(例如修改redis统一配置)
  • 发布与订阅,类似消息队列MQ(amq,rmq),dubbo发布者把数据存在znode上,订阅者会读取这个数据
  • 提供分布式锁,分布式环境中不同进程之间争夺资源,类似于多线程中的锁
  • 集群管理,集群中保证数据的强一致性

    4.什么是分布式系统

  • 由多台计算机组成的一个整体,一个整体一致对外并处理同一请求
  • 内部的每台计算机都可以相互通信(rpc/rest/webservice等)
  • 客户端到服务端的一次请求到响应结束会历经多台计算机

二、zookeeper的基本数据模型

  • 是一个树状结构,也可以理解为linux/unix的文件目录:/usr/local…
  • 每一个节点都称为znode,它可以有子节点,也可以有数据
  • 每个节点分为临时节点和永久节点,临时节点在客户端断开后消失
  • 每个zk节点都有各自的版本号,可以通过命令行来显示节点信息
  • 每当节点数据发生变化,那么该节点的版本号会累加(乐观锁)
  • 删除/修改过时节点,版本号不匹配则会报错
  • 每个zk节点存储的数据不宜过大,几k即可(官方推荐)
  • 节点可以设置权限acl,可以通过权限来限制用户的访问

三、zookeeper数据模型基本操作

  • 客户端连接
    • 启动zookeeper服务:./usr/local/zookeeper/bin/zkServer.sh start
    • 使用客户端进行连接:./usr/local/zookeeper/bin/zkCli.sh
    • 查看命令帮组:help
  • 查看znode结构
    • ls查看目录结构

  • 关闭客户端连接:crtl +c  enter

转载于:https://my.oschina.net/u/3386266/blog/1838550