Docker compose 部署 zookeeper 集群

目录

前言

分布式理论

CAP 理论

BASE理论

概述

特点

数据结构

应用场景

服务器选取机制

zookeeper的角色

zab协议

相关术语

选举流程

首次选举

非首次选举

部署

安装 java

配置 hosts 文件

docker-compose.yml 

 启动

查看集群状态

另外


前言

分布式理论

CAP 理论

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

  • 一致性:在分布式环境中,一致性是指数据在多个副本之间是否能够保持一致的特性,等同于所有节点访问同一份最新的数据副本。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。

  • 可用性:每次请求都能获取到正确的响应,但是不保证获取的数据为最新数据。

  • 分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。

一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。

在这三个基本需求中,最多只能同时满足其中的两项,P 是必须的,因此只能在 CP 和 AP 中选择。

Docker compose 部署 zookeeper 集群_第1张图片

BASE理论

BASE 是 Basically Available(基本可用)、Soft-state(软状态) 和 Eventually Consistent(最终一致性) 三个短语的缩写。

  • 基本可用:在分布式系统出现故障,允许损失部分可用性(服务降级、页面降级)。

  • 软状态:允许分布式系统出现中间状态。而且中间状态不影响系统的可用性。这里的中间状态是指不同的 data replication(数据备份节点)之间的数据更新可以出现延时的最终一致性。

  • 最终一致性:data replications 经过一段时间达到一致性。

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

概述

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

ZooKeeper 的架构通过冗余服务实现高可用性。

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

一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

zookeeper 基于CAP理论,保证的是 CP。

特点

  • Zookeeper是由一个领导者(Leader),多个跟随者(Follower)组成的集群。

  • 集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。

  • 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。

  • 更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。

  • 数据更新原子性,一次数据更新要么成功,要么失败。

  • 实时性,在一定时间范围内,Client能读到最新数据。

数据结构

zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统:

Docker compose 部署 zookeeper 集群_第2张图片

上图中的树形结构中的每个节点(目录项),比如NameService 都被称作为 znode(目录节点)。znode通过路径引用,路径必须是绝对的,因此他们必须由斜杠字符来开头。除此以外,它们必须是唯一的,也就是说每一个路径只有一个表示,因此这些路径不能改变。在zookeeper中,路径由Unicode字符串组成,并且有一些限制。字符串"/ZooKeeper"用以保存管理信息,比如关键配额信息。

znode同时具有文件和目录两种特点。既像文件一样维护着数据、元信息、访问控制列表、时间戳等数据结构,又可以像目录一样

你可能感兴趣的:(中间件,docker,zookeeper,容器)