zookeeper -- 第一章 zookeeper介绍
2018-01-14 00:00
197 查看
概述:作为一枚搬砖工人,只能不能的学习,稍微偷懒感觉就要被淘汰了,赶紧弥补下。下面开始啰嗦的理论知识阐述,虽然啰嗦但是对于后续理解还是很有必要。
布式应用可以基于它实现更高级的服务,比如同步,配置管理,集群管理,名空间。它被设计为
易于编程,使用文件系统目录树作为数据模型。服务端跑在java上,提供java和C的客户端 API
什么是分布式?
什么是协调服务?
多台计算机构成
计算机之间通过我网络进行通信
彼此进行交互
共同目标
举例:
集群成员管理 (Group membership)
锁 (Locking)
选主 (Leader Election)
分层结构
树形结构中的每个节点叫做Znode
每个Znode都有数据 (byte[] 数组),也可以有子节点
节点路径 1、斜线分割: /Zoo/Duck 2、没有相对路劲
通过数据结构stat来存储数据的变化 ACL的变化和时间戳
数据发生变化时,版本号会递增
可以对Znode中的数据进行读写操作
于J2EE中的JNDI的效果ͺ分布式环境下,命名服务更多是资源定位,并不是是真正的实体资源,
其本质也是用到zk的集中配置管理和查找
分布式锁
分布式事务
集群中机器的运行时状态
集群中节点的上下线操作
集群节点的统一配置
顺序节点
共享锁
Follower:提供读服务,所有写服务都需要转交给Leader角色,参与选举
Observer:提供读服务,不参与选举过程,一般是为了增强zk集群的读请求并发能力
– 通过心跳检测保持客户端连接的存活
– 接收来自服务端的watch事件通知
– 可以设置超时时间
ZK树形结构中的数据节点,用于存储数据
持久节点:一旦创建,除非主动调用删除操作,否则一直存储在zk上
临时节点:与客户端的会话绑定,一旦客户端会话失效,这个客户端创建的所有临时及诶单都会被移除
SEQUENTIAL Znode :创建节点时,如果设置属性SEQUENTIAL,则会自动在节点名后面追加一个整型数字
Cversion : 当前Znode的子节点的版本
Aversion : 当前Znode的ACL(访问控制)版本
多种事件通知:数据更新,子节点状态等
CREATE:创建子节点的权限
READ:获取节点数据和子节点列表的权限
WRITE:更新节点数据的权限
– DELETE:删除子节点的权限
ADMIN:设置节点ACL的权限
1、Zookeeper介绍
Zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比如同步,配置管理,集群管理,名空间。它被设计为
易于编程,使用文件系统目录树作为数据模型。服务端跑在java上,提供java和C的客户端 API
什么是分布式?
什么是协调服务?
2、Zookeeper介绍 -- 分布式系统
A distributed system consists of multiple computers that communicate through a computer network and interact with each other to achieve a common goal多台计算机构成
计算机之间通过我网络进行通信
彼此进行交互
共同目标
3、Zookeeper介绍 -- 分布式系统协调
协调: 多个节点一起完成的一个动作举例:
集群成员管理 (Group membership)
锁 (Locking)
选主 (Leader Election)
4、Zookeeper介绍 -- 数据模型
分层结构
树形结构中的每个节点叫做Znode
每个Znode都有数据 (byte[] 数组),也可以有子节点
节点路径 1、斜线分割: /Zoo/Duck 2、没有相对路劲
通过数据结构stat来存储数据的变化 ACL的变化和时间戳
数据发生变化时,版本号会递增
可以对Znode中的数据进行读写操作
5、Zookeeper介绍 -- 典型应用场景
1、数据发布/订阅
数据发布/订阅即所谓的配置中心:发布者将数据发布到zk的一个或者一系列节点上,订阅者进行数据订阅,当数据有变化时,可以及时得到数据的变化通知2、负载均衡
本质是利用zookeeper的配置管理功能,涉及的步骤为:1.服务提供者把自己的域名及、IP、端口的映射注册到zk中
2.服务消费者通过域名从zk中获取到对应的IP及端口,这个IP及端口有多个,只是获取其中一个
3.当服务提供者宕机时,对应的域名与IP的对应就会减少一个映射
4.阿里的dubbo服务框架就是基于zk来实现服务路由和负载
3、命名服务
在分布式系统中,命名服务(ͧName Serviceͨ)也是很重要的应用场景,通过zk也可以实现类似于J2EE中的JNDI的效果ͺ分布式环境下,命名服务更多是资源定位,并不是是真正的实体资源,
其本质也是用到zk的集中配置管理和查找
4、分布式协调/通知
通过watcher和通知机制实现分布式锁
分布式事务
5、集群管理
当前集群中的机器数量集群中机器的运行时状态
集群中节点的上下线操作
集群节点的统一配置
6、Master 选举
临时节点顺序节点
7、分布式锁
排它锁共享锁
8、分布式队列
FIFO5、Zookeeper介绍 -- 基本概念
1、集群角色
Leader:为客户端提供读和写服务Follower:提供读服务,所有写服务都需要转交给Leader角色,参与选举
Observer:提供读服务,不参与选举过程,一般是为了增强zk集群的读请求并发能力
2、会话ͧ(Session)
– Zk的客户端与zk的服务端之间的连接– 通过心跳检测保持客户端连接的存活
– 接收来自服务端的watch事件通知
– 可以设置超时时间
3、数据节点(Znode)
不是机器的意思ZK树形结构中的数据节点,用于存储数据
持久节点:一旦创建,除非主动调用删除操作,否则一直存储在zk上
临时节点:与客户端的会话绑定,一旦客户端会话失效,这个客户端创建的所有临时及诶单都会被移除
SEQUENTIAL Znode :创建节点时,如果设置属性SEQUENTIAL,则会自动在节点名后面追加一个整型数字
4、版本
version : 当前Znode的版本Cversion : 当前Znode的子节点的版本
Aversion : 当前Znode的ACL(访问控制)版本
5、Watcher
作用于Znode节点上多种事件通知:数据更新,子节点状态等
5、ACL (Access Control Lists)
类似于linux/unix的权限控制CREATE:创建子节点的权限
READ:获取节点数据和子节点列表的权限
WRITE:更新节点数据的权限
– DELETE:删除子节点的权限
ADMIN:设置节点ACL的权限
相关文章推荐
- 第一章 Zookeeper 介绍
- ZooKeeper介绍、使用及原理
- 第一章Python 初步介绍
- 全面介绍ZooKeeper原理及使用
- 第一章 Spring.Net介绍
- 函数指针 详解 (第一章 函数指针介绍)
- Zookeeper介绍
- Zookeeper 介绍
- Jenkins 权威指南(中文版) 第一章 Jenkins的介绍
- 第一章:css介绍(CSS BASICS)Chapter 1 : Introduction to CSS
- 第一章 数据库介绍
- 分布式服务框架 Zookeeper(二)官方介绍
- 深入Java虚拟机读书笔记第一章Java体系结构介绍
- zookeeper(一) 介绍,搭建,使用
- zookeeper介绍及配置zookeeper集群
- ZooKeeper学习第一期---Zookeeper简单介绍
- 第一章Linux系统介绍
- closure-library 第一章 Closure介绍
- Solr in action学习笔记 第一章 介绍
- Zookeeper和zkui介绍以及部署