前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Zookeeper学习—— 简介

Zookeeper学习—— 简介

原创
作者头像
Hi胡瀚
发布2018-12-01 21:36:26
3850
发布2018-12-01 21:36:26
举报

简介

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

Zookeeper 是一个高可用的分布式管理与协调框架,基于ZAB(原子消息广播协议)算法的实现。该框架能够很好的解决和保证分布式环境中数据一致性(paxos一致性协议)。

zookeeper的特性

  • 顺序一致性: 从一个客户端发起的事务请求,最终将会严格的安装器发起的顺序被应用到zookeeper中
  • 原子性: 所有事务请求的处理结果在整个集群中的所有机器上应用情况是一致的
  • 单一视图: 无论客户端连接的是哪个zookeeper服务器,其看到的服务器端数据模型是一致的。
  • 可靠性: 一旦服务器成功的应用了一个事务,并完成对客户端的响应,那么该事务所引起的服务器端状态都会被一致的保存下来。除非有另外的事务对其更改
  • 实时性: 通常指就是一旦事务被应用成功,那么客户端就能立刻的从服务器上获取变更后的新数据,zookeeper仅仅能保证在一段时间内,客户端最终一定从服务器端读取到最新数据

zookeeper 的设计目标

  • 目标1: 简单的数据结构,树形命名空间
  • 目标2: 可以构建集群,3、5、7等奇数个只要集群内超过半数以上的机器正常,集群正常
  • 目标3: 顺序访问, 对于客户端的每个请求,zookeeper会分配全局唯一的递增编号,这个编号反映了所有事物操作的先后顺序。应用程序可以使用zookeeper的这个特性来实现更高层次的同步
  • 目标4: 高可用。由于zookeeper将全量数据存储在内存中,并直接服务器与所有的非事物请求,因此尤其是已读操作为主的场景下性能特别突出。在JMater压测下(100%读请求),结果大约是12-13W的QPS。

zookeeper的结构

zookeeper的内部节点的数据结构模型.png
zookeeper的内部节点的数据结构模型.png

zookeeper的组成

ZK server根据身份特性分为三种,leader,Follower,Observer,其中Follower和Observer统称Learner。

Leader:负责客户端的writer类型请求

FollowerFollower:负责客户端的reader请求,参与Leader竞选

ObserverObserver:特殊的”Follower“,可以接受客户端的reader请求,但不参与竞选。(扩容系统支撑能力,提高读取速度。)

应用场景

  • 配置管理 1:数据量比较小 2:数据内容在运行时动态变化 3:集群中各个机器共享信息,配置一致
  • 集群管理 1: 希望知道当前集群中有几个机器工作 2: 对集群中每天的机器的运行时状态进行数据收集 3: 对集群中每台机器进行上下线
  • 发布订阅
  • 数据库切换:比如我们配置的数据库配置文件变更了,通过zookeeper进行配置一致性
  • 分布式的日志收集
  • 分布式的锁、队列管理

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • zookeeper的特性
  • zookeeper 的设计目标
  • zookeeper的结构
  • zookeeper的组成
  • 应用场景
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档