什么是zookeeper?
    开源的,为分布式应用提供协调服务的Apache项目。

zookeeper的工作机制?
    采用观察者设计模式,获取存储服务器的状态信息,然后接受客户端的注册,一旦客户端观的这些数据的状态发生了变化,就通知客户端。
    zookeeper = 文件系统 + 通知机制 ;就是这么理解的
    
zookeeper特点:
    一个Leader,多个Followers组成的集群;
    集群只要半数以上的服务器存活,zookeeper集群就能正常服务;
    每台server的数据都是一样的,#这些数据是配置文件,所以内存不大,
    同一个client的更新请求按其发送的顺序依次执行
    实时性,更新数据非常快
    
zookeeper的数据结构:
    数结构,每个节点叫ZNode,每个ZNode只能存1MB数据,每个ZNode路径唯一
    
应用场景:
    统一命名:多个ip对应相同的域名,域名也就是url,例如:www.baidu.com
    统一配置管理:所有节点的配置信息是一致的、对配置文件修改,能快速同步到各个节点上
    统一集群管理:
    
服务器动态上下线:
    客户端能实时观察到服务器上下线的变化
    
软负载均衡:
    让访问数最少的服务器去访问最新的客户请求

zookeeper的内部原理:
    集群半数以上机器存活,集群就可用,适合安装奇数台服务器
    选举机制:第一次都选自己,不行就选id最大的,一旦半数以上票马上当选,后来者也改变不了
    
节点的类型:
    持久的(persistent):客户端与服务器断开连接后,创建的节点不删除。
        持久化目录节点:客户端与服务器断开连接后,创建的节点不删除。
        持久化顺序编号目录节点:客户端与服务器断开连接后,创建的节点不删除,对节点进行顺序编号
    短暂的(ephemeral):客户端与服务器断开连接后,创建的节点删除
        临时目录节点:连接断开,节点删除
        临时顺序编号目录节点:连接断开,节点删除,不过zookeeper对节点名称进行顺序编号
    
启动zookeeper:
    bin下执行:zkServer.sh start # 启动服务器
    bin下执行:zkServer.sh stop # 停止服务器
    要启动过半服务器,zookeeper才能工作
    jps  # 产看服务器
    zkServer.sh status # 查看zookeeper的服务器状态
    bin下执行:zkCli.sh   # 启动客户端
    
客户端命令行操作:
    quit:退出
    创建节点:create /znode1 "data"  # 创建节点必须同时在节点存数据,不然会失败
    get /znode1 # 获取节点znode1的内容
    创建短暂节点:create -e /znode1 "data" 
    创建顺序编号节点:create -s /znode1 "data" 
    ls /znode1  # 可以查看有哪些节点   
    set /znode1 "data2"  #修改为data2
    注册监听是在客户端执行:get /znode1 watch  注册一次,只能监听一次,当其他客户端修改了监听点,马上收到通知。
    ls /znode1 watch  # 监听节点变化 ,依然是只能监听一次变化
    delete /znode1  # 删除节点
    rmr /znode1  # 递归删除节点
    stat / # 查看结点的详细信息

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐