zoukankan      html  css  js  c++  java
  • ZooKeeper 功能

    ZooKeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。

    原语: 操作系统或计算机网络用语范畴。它是由若干条指令组成的,用于完成一定功能的一个过程。具有不可分割性,即原语的执行必须是连续的,在执行过程中不允许被中断。

    ZooKeeper 是一个典型的分布式数据一致性解决方案,

    分布式应用程序可以基于 ZooKeeper 实现诸如:

    数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

    ZooKeeper 一个最常用的使用场景就是用于担任服务生产者和服务消费者的注册中心。

    服务生产者将自己提供的服务注册到 ZooKeeper 中心,服务的消费者在进行服务调用的时候先到 ZooKeeper 中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据。

    如下图所示,在 Dubbo 架构中 ZooKeeper 就担任了注册中心这一角色。

    Zookeeper集群管理

    所谓集群管理无在乎两点:是否有机器退出和加入、选举master。 

    Zookeeper分布式锁

    有了zookeeper的一致性文件系统,锁的问题变得容易。锁服务可以分为两类,一个是保持独占,另一个是控制时序。 

    对于第一类,我们将zookeeper上的一个znode看作是一把锁,通过createznode的方式来实现。

    所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。用完删除掉自己创建的distribute_lock 节点就释放出锁。 

    对于第二类, /distribute_lock 已经预先存在,所有客户端在它下面创建临时顺序编号目录节点,和选master一样,编号最小的获得锁,用完删除,依次方便。

  • 相关阅读:
    [转帖]Javascript字符验证代码
    HTML标签转换函数
    [转帖]javascript做浮点数运算精确问题
    页面间参数传递
    js与asp.net的对话
    作死作死,完美主义,又“重写”了
    学习的最大动力是想要更加减少重复性工作
    三种可执行脚本的入门总结1
    [Python学习]遇到阻碍:可以在win平台下使用的unix shell环境
    .bat批处理脚本让cmd命令行提示符cd到工作目录
  • 原文地址:https://www.cnblogs.com/handsome1013/p/10833441.html
Copyright © 2011-2022 走看看