ZOOKEEPER是为分布式系统提供高性能的协调工具

角色:

1.领导者(leader):负责进行投票的发起和决议,更新系统状态
2.学习者(learner):包括跟随者(follower)和观察者(observer),
  Follower用于接受客户端请求并向客户端返回结果(如果是事务请求,follower会将请求转发给leader实施),在选主过程中参与投票,以及参与事务投票
  Observer可以接受客户端请求,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度,同时可以避免加入Follower,会因为参加投票(网络传输等)降低性能的问题
3. 客户端(client),请求发起方

数据节点类型:

PERSISTENT:永久节点
EPHEMERAL:临时节点(为防止临时节点的消亡影响子节点数据,临时节点内不得创建子节点)
PERSISTENT_SEQUENTIAL:永久节点、序列化
EPHEMERAL_SEQUENTIAL:临时节点、序列化

数据属性:

保证:

1.顺序一致性:来自于客户端的更新,根据发送的先后被顺序实施。
2.唯一的系统映像:尽管客户端连接到不同的服务器,但它们看到的一个唯一(一致性)的系统服务,client无论连接到哪个server,数据视图都是一致的。
3.可靠性:一旦实施了一个更新,就会一直保持那种状态,直到客户端再次更新它,同时数据更新原子性,一次数据更新要么成功,要么失败。
4.及时性:在一个确定的时间内,客户端看到的系统状态是最新的。

特性:

最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。
可靠性:具有简单、健壮、良好的性能,如果消息m被一台服务器接受,那么它将被所有的服务器接受。
实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。 但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。
等待无关(wait-free):慢的或者失效的client,不得干预快速的client的请求,使得每个client都能有效的等待。
原子性:更新只能成功或者失败,没有中间状态。
顺序性:包括全局有序和偏序两种:

  全局有序:是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;

  偏序:是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面

最新文章

  1. sftp上传 - 待完
  2. html代码中显示系统时间
  3. Git: untrack a file in local repo only and keep it in the remote repo
  4. 20145215《Java程序设计》课程总结
  5. z/os上的tar和gzip
  6. webvector将html转为svg或者png图片的工具
  7. 一步步搭建自己的轻量级MVCphp框架-(二)一个国产轻量级框架Amysql源码分析(1)
  8. 转换时间为 “XX分钟之前”
  9. vs2017 本地IP地址调试 局域网调试
  10. kaggle首秀之intel癌症预测(续篇)
  11. vsftpd控制用户禁止访问上级目录 只能访问自己目录
  12. SpringBootWEB项目和非Web项目的全局异常捕获
  13. VS、ReSharper 设置修改代码颜色、提高代码辨识度!附VS超实用快捷!
  14. c#二维码资料
  15. leetcode 中等题(2)
  16. bzoj1047&bzoj1012
  17. 第十一章 非对称加密算法--DH
  18. [ActionScript 3.0] UDP通信
  19. LogCat里的错误提示 FATAL EXCEPTION: main
  20. css中的三种基本定位机制

热门文章

  1. java程序显示log日志信息的方法
  2. Amdahl定律和可伸缩性
  3. Ajax传递复杂对象报415
  4. Ubuntu 配置ISCSI服务
  5. react-native-swiper设定高度的方法(设置rn轮播图所占高度)
  6. 消息队列 RabbitMQ 入门介绍
  7. Selenium 2自动化测试实战37(自动发邮件功能)
  8. Centos7.2 MQTT的学习之Mosquitto搭建&集群搭建&使用
  9. 【JavaScript】初识js
  10. php screw加密与破解