zookeeper
ZooKeeper:分布式应用程序的分布式协调服务
ZooKeeper是面向分布式应用程序的分布式开源协调服务。它公开了一组简单的基元,分布式应用程序可以利用这些基元来实现更高级别的服务,以实现配置维护、组服务、分布式消息队列、分布式通知/协调等。
协调服务是非常难的。他们特别容易出现诸如竞争和僵局等错误。ZooKeeper可以使你不必从零开始搭建自己的协调服务。
zookeeper常见服务:
命名服务
配置管理
同步和组服务
还能被用来实现 leader选举 , 分布式锁等...
设计目标
ZooKeeper很简单。ZooKeeper允许分布式进程通过与标准文件系统类似组织的共享分层名称空间相互协调。名称空间由数据寄存器(称为znode)组成,以ZooKeeper的说法 - 它们与文件和目录类似。与典型的用于存储的文件系统不同,ZooKeeper数据保存在内存中,这意味着ZooKeeper可以实现高吞吐量和低延迟数量。
ZooKeeper实现了高性能,高可用性,严格有序的访问。ZooKeeper的性能方面意味着它可以用于大型分布式系统。可靠性方面使它不能成为单一故障点。严格的排序意味着可以在客户端实现复杂的同步原语。
Znode结构
zookeeper的每一个节点叫做一个Znode,Znode兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。每个Znode由3部分组成:
① stat:此为状态信息, 描述该Znode的版本, 权限等信息
② data:与该Znode关联的数据
③ children:该Znode下的子节点
节点类型
1):永久节点
2):临时节点
节点属性: 见下图
ZooKeeper虽然可以关联一些数据,但并非被设计为常规的数据库或者大数据存储,相反的是,它用来管理调度数据,比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的共同特性就是它们都是很小的数据,通常以KB为大小单位。ZooKeeper的服务器和客户端都被设计为严格检查并限制每个Znode的数据大小至多1M,但常规使用中应该远小于此值。
数据访问:
ZooKeeper中的每个节点存储的数据要被原子性的操作。也就是说读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。
ZooKeeper:分布式应用程序的分布式协调服务
ZooKeeper是面向分布式应用程序的分布式开源协调服务。它公开了一组简单的基元,分布式应用程序可以利用这些基元来实现更高级别的服务,以实现配置维护、组服务、分布式消息队列、分布式通知/协调等。
协调服务是非常难的。他们特别容易出现诸如竞争和僵局等错误。ZooKeeper可以使你不必从零开始搭建自己的协调服务。
设计目标
ZooKeeper很简单。ZooKeeper允许分布式进程通过与标准文件系统类似组织的共享分层名称空间相互协调。名称空间由数据寄存器(称为znode)组成,以ZooKeeper的说法 - 它们与文件和目录类似。与典型的用于存储的文件系统不同,ZooKeeper数据保存在内存中,这意味着ZooKeeper可以实现高吞吐量和低延迟数量。
ZooKeeper实现了高性能,高可用性,严格有序的访问。ZooKeeper的性能方面意味着它可以用于大型分布式系统。可靠性方面使它不能成为单一故障点。严格的排序意味着可以在客户端实现复杂的同步原语。
Znode结构
zookeeper的每一个节点叫做一个Znode,Znode兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。每个Znode由3部分组成:
① stat:此为状态信息, 描述该Znode的版本, 权限等信息
② data:与该Znode关联的数据
③ children:该Znode下的子节点
节点类型
1):永久节点
2):临时节点
节点属性: 见下图
image.png
ZooKeeper虽然可以关联一些数据,但并非被设计为常规的数据库或者大数据存储,相反的是,它用来管理调度数据,比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的共同特性就是它们都是很小的数据,通常以KB为大小单位。ZooKeeper的服务器和客户端都被设计为严格检查并限制每个Znode的数据大小至多1M,但常规使用中应该远小于此值。
数据访问:
ZooKeeper中的每个节点存储的数据要被原子性的操作。也就是说读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。
ZooKeeper:分布式应用程序的分布式协调服务
ZooKeeper是面向分布式应用程序的分布式开源协调服务。它公开了一组简单的基元,分布式应用程序可以利用这些基元来实现更高级别的服务,以实现配置维护、组服务、分布式消息队列、分布式通知/协调等。
协调服务是非常难的。他们特别容易出现诸如竞争和僵局等错误。ZooKeeper可以使你不必从零开始搭建自己的协调服务。
设计目标
ZooKeeper很简单。ZooKeeper允许分布式进程通过与标准文件系统类似组织的共享分层名称空间相互协调。名称空间由数据寄存器(称为znode)组成,以ZooKeeper的说法 - 它们与文件和目录类似。与典型的用于存储的文件系统不同,ZooKeeper数据保存在内存中,这意味着ZooKeeper可以实现高吞吐量和低延迟数量。
ZooKeeper实现了高性能,高可用性,严格有序的访问。ZooKeeper的性能方面意味着它可以用于大型分布式系统。可靠性方面使它不能成为单一故障点。严格的排序意味着可以在客户端实现复杂的同步原语。
Znode结构
zookeeper的每一个节点叫做一个Znode,Znode兼具文件和目录两种特点。既像文件一样维护着数据、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。每个Znode由3部分组成:
① stat:此为状态信息, 描述该Znode的版本, 权限等信息
② data:与该Znode关联的数据
③ children:该Znode下的子节点
节点类型
1):永久节点
2):临时节点
节点属性: 见下图
ZooKeeper虽然可以关联一些数据,但并非被设计为常规的数据库或者大数据存储,相反的是,它用来管理调度数据,比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的共同特性就是它们都是很小的数据,通常以KB为大小单位。ZooKeeper的服务器和客户端都被设计为严格检查并限制每个Znode的数据大小至多1M,但常规使用中应该远小于此值。
数据访问:
ZooKeeper中的每个节点存储的数据要被原子性的操作。也就是说读操作将获取与节点相关的所有数据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的ACL(访问控制列表),这个列表规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。