ZooKeeper No2 架构详解

架构与源码解读

一. ZooKeeper是什么?
ZooKeeper是分布式应用程序协调服务
二. ZooKeeper提供什么?

1. 文件系统

2. 通知机制

一、ZooKeeper文件系统

## 子目录:每个子目录项如NameService都被称为znode,和文件系统一样,可以自由增加、删除节点znode,在节点下可以增减、删除子节点znode,唯一不同时znode可以存储数据。

##  znode:四种类型                                                                          客户端与zookeeper断开连接后,

#### 1.持久化目录节点                 PERSISTENT                                节点依旧存在       

#### 2.持久化顺序编号目录节点   PERSISTENT_SEQUENTIAL       节点依旧存在,ZooKeeper给该节点名称进行编号  

#### 3.临时目录节点                     EPHEMERAL                                节点删除,

#### 4.临时顺序编号目录节点       EPHEMERAL_SEQUENTIAL       节点删除,ZooKeeper

二、ZooKeeper通知机制

     客户端注册监听所关心的目录节点,当目录节点发生变化(数据改变、删除,子目录节点增加、删除)时,ZooKeeper通知客户端。

三. ZooKeeper做了什么?

## 1.命名服务    文件系统里创建一个目录,有唯一的path。

     ## 在使用tborg无法确定上游程序的部署机器时,即可与下游程序约定好path, 通过path即能互相探索发现。

## 2.配置管理    配置信息保存在ZooKeeper目录节点,相关应用程序监听此目录节点。

     ## 当配置信息发生变化,每个应用程序就收到ZooKeep的通知,然后从ZooKeeper获取新配置信息,应用到系统

## 3.集群管理    1>监听:机器退出和加入   2>选举:master

     ## 1> 监听问题:所有机器约定在父目录GroupMemebers创建临时目录节点,然后监听父目录节点的子节点变化消息。

     ###退出\宕机:与zookeeper断开连接,临时目录节点删除,其他机器收到通知

     ### 加入:  与zookeeper建立连接,临时目录节点加入兄弟节点

     ## 2> 选举问题:所以机器创建临时顺序编号目录节点,每次选取编号最小的机器作为master

## 4.分布式锁    1>保持独占    2>控制时序

     ## 1> 保持独占: znode看作锁,通过createznode方式实现。所有客户端创建/distribute_lock 节点,最终成功创建的客户端

                                 也拥有了这把锁。用完删除掉自己创建的distribute_lock 节点,就释放出锁。

     ## 2> 控制时序:/distribute_lock预先存在,所有客户端在它下面创建顺序编号目录节点,和选master一样,编号最小的获得锁,

                                用完删除,依次方便

## 5.队列管理    1>同步队列 (成员全部聚齐,才可用;否则,一致等待所有成员到达。)   2>FIFO队列 (按照FIFO入队出队)

    ## 同步队列    预定目录下创建临时目录节点,监听节点数目是否符合数量要求

    ## FIFO队列   入列有编号,出列按编号。 (和分布式锁服务中的控制时序场景基本原理一致)

## 6.分布式与数据复制    

#ZooKeeper为集群提供一致的数据服务,在所有机器做数据复制

##1>容错,节点出错,系统不停止,其他节点接管

##2>扩展:负载分布到多个节点,或者增加节点,来提高系统的负载

##3>性能:客户端本地访问就近节点,提高访问速度。

#数据复制集群系统,(客户端读写访问)

##1>写主    :数据修改提交给指定节点。读无此限制,可以读取任何一个节点。此情况下,客户端需要对读与写进行区别(即读写分离)

##2>写任意:数据修改提交给任意节点。读一样,客户端对集群节点的角色与变化透明。

#对zookeeper,采用写任意。通过增加机器,读吞吐能力和响应能力扩展性好,而写,随着机器的增多吞吐能力下降(这是它建立observer的原因),而响应能力取决于具体实现方式(延迟赋值保持最终一致性,or,立即赋值快速响应。)

四、角色与描述

领导者Leader :发起和决议投票,更新系统状态

学习者Learner: 

##跟随者Follower :接收客户端请求,选举中参与投票,向客户端返回结果

##观察者Observer:接收客户端连接,将写请求转发给Leader节点,不参加投票,只同步Leader状态

                                  Observer目的:扩展系统,提高读取速度。

客户端Client   :请求发起方

未完待续https://www.cnblogs.com/felixzh/p/5869212.html

猜你喜欢

转载自blog.csdn.net/ddhmbbklyk2018/article/details/82529747