zookeeper集群

zookeeper扫盲

我怕爱的太早我们不能终老 提交于 2019-12-06 06:57:29
一、zookeeper概述 a、zookeeper是一个开源的分布式的项目,为分布式业务提供协调服务的apache顶级项目 那什么是分布式的呢,通俗的说就是多个机器可以同时去处理一件事情 b、zookeeper相当于大数据生态体系的润滑剂,保存各个组件的配置文件;zoo是什么意思,动物园的意思,而大数据各个组件的标志都是一些动物,所以zookeeper又被称为动物园的管理员,可以管理大数据生态体系的很多组件 c、zookeeper的本质就是:文件系统+通知机制 二、工作机制 a、zk的设计是基于观察者模式设计的分布式服务管理框架,他负责存储和管理大家都关心的数据,然后接受观察者注册 b、一旦这些数据发生变化,zk就将负责通知已经在zk上注册的那些观察者,观察者会通过会根据相应的变化做出相应的行为 什么是观察者模式,通俗的讲就是一个人在干活,另外一个人在监视,就比如我们现在在这里培训,摄像头就是一个观察者 工作机制如何 三、zoopeeper特点 四、数据结构 zookeeper的数据模型结构和unix的文件系统类似,整体上可以看做是一个树,每个节点称为一个ZNode,每一个ZNode默认只只能够存储1MB的数据,每个ZNode都可以通过路径唯一标示 五、应用场景 zk可以提供如下服务 a、统一命名服务 b、统一配置管理 c、统一集群管理 d、服务器节点动态上下线 来源: https

ZooKeeper典型应用场景一览

隐身守侯 提交于 2019-12-06 03:03:55
原文链接: https://www.cnblogs.com/tommyli/p/3766189.html ZooKeeper 典型应用场景一览 数据发布与订阅(配置中心) 发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。 应用中用到的一些配置信息放到ZK上进行集中管理。这类场景通常是这样:应用在启动的时候会主动来获取一次配置,同时,在节点上注册一个Watcher,这样一来,以后每次配置有更新的时候,都会实时通知到订阅的客户端,从来达到获取最新配置信息的目的。 分布式搜索服务中,索引的元信息和服务器集群机器的节点状态存放在ZK的一些指定节点,供各个客户端订阅使用。 分布式日志收集系统。这个系统的核心工作是收集分布在不同机器的日志。收集器通常是按照应用来分配收集任务单元,因此需要在ZK上创建一个以应用名作为path的节点P,并将这个应用的所有机器ip,以子节点的形式注册到节点P上,这样一来就能够实现机器变动的时候,能够实时通知到收集器调整任务分配。 系统中有些信息需要动态获取,并且还会存在人工手动去修改这个信息的发问。通常是暴露出接口,例如JMX接口,来获取一些运行时的信息。引入ZK之后,就不用自己实现一套方案了

kafka实战,原来真的不难

我的梦境 提交于 2019-12-06 02:45:32
1. kafka介绍 1.1. 主要功能 根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能:   1:It lets you publish and subscribe to streams of records.发布和订阅消息流,这个功能类似于消息队列,这也是kafka归类为消息队列框架的原因   2:It lets you store streams of records in a fault-tolerant way.以容错的方式记录消息流,kafka以文件的方式来存储消息流   3:It lets you process streams of records as they occur.可以再消息发布的时候进行处理 1.2. 使用场景 1:Building real-time streaming data pipelines that reliably get data between systems or applications.在系统或应用程序之间构建可靠的用于传输实时数据的管道,消息队列功能 2:Building real-time streaming applications that transform or react to the streams of data。构建实时的流数据处理程序来变换或处理数据流,数据处理功能 1.3

Zookeeper实战分布锁

人盡茶涼 提交于 2019-12-06 01:53:42
一, 分布式 锁实现 的 技术 基于 数据实现分布式锁 性能较差,容易出现单点故障 锁没有失效事件,容易死锁。 非阻塞式 不可重入 基于 缓存 实现 分布式锁 锁没有失效事件,容易死锁 非阻塞式 不可重入 基于 Zookeeper 实现分布式锁 实现相对简单 可靠性高 性能较好 二,Zookeeper应用 场景 数据 发布订阅 负载均衡 命名 服务 分布式 协调 集群 管理 配置管理 分布式 队列 分布式 锁 三,Zookeeper实战分布式锁 /** * 获取锁和释放锁真正实现的类 */ public class ZkLockImpl extends ZookeeperLock{ private CountDownLatch countDownLatch = null; @Override public boolean tryLock() { try { //创建临时节点 zkClient.createEphemeral("/zkTemp"); return true; }catch (Exception ex){ return false; } } @Override public void waitLock() { //监听节点是否是删除了 IZkDataListener iZkDataListener=new IZkDataListener() { @Override

监听器

假装没事ソ 提交于 2019-12-05 21:55:20
可以设置观察的操作:exists,getChildren,getData 可以触发观察的操作:create,delete,setData zookeeper观察机制; 服务端只存储事件的信息,客户端存储事件的信息和Watcher的执行逻辑.ZooKeeper客户端是线程安全的每一个应用只需要实例化一个ZooKeeper客户端即可,同一个ZooKeeper客户端实例可以在不同的线程中使用。ZooKeeper客户端会将这个Watcher对应Path路径存储在ZKWatchManager中,同时通知ZooKeeper服务器记录该Client对应的Session中的Path下注册的事件类型。当ZooKeeper服务器发生了指定的事件后,ZooKeeper服务器将通知ZooKeeper客户端哪个节点下发生事件类型,ZooKeeper客户端再从ZKWatchManager中找到相应Path,取出相应watcher引用执行其回调函数process。 ZooKeeper Watcher 机制 为了确保集群能够正常运行,ZooKeeper 可以被用来监视集群状态,这样就可以提供集群高可用性。使用 ZooKeeper 的瞬时(ephemeral)节点概念可以设计一个集群机器状态检测机制: 1. 每一个运行了 ZooKeeper 客户端的生产环境机器都是一个终端进程,我们可以在它们连接到

记录zookeeper搭建遇到的坑

南楼画角 提交于 2019-12-05 20:45:13
我在学习kafka的时候,需要先搭建zookeeper集群,所以我就在云服务器上开始搭建zookeeper集群了,但是不出意料,就是失败,因为自己有其他事情,所以一直是想起来就弄以下,今天忽然看到一片文章介绍zookeeper监听端口,通信端口,选举端口的部分文章,想起来自己问题,然后改了下,虽然自己犯的问题很弱智,但是还是记录以下,希望可以帮助其他人。 以下是当时的思路和遇到的问题截图: 我在搭建zookeeper集群的时候,无论怎么重启,更改配置文件,都无法查看集群的状态,首先是第一个zookeeper日志信息 第二个zookeeper日志信息 第三个zookeeper日志信息 。 大致情况是第一个和第二个报一样的错误,都是eoefexception,following the leader的时候报异常。 而第三个zookeeper报的缺失bindexception:address already in use bind failed! 2183 端口提示被占用,但是这个端口我是分配给第三个zookeeper的,也就是说站在我的角度看,第三个zookeeper自己被自己占用了端口。 先kill到2183端口试试。。结果是第三个zookeeper停止了,也就是说这是错误的提示,或者说是误导的提示,看下前两个zookeeper的日志信息。 第一个: 第二个 第二个就厉害了

Zookeeper

情到浓时终转凉″ 提交于 2019-12-05 20:29:04
1. 大数据是什么?   1.1 大数据就是4V的特征     Volume (大量) , Velocity (高速) , Variety (多样) , Value (价值) , 即数据体量巨大, 数据类型繁多, 价值密度低, 处理速度快. 2. Apache Zookeeper   2 .1 Zookeeper概述     Zookeeper是一个 分布式协调服务 的开源框架. 主要用来解决分布式集群中应用系统的 一致性 问题.     Zookeeper本质上是一个 分布式的小文件存储系统 . 提供基于类似于文件系统的目录树方式的数据存储, 并且可以对树种的节点进行有效管理. 从而用来维护和监控你存储的数据的状态变化. 通过监控这些数据状态的变化, 从而可以达到基于数据的集群管理.   2 .2 Zookeeper特性      全局数据一致 : 集群中每个服务器保存一份相同的数据副本, Client无论连接到哪个服务器, 展示的数据都是一致的, 这是最重要的特性.      可靠性 : 如果消息被其中一台服务器接受, 那么将被所有的服务器接受.      顺序性 : 包括全局有序和偏序两种: 全局有序是指如果一台服务器上消息a在消息b前发布, 则在所有Server上消息a都将在消息b前被发布. 偏序是指如果一个消息b在消息a后被同一个发送者发布, 消息a必将排在消息b前面.

Zookeeper

China☆狼群 提交于 2019-12-05 18:04:16
概述 Zookeeper字面上理解就是动物管理员,是大数据框架Hadoop生态圈中的一个服务中间件,Hadoop生态圈中很多开源项目使用动物命名,那么需要一个管理员来管理这些“动物”。他负责分布式应用程序协调的工作。 Hadoop框架 Zookeeper主要提供以下四点功能: 统一命名服务、配置管理、集群管理、共享锁和队列管理 ,用于高效的管理集群的运行。 Zookeeper通过心跳机制可以检测挂掉的机器并将挂掉机器的ip和服务对应关系从列表中删除。 Zookeeper 部署有三种方式,单机模式、集群模式、伪集群模式,以下采用Docker 的方式部署 注意: 集群为大于等于3个奇数,如 3、5、7,不宜太多,集群机器多了选举和数据同步耗时长,不稳定。 zk安装 docker-compose-yml version: '3.1' services: zoo1: image: zookeeper restart: always hostname: zoo1 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 配置说明 2181:客户端连接 Zookeeper 集群使用的监听端口号 3888:选举 leader 使用 2888:集群内机器通讯使用(Leader 和

Zookeeper Watcher和选举机制

*爱你&永不变心* 提交于 2019-12-05 17:31:44
Watcher 在ZooKeeper中,接口类Watcher用于表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:process(WatchedEvent event)。 7.1什么是Watcher接口 同一个事件类型在不同的通知状态中代表的含义有所不同,表7-3列举了常见的通知状态和事件类型。 表7-3 Watcher通知状态与事件类型一览 KeeperState EventType 触发条件 说明 None (-1) 客户端与服务端成功建立连接 SyncConnected (0) NodeCreated (1) Watcher监听的对应数据节点被创建 NodeDeleted (2) Watcher监听的对应数据节点被删除 此时客户端和服务器处于连接状态 NodeDataChanged (3) Watcher监听的对应数据节点的数据内容发生变更 NodeChildChanged (4) Wather监听的对应数据节点的子节点列表发生变更 Disconnected (0) None (-1) 客户端与ZooKeeper服务器断开连接 此时客户端和服务器处于断开连接状态 Expired (-112) Node (-1) 会话超时 此时客户端会话失效

Watcher监听和选举机制

試著忘記壹切 提交于 2019-12-05 17:30:38
在 ZooKeeper中,接口类Watcher用于表示一个标准的事件处理器,其定义了事件通知相关的逻辑,包含KeeperState和EventType两个枚举类,分别代表了通知状态和事件类型,同时定义了事件的回调方法:process(WatchedEvent event)。 一,什么 是 Watcher 接口 同一个事件类型在不同的通知状态中代表的含义有所不同,表 7-3列举了常见的通知状态和事件类型。 表 7-3 Watcher通知状态与事件类型一览 KeeperState EventType 触发条件 说明 None (-1) 客户端与服务端成功建立连接 SyncConnected (0) NodeCreated (1) Watcher监听的对应数据节点被创建 NodeDeleted (2) Watcher监听的对应数据节点被删除 此时客户端和服务器处于连接状态 NodeDataChanged (3) Watcher监听的对应数据节点的数据内容发生变更 NodeChildChanged (4) Wather监听的对应数据节点的子节点列表发生变更 Disconnected (0) None (-1) 客户端与ZooKeeper服务器断开连接 此时客户端和服务器处于断开连接状态 Expired (-112) Node (-1) 会话超时 此时客户端会话失效