前言:在我们了解kafka为什么依赖zookeeper之前,首先要先知道zookeeper自身的一个基础架构和作用
“所有一切的努力都是为了自己的名字”
Zookeeper概念扫盲
基本概述
ZooKeeper是一个分布式协调服务,它的主要作用是为分布式系统提供一致性服务
数据结构
ZooKeeper的数据存储也同样是基于节点,这种节点叫做Znode。每一个Znode里包含了数据、子节点引用、访问权限等.
- data即Znode里面的数据
- ACL为权限规则,它规定了哪些用户或哪些IP才有权限访问此Znode
- stat记录了Znode相关的元数据,比如事务ID、版本号、时间戳、大小
- child为当前节点的子节点引用,类似于二叉树的左孩子右孩子
ZooKeeper有个限制,就是每个Znode的数据大小不会超过1M。
节点类型
持久节点:在节点创建后,就一直存在,直到有删除操作来主动清除这个节点——不会因为创建该节点的客户端会话失效而消失。
持久顺序节点:(节点会自动加上编号):额外的特性是,在ZK中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序.