一、ZooKeeper概念和基础
1、ZooKeeper的使命就是在分布系统中协作多个任务。一个协作任务就是指一个包含多个进程的任务;这个任务可以是为了协作,也可以是为了管理竞争。协作可以理解成多个进程需要一同处理某些事情;竞争则是两个进程不能同时处理工作的情况。
2、ZooKeeper不适用做海量数据存储,应该将应用数据和协同数据分开。
3、分布式系统是同时跨越多个物理主机,独立运行的多个软件组成的系统。
4、分布式系统中进程通信的两种选择:1)直接通过网络进行交换;2)读写某些共享存储。ZooKeeper使用共享存储
5、拜占庭将军问题
6、提供原语列表的缺点:1)需要提供详尽的原语列表或者API扩展;2)这种实现方式丧失了灵活性。
7、ZooKeeper不直接暴露原语,而是暴露了一小部分调用方法组成类似文件系统的API,以便允许应用实现自己的原语。一个znode节点包含四个子节点,分别是serviceid、workers、tasks、assign;其中serviceid没有子节点,其余三个包含子节点。
8、ZooKeeper的API:
1)create /path data
2)delete /path
3)exists /path
4)setData /path data
5)getData /path
6)getChildren /path
9、znode的类型:1)持久的;2)临时的;3)持久有序的;4)临时有序的。
10、临时节点会被删除的情形:1)创建该znode的客户端因超时或主动关闭;2)某个客户端(不一定是创建该节点的客户端)主动删除该节点。
11、每个znode的都有一个版本号,这个版本号随着每次数据的变化而自增。
12、ZooKeeper的两种运行模式:1)独立模式(standalone);2)仲裁模式(quorum)
独立模式中ZooKeeper的状态无法复制;仲裁模式可以进行状态复制,并同时服务于客户端请求。
13、会话:同一个会话中的请求以FIFO(先进先出)顺序执行。同时一个客户端指打开一个会话,这样才能保证FIFO的顺序。
14、会话状态:NOT_CONNECTED、CONNECTIING、CONNECTED、CLOSED