上面我们已经讨论了zookeeper在应用程序中的一些操作,以下我们须要理解一下服务端的工作的原理。client是怎样通过一个client的类库与服务端进行通信的,然后服务端又是怎样回应client的。

以下这张图显示了client和服务端的关系,每一个client都须要导入到client的类库中。然后才干够与zookeeper的节点进行交互

Zookeeper能够运行在两种模式中各自是独立模式和复制模式,独立模式就是同意在一台主机上。zookeeper的状态并不能被复制;对于集群模式,我们能够保证服务端的状态一致。而且同一时候一起收到来自client的请求。

Zookeeper的集群模式

在集群模式中。zookeeper须要复制他们的数据信息来保证全部的服务端信息一致性。那么假设每一个client都须要等全部的信息一致的话。时间将会很的长。在一个公共的管理中,我们能够採取以下办法,比如有5台zookeeperserver。可是能够有三个集群的话,那么client仅仅须要在3个集群信息保持一致的话,就能够进行以下的操作,后面的2台zookeeperserver终于会赶上和存储数据。

重要的是怎样选择一个适当的大小的群体,最后必须保证,不管延迟和系统崩溃,不论什么更新请求,服务都能够运行下去。

在一个有5个节点的集合体中,每一个Follower节点的数据都是Leader节点数据的副本,也就是说我们的每一个节点的数据视图都是一样的,这样就能够有五个节点提供ZooKeeper服务。而且集合体中随意2台机器出现问题,都能够保证服务继续,由于剩下的3台机器超过了半数。

回话

在client与zookeeper交互之前,client必须与服务端建立一个回话。回话是必须的,不论什么client的操作都必须在回话中完毕,一旦回话结束,暂时节点也将会消失。

会话保证了顺序的运行,这意味着请求在一个会话中运行FIFO(先进先出)。通常情况下,一个客户仅仅有一个会话打开,所以它的请求都是先进先出顺序运行。假设一个客户有多个并发会话。先进先出顺序不一定是保存在会话。

连续会话同样的客户,即使他们不重叠,也不一定保持先进先出顺序。

这是可能发生在这样的情况下:

1.   client建立一个会话,使连续两个异步调用创建/task和/worker

2.   第一个回话过期了

3.   client创建了另外一个回话,异步的调用创建了/assign

在这个调用序列,它是可能的,仅仅有创建了/task和/assign,它保留了第一次回话中先进先出的顺序,但违反了跨回话。

Zookeeper体系结构的更多相关文章

  1. 分布式服务协调技术zookeeper笔记

    本文主要学习ZooKeeper的体系结构.节点类型.节点监听.常用命令等基础知识,最后还学习了ZooKeeper的高可用集群的搭建与测试.希望能给想快速掌握ZooKeeper的同学有所帮助. ZooK ...

  2. ZooKeeper学习第六期---ZooKeeper机制架构

    一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control List) ZooKeeper 的权限管理亦即ACL 控制功能,使用ACL来对Znode进行访问控制.ACL的 ...

  3. 【Zookeeper系列】ZooKeeper机制架构(转)

    原文链接:https://www.cnblogs.com/sunddenly/p/4133784.html 一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control L ...

  4. ZooKeeper系列(6):ZooKeeper机制架构

    一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control List) ZooKeeper 的权限管理亦即ACL 控制功能,使用ACL来对Znode进行访问控制.ACL的 ...

  5. ZooKeeper学习第六期---ZooKeeper机制架构(转)

    转载来源:https://www.cnblogs.com/sunddenly/p/4133784.html 一.ZooKeeper权限管理机制 1.1 权限管理ACL(Access Control L ...

  6. HBase体系结构(转)

    HBase的服务器体系结构遵循简单的主从服务器架构,它由HRegion服务器(HRegion Server)群和HBase Master服务器(HBase Master Server)构成.HBase ...

  7. HBase体系结构

    HBase的服务器体系结构遵从简单的主从服务器架构,它由HRegion服务器(HRegion Service)群和HBase Master服务器(HBase Master Server)构成.Hbas ...

  8. Zookeeper从入门到精通(开发详解,案例实战,Web界面监控)

    ZooKeeper是Hadoop的开源子项目(Google Chubby的开源实现),它是一个针对大型分布式系统的可靠协调系统,提供的功能包括:配置维护.命名服务.分布式同步.组服务等. Zookee ...

  9. [转载] zookeeper应用——集中配置管理系统的实现

    转载自http://blog.csdn.net/huangfengxiao/article/details/8844239 1 场景描述 参考http://www.ibm.com/developerw ...

随机推荐

  1. Angular 显示英雄列表

    在本页面,你将扩展<英雄指南>应用,让它显示一个英雄列表, 并允许用户选择一个英雄,查看该英雄的详细信息. 创建模拟(mock)英雄数据 你需要一些英雄数据以供显示. 最终,你会从远端的数 ...

  2. python 关于文件操作的一些理解

    在用python进行数据处理编程中,往往涉及到文件IO口读写,IO口的读写性能会极大的影响程序的运行时间.在进行文件写入时,一般会存在两种情况.第一种是数据到来马上进行数据写入,即来一条写一条,第二种 ...

  3. MSSQL:查看作业情况

    select j.name 'Job名',        j.description '描述',        j.ENABLED job_enabled,        cast(js.last_r ...

  4. iOS 代理设计模式

    在项目中经常会用到代理的设计模式,这是iOS中一种消息传递的方式,也可以通过这种方式传递一些参数. 在项目中,刚开始我是用一些代理来传递参数的,但是慢慢觉得代理的代码比较block多,所以就更多的使用 ...

  5. BZOJ 2969 期望

    思路: 我们可以分开算每个格子自己的期望啊... 期望可以累加的 那就把这个大格子 分成 9个部分 分别算好了... //By SiriusRen #include <cmath> #in ...

  6. 如何使用SQL Developer创建数据库连接

    SQL Develope启动后,需要创建一个数据库连接,只有创建了数据库连接,才能在该数据库的方案中创建.更改对象或编辑表中的数据. 创建数据库连接的步骤如下. (1)在主界面左边窗口的“连接”选项卡 ...

  7. 团体程序设计天梯赛-练习集-L1-032. Left-pad

    L1-032. Left-pad 根据新浪微博上的消息,有一位开发者不满NPM(Node Package Manager)的做法,收回了自己的开源代码,其中包括一个叫left-pad的模块,就是这个模 ...

  8. json简介及josn数组中取字符

    1.json字符串就是字符串,只不过格式是Json格式的,以键值对的形式存在,键和值可以是字符串,数字,空值,数组等. json对象在花括号中书写,一个json对象包含多个键值对,json对象以花括号 ...

  9. 【udacity】机器学习-knn最近邻算法

    Evernote Export 1.基于实例的学习介绍 不同级别的学习,去除所有的数据点(xi​,yi​),然后放入一个数据库中,下次直接提取数据 但是这样的实现方法将不能进行泛化,这种方式只能简单的 ...

  10. 面试官问你:MYSQL事务和隔离级别,该如何回答

    一.事务 事务是由一组SQL语句组成的逻辑处理单元,是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚.事务具有以下4个属性,通常简称为事务 ...