Zookeeper简介

1. 什么是Zookeeper

ZooKeeper is a high-performance coordination service for distributed applications. It exposes common services - such as naming, configuration management, synchronization, and group services - in a simple interface so you don't have to write them from scratch. You can use it off-the-shelf to implement consensus, group management, leader election, and presence protocols. And you can build on it for your own, specific needs.

ZooKeeper是分布式应用程序的高性能协调服务。它在一个简单的接口中公开了通用服务,如命名、配置管理、同步和组服务,因此您不必从头开始编写它们。您可以使用现成的工具来实现共识、组管理、领导者选举和出席协议。你可以根据自己的特定需求进行构建。

2. Zookeeper的设计目标

2.1 复制的

与它协调的分布式进程一样,ZooKeeper本身旨在集群主机之间的数据(配置)复制。

2.2 事务有序的

ZooKeeper用一个数字标记每次更新,该数字反映了所有ZooKeeper事务的顺序。后续操作可以使用该顺序来实现更高级别的抽象,例如同步原语。

2.3 高效的

它在"以读取为主"的工作负载中特别快。ZooKeeper应用程序在数千台机器上运行,在读取比写入更常见的情况下,其性能最佳,比率约为10:1。

3. Zookeeper的数据模型和分层命名空间

3.1 数据模型

Unlike standard file systems, each node in a ZooKeeper namespace can have data associated with it as well as children. It is like having a file-system that allows a file to also be a directory. (ZooKeeper was designed to store coordination data: status information, configuration, location information, etc., so the data stored at each node is usually small, in the byte to kilobyte range.) We use the term znode to make it clear that we are talking about ZooKeeper data nodes.

与标准文件系统不同,ZooKeeper命名空间中的每个节点都可以拥有与其关联的数据以及子节点。这就像有一个文件系统,允许文件也成为目录。(ZooKeeper旨在存储协调数据:状态信息、配置、位置信息等,因此存储在每个节点的数据通常很小,在字节到千字节的范围内。)我们使用术语znode来明确我们谈论的是ZooKeeper数据节点。

3.2 分层命名空间

2.1 服务发现

2.2 分布式配置

  • 配置文件的更新,借助zookeeper的znode变化,更新指定的配置文件或配置项。
  • 分布式环境中,同时更新所有集群机器上的配置文件。 参考 [[Zookeeper 官方示例2-SyncPrimitive 代码解读]] 第1章节内容。

2.3 Master的选举

2.4 消息队列(JMX)

参考[[Zookeeper 官方示例2-SyncPrimitive 代码解读]] 第2章节内容。

相关推荐
ProgrammerPulse19 分钟前
K8s 运维告别 “猜谜游戏”:青云云易捷v6.0对接 K8sGPT,AI 赋能一键解锁智能诊断
云原生
组合缺一36 分钟前
论 AI Skills 分布式发展的必然性:从单体智能到“云端大脑”的跃迁
java·人工智能·分布式·llm·mcp·skills
星图易码1 小时前
星图云开发者平台功能详解 | 微服务管理器:异构服务零门槛无缝集成
微服务·云原生·架构
小二·2 小时前
Go 语言系统编程与云原生开发实战(第4篇):数据持久化深度实战 —— PostgreSQL、GORM 与 Repository 模式
postgresql·云原生·golang
麦兜*2 小时前
深入解析云原生时代的高性能消息中间件:基于Apache Pulsar与Kafka架构对比的万亿级数据吞吐与低延迟实时处理实战
云原生·kafka·apache
shepherd1262 小时前
深度剖析SkyWalking:从内核原理到生产级全链路监控实战
分布式·后端·skywalking
KubeSphere 云原生2 小时前
在 KubeSphere 上运行 Moltbot(Clawdbot):自托管 AI 助手的云原生实践
docker·云原生·容器
Clarence Liu3 小时前
k8s 1.35 使用kubeadm部署高可用集群
云原生·容器·kubernetes
麦兜*3 小时前
深入解析云原生AI应用全栈架构:从Kubernetes智能调度与Istio服务网格到Knative事件驱动与Prometheus可观测性实战指南
人工智能·云原生·架构
h7ml4 小时前
基于 RabbitMQ 构建异步化淘客订单处理流水线:解耦、削峰与失败重试
分布式·rabbitmq·ruby