博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zookeeper -- 第一章 zookeeper介绍
阅读量:7040 次
发布时间:2019-06-28

本文共 1984 字,大约阅读时间需要 6 分钟。

hot3.png

概述:作为一枚搬砖工人,只能不能的学习,稍微偷懒感觉就要被淘汰了,赶紧弥补下。下面开始啰嗦的理论知识阐述,虽然啰嗦但是对于后续理解还是很有必要。

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、分布式队列

  • FIFO

5、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的权限

转载于:https://my.oschina.net/u/3136594/blog/1606905

你可能感兴趣的文章
全景制作
查看>>
在Windows7系统上重新安装Windows XP
查看>>
PhotoShop中让索引图片解锁使用
查看>>
【面试题】-RabbitMQ常见面试题(二)
查看>>
Spring框架使用ByName自动注入同名问题剖析
查看>>
HDOJ-2546 饭卡【DP】【01背包】
查看>>
币值转换
查看>>
POJ 2728 Desert King (算竞进阶习题)
查看>>
(转)heX——基于 HTML5 和 Node.JS 开发桌面应用
查看>>
通过腾讯地图api获取用户位置限制在指定位置区域
查看>>
Archlinux GRUB2 配置
查看>>
第二周作业
查看>>
团队事后分析
查看>>
mysql 关于列的语句
查看>>
博客作业2---线性表
查看>>
grub2引导安装kali2.0及安装ibus拼音输入法
查看>>
SQL常用命令
查看>>
Linux~Docker部分~
查看>>
Simple2D-15(音乐播放器)使用 glfw 库
查看>>
web.config 配置与获取
查看>>