zookeeper01 详解、安装与配置、单机版

zookeeper
-------------
    1.管理大量主机的协同服务。
    2.分布式应用,实现分布式读写技术。
    3.zk提供的服务
        Naming service              //按名称区分集群中的节点.
        Configuration management    //对加入节点的最新化处理。
        Cluster management          //实时感知集群中节点的增减.
        Leader election             //leader选举
        Locking and synchronization service //修改时锁定数据,实现容灾.
        Highly reliable data registry       //节点宕机数据也是可用的。
 
 
zk安装(单机版,s201)
---------------
    1.jdk
 
    2.下载zookeeper-3.4.9.tar.gz
 
    3.tar开
 
    4.符号连接环境变量
        $>ln -s zookeeper-3.4.9 zk
 
    5.配置zk,复制zoo.cfg.sample-->zoo.cfg
        [zk/conf/zoo.conf]
        # The number of milliseconds of each tick
        tickTime=2000
        initLimit=10
        syncLimit=5
        dataDir=/home/centos/zookeeper
        clientPort=2181
     
    6.启动zk服务器
        $>bin/zkServer.sh start
     
    7.验证zk
        $>netstat -anop | grep 2181
 
    8.启动客户端连接到服务器
        $>zkCli.sh -server s201:2181 //进入zk命令行
        $zk]help                        //查看帮助
        $zk]quit                        //退出
        $zk]create /a tom               //
        $zk]get /a                      //查看数据
        $zk]ls /                        //列出节点
        $zk]set /a tom                  //设置数据
        $zk]delete /a                   //删除一个节点
        $zk]rmr /a                      //递归删除所有节点。
 
    9.通过api访问zk
        9.1[pom.xml]
        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="http://maven.apache.org/POM/4.0.0"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>
 
            <groupId>com.it18zhang</groupId>
            <artifactId>ZooKeeperDemo</artifactId>
            <version>1.0-SNAPSHOT</version>
 
            <dependencies>
                <dependency>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                    <version>3.4.9</version>
                </dependency>
 
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>4.11</version>
                </dependency>
            </dependencies>
        </project>
 
        9.2[代码]
        package com.it18zhang.zktest;
        import org.apache.zookeeper.ZooKeeper;
        import org.junit.Test;
        import java.util.List;
 
         */
        public class TestZK {
            @Test
            public void ls() throws  Exception{
                ZooKeeper zk = new ZooKeeper("s201:2181",5000,null);
                List<String> list = zk.getChildren("/",null);
                for(String s : list){
                    System.out.println(s);
                }
            }
        }


 ------------------

以上代码可能会抛异常:

org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /

解决办法:

关闭目标Linux系统的防火墙

Centos7.0以下

CentOS Linux开启和关闭防火墙命令有两种,一种是临时的,重启即复原;另外一种是永久性的,重启不会复原。
1) 临时生效,重启后复原
开启: service iptables start
关闭: service iptables stop
2) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off

Centos7.0及以上

systemctl stop firewalld.service

 


 
zk架构
------------------
    1.Client
        从server获取信息,周期性发送数据给server,表示自己还活着。
        client连接时,server回传ack信息。
        如果client没有收到reponse,自动重定向到另一个server.
 
    2.Server
        zk集群中的一员,向client提供所有service,回传ack信息给client,表示自己还活着。
 
    3.ensemble
        一组服务器。
        最小节点数是3.
 
    4.Leader
        如果连接的节点失败,自定恢复,zk服务启动时,完成leader选举。
 
    5.Follower
        追寻leader指令的节点。
 
znode
------------------
    zk中的节点,维护了stat,由Version number, Action control list (ACL), Timestamp,Data length.构成.
    data version        //数据写入的过程变化
 
    ACL                 //action control list,
 
 
节点类型
-----------------
    1.持久节点
        client结束,还存在。
         
    2.临时节点
        在client活动时有效,断开自动删除。临时节点不能有子节点。
        leader推选是使用。
 
    3.序列节点
        在节点名之后附加10个数字,主要用于同步和锁.
 
Session
--------------------
    Session中的请求以FIFO执行,一旦client连接到server,session就建立了。sessionid分配client.
 
    client以固定间隔向server发送心跳,表示session是valid的,zk集群如果在超时时候,没有收到心跳,
    判定为client挂了,与此同时,临时节点被删除。
 
Watches
-------------------
    观察。
    client能够通过watch机制在数据发生变化时收到通知。
    client可以在read 节点时设置观察者。watch机制会发送通知给注册的客户端。
    观察模式只触发一次。
    session过期,watch机制删除了。
 
 
zk工作流程
----------------
    zk集群启动后,client连接到其中的一个节点,这个节点可以leader,也可以follower。
    连通后,node分配一个id给client,发送ack信息给client。
    如果客户端没有收到ack,连接到另一个节点。
    client周期性发送心跳信息给节点保证连接不会丢失。
 
    如果client读取数据,发送请求给node,node读取自己数据库,返回节点数据给client.
 
 
    如果client存储数据,将路径和数据发送给server,server转发给leader。
    leader再补发请求给所有follower。只有大多数(超过半数)节点成功响应,则
    写操作成功。
 
 
 
 
 
 
QJM 
---------------
     
 
User    Group   Other
----------------------
rwx     rwx     rwx

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值