zoukankan      html  css  js  c++  java
  • ZooKeeper学习笔记(一)——概述

    zookeeper学习笔记(一)——概述

    1. 概述

    Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。zookeeper从设计模式的角度来理解:是一个基于观察者设计模式的分布式服务管理框架,她负责存储和观察大家都关心的数据,然后接收观察者的注册,一旦这些数据的状态发生变化,zookeeper就将负责通知已经在zookeepr上注册的那些观察者做出相应的反应。

    2. zookeeper的特点

    1)Zookeeper:它是一个由一个leader,多个follower组成的集群。;

    2)集群中只要由半数以上的节点存活,zookeeper就能够正常工作;

    3)全局数据一致性:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,拿到的数据都是一致的;

    4)更新请求顺序进行,来自同一个client的更新请求按照其发送顺序依次进行;

    5)数据更新原子性,一次数据要么更新成功,要么失败;

    6)实时性:在一定的时间范围内,Client能够读到最新的数据。

    3. 数据结构

    zookeeper的数据模型结构与Linux的文件系统的结构非常类似,整体上可以看作是一个树的结构,每个节点成为一个znode。每一个znode默认能够存储1MB的数据,每个znode都可以通过其路径唯一标识。

    就像Linux的文件系统一样,我们能够自由的增加删除znode也可以在一个znode下增加删除子节点,注意哦,znode是可以存储数据的。具体操作已在其他的随笔中有记录了。

    ### 4. zookeeper的应用场景

    zookeeper提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等等~~

    1)统一命名服务:在分布式的环境下,经常需要对应用/服务进行统一的命名服务,便于识别。例如:IP地址不容易记住,而域名就比较好记了。

    2)统一配置管理:

    (1)分布式环境下,配置文件同步非常常见:

    • 一般要求一个集群中,所有的节点配置信息一致,比如kafka集群;
    • 对于配置文件修改之后,希望能够快速同步到集群的各个节点上去;

    (2)配置管理可以交给zookeeper实现:

    • 可以将配置信息 写入zookeeper的一个znode

    • 各个客户端监听这个znode

    • 一旦znode中的数据被修改,zookeeper将通知各个客户端服务器。

    3)统一集群管理

    (1)分布式环境中,实时掌握每个节点的状态是必要的,可以根据节点的状态做出一些调整

    (2)zookeeper可以实时的监控节点的状态变化:

    • 可以将节点信息写入zookeeper的一个znode
    • 简体这个znode可以获取它的实时变化

    4)服务器动态上下线

    5. Zookeeper中的配置文件zoo.cfg中参数

    1).tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒
    Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。
    它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2*tickTime)
    2).initLimit =10:LF初始通信时限
    集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。
    3).syncLimit =5:LF同步通信时限
    集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit * tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。
    4).dataDir:数据文件目录+数据持久化路径
    主要用于保存Zookeeper中的数据。
    5).clientPort =2181:客户端连接端口
    监听客户端连接的端口。

  • 相关阅读:
    Java实现 洛谷 P1060 开心的金明
    (Java实现) 洛谷 P1605 迷宫
    (Java实现) 洛谷 P1605 迷宫
    (Java实现)洛谷 P1093 奖学金
    (Java实现)洛谷 P1093 奖学金
    Java实现 洛谷 P1064 金明的预算方案
    Java实现 洛谷 P1064 金明的预算方案
    (Java实现) 洛谷 P1031 均分纸牌
    QT树莓派交叉编译环开发环境搭建(附多个exe工具下载链接)
    武则天红人对唐睿宗的桃色报复(如此缺少城府,注定了要在宫廷中过早地出局)
  • 原文地址:https://www.cnblogs.com/simon-1024/p/11866527.html
Copyright © 2011-2022 走看看