Zookeeper:概述

来自Wikioe
Eijux讨论 | 贡献2021年5月14日 (五) 01:14的版本 (建立内容为“category:Zookeeper == 关于 == ZooKeeper 是一种'''分布式协调服务''',用于'''管理大型主机'''。 : 在分布式环境中协调和管理服…”的新页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索


关于

ZooKeeper 是一种分布式协调服务,用于管理大型主机

在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决了这个问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。

分布式

分布式应用可以在给定时间(同时)在网络中的多个系统上运行,通过协调它们以快速有效的方式完成特定任务。通常来说,对于复杂而耗时的任务,非分布式应用(运行在单个系统中)需要几个小时才能完成,而分布式应用通过使用所有系统涉及的计算能力可以在几分钟内完成。

通过将分布式应用配置为在更多系统上运行,可以进一步减少完成任务的时间。分布式应用正在运行的一组系统称为“集群”,而在集群中运行的每台机器被称为“节点”。

分布式应用有两部分, Server(服务器) 和 Client(客户端) 应用程序。服务器应用程序实际上是分布式的,并具有通用接口,以便客户端可以连接到集群中的任何服务器并获得相同的结果。 客户端应用程序是与分布式应用进行交互的工具:

Zookeeper:分布式应用.png

CAP 理论

CAP 理论指出对于一个分布式计算系统来说,不可能同时满足以下三点:

  1. 一致性(Consistency):在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,等同于所有节点访问同一份最新的数据副本。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。
  2. 可用性(Availability):每次请求都能获取到正确的响应,但是不保证获取的数据为最新数据。
  3. 分区容错性(Partition tolerance):分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。


一个分布式系统最多只能同时以上的两项:P 是必须的,因此只能在 CPAP 中选择。

  • zookeeper 保证的是 CP
  • 对比 spring cloud 系统中的注册中心 eruka 实现的是 AP。
分布式:CAP理论.png

BASE 理论

BASE 理论:

  1. 基本可用(Basically Available):在分布式系统出现故障,允许损失部分可用性(服务降级、页面降级)。
  2. 软状态(Soft-state):允许分布式系统出现中间状态。而且中间状态不影响系统的可用性。
    • 这里的中间状态是指不同的 data replication(数据备份节点)之间的数据更新可以出现延时的最终一致性。
  3. 最终一致性(Eventually Consistent):data replications 经过一段时间达到一致性。


BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性

Zookeeper

ZooKeeper 是 Apache 软件基金会的一个软件项目,它为大型分布式计算提供开源的'''分布式配置服务'''、'''同步服务'''和'''命名注册'''。

ZooKeeper 框架最初是在“Yahoo!"上构建的,用于以简单而稳健的方式访问他们的应用程序。 后来,Apache ZooKeeper 成为 Hadoop,HBase 和其他分布式框架使用的有组织服务的标准。 例如,Apache HBase 使用 ZooKeeper 跟踪分布式数据的状态。

ZooKeeper 是一个分布式协调服务的开源框架。主要用来解决分布式集群中应用系统的一致性的问题。(例如怎样避免同时操作同一数据造成脏读的问题)

Zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一系列简单易用的接口提供给用户使用。


  • ZooKeeper 本质上是一个分布式的小文件存储系统。提供基于类似于文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。从而来维护和监控你存储的数据的状态变化。将通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。
  • ZooKeeper 的架构通过冗余服务实现高可用性。
  • 分布式应用程序可以基于它实现诸如:数据发布/订阅负载均衡命名服务分布式协调/通知集群管理Master 选举分布式锁分布式队列等功能。

架构图

Zookeeper:架构图.png