zookeeper原理

zookeeper系列问题总结

余生长醉 提交于 2020-04-08 12:21:37
这段时间来,也在和公司里的一些同学交流使用zk的心得,整理了一些常见的zookeeper问题。这个页面的目标是解答一些zk常见的使用问题,同时也让大家明确zk不能干什么。页面会一直更新。 1. 客户端对ServerList的轮询机制是什么 随机,客户端在初始化( new ZooKeeper(String connectString, int sessionTimeout, Watcher watcher) )的过程中,将所有Server保存在一个List中,然后随机打散,形成一个环。之后从0号位开始一个一个使用。 两个注意点:1. Server地址能够重复配置,这样能够弥补客户端无法设置Server权重的缺陷,但是也会加大风险。(比如: 192.168.1.1:2181,192.168.1.1:2181,192.168.1.2:2181). 2. 如果客户端在进行Server切换过程中耗时过长,那么将会收到SESSION_EXPIRED. 这也是上面第1点中的加大风险之处。更多关于客户端地址列表相关的,请查看文章《 ZooKeeper客户端地址列表的随机原理 》 2 .客户端如何正确处理CONNECTIONLOSS(连接断开) 和 SESSIONEXPIRED(Session 过期)两类连接异常 在ZooKeeper中,服务器和客户端之间维持的是一个长连接,在 SESSION

面试心得:不会这些,劝你简历不要写 “熟悉” zookeeper

那年仲夏 提交于 2020-04-05 23:00:43
唠唠叨叨 本文主要分享一下 zookeeper 的一些基本概念,在正式进入正题前,和大家聊一聊刚入行时我的面试经验,可以说是耿直的有些可爱。 面试官 :用过 zookeeper 吗? 我 :用过啊,给 dubbo 提供服务的注册与发现嘛 面试官 :知道 zookeeper 是什么吗? 我 :知道啊,注册中心嘛 面试官 :那你们项目中都是怎么用 zookeeper 的? 我 :就在 springboot 的 application.properties 配置文件里添加一个 zookeeper 服务地址就行了。。。 . 上边的对话好像也没什么毛病,但似乎又感觉哪里有点不太对,结果就是每次我如此回答面试都被pass。 为什么会被问zookeeper?因为我的简历项目上写着熟练使用zookeeper,可面试官理解的 “熟练” 使用可不是会配置,工程启动不报错那么简单。所以还是有必要全面了解一下zookeeper的相关知识。 一、zookeeper初识? Zookeeper 它作为 Hadoop 项目中的一个开源子项目,是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调服务。 1、zookeeper数据模型 zookeeper 维护了一个类似文件系统的数据结构,每个子目录(/微信、/微信/公众号)都被称作为 znode

构建高可用ZooKeeper集群

匆匆过客 提交于 2020-04-03 10:21:27
构建高可用ZooKeeper集群 2017/01/23 | 分类: 技术架构 | 0 条评论 | 标签: ZOOKEEPER 分享到: 9 原文出处: cyfonly ZooKeeper 是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。由于 ZooKeeper 便捷的使用方式、卓越的性能和良好的稳定性,被广泛地应用于诸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分布式系统中。 本文的目标读者是对 ZooKeeper 有一定了解的技术人员,将从 ZooKeeper 运行模式、集群组成、容灾和水平扩容四方面逐步深入,最终构建出高可用的 ZooKeeper 集群。 一、运行模式 Zookeeper 有三种运行模式:单机模式、伪集群模式和集群模式。 1.1 单机模式 这种模式一般适用于开发测试环境,一方面我们没有那么多机器资源,另外就是平时的开发调试并不需要极好的稳定性。 在 Linux 环境下运行单机模式需要执行以下步骤: 1. 准备 Java 运行环境 安装 Java 1.6 或更高版本的 JDK,并配置好 Java 相关的环境变量 $JAVA_HOME 。 2. 下载 ZooKeeper 安装包 下载地址: http://zookeeper

答应我,不会这些概念,简历不要写 “熟悉” zookeeper

扶醉桌前 提交于 2020-03-31 21:34:02
整理了一些Java方面的架构、面试资料(微服务、集群、分布式、中间件等),有需要的小伙伴可以关注公众号【程序员内点事】,无套路自行领取 一口气说出 9种 分布式ID生成方式,面试官有点懵了 面试总被问分库分表怎么办?你可以这样怼他 一口气说出 6种 @Transactional 注解失效场景 基于 Java 实现的人脸识别功能(附源码) 9种分布式ID生成之美团(Leaf)实战 唠唠叨叨 本文主要分享一下 zookeeper 的一些基本概念,在正式进入正题前,和大家聊一聊刚入行时我的面试经验,可以说是耿直的有些可爱。 面试官 :用过 zookeeper 吗? 我 :用过啊,给 dubbo 提供服务的注册与发现嘛 面试官 :知道 zookeeper 是什么吗? 我 :知道啊,注册中心嘛 面试官 :那你们项目中都是怎么用 zookeeper 的? 我 :就在 springboot 的 application.properties 配置文件里添加一个 zookeeper 服务地址就行了。。。 . 上边的对话好像也没什么毛病,但似乎又感觉哪里有点不太对,结果就是每次我如此回答面试都被pass。 为什么会被问zookeeper?因为我的简历项目上写着熟练使用zookeeper,可面试官理解的 “熟练” 使用可不是会配置,工程启动不报错那么简单

【分布式锁】06-Zookeeper实现分布式锁:可重入锁源码分析

心已入冬 提交于 2020-03-30 07:41:34
前言 前面已经讲解了Redis的客户端Redission是怎么实现分布式锁的,大多都深入到源码级别。 在分布式系统中,常见的分布式锁实现方案还有Zookeeper,接下来会深入研究Zookeeper是如何来实现分布式锁的。 Zookeeper初识 文件系统 Zookeeper维护一个类似文件系统的数据结构 image.png 每个子目录项如NameService都被称为znoed,和文件系统一样,我们能够自由的增加、删除znode,在znode下增加、删除子znode,唯一不同的在于znode是可以存储数据的。 有4种类型的znode PERSISTENT--持久化目录节点客户端与zookeeper断开连接后,该节点依旧存在 PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号 EPHEMERAL-临时目录节点客户端与zookeeper断开连接后,该节点被删除 EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号 通知机制 客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)等,zookeeper会通知客户端。 分布式锁

《从Paxos到zookeeper》第6章 Zookeeper的典型应用场景(下)

 ̄綄美尐妖づ 提交于 2020-03-27 11:06:53
目录 6.2 Zookeeper在大型分布式系统中的应用 6.2.1 Hadoop YARN介绍 如何解决ResourceManager单点问题,实现高可用? 6.2.3 Kafka 术语介绍 问题 Kafka与Zookeeper Broker注册管理 Topic注册管理 生产者负载均衡 消费者负载均衡 消费分区与消费者关系 消息消费进度Offset记录 消费者注册 负载均衡 1)Range策略 2)RoundRobin策略 资料 6.3 Zookeeper在阿里巴巴的实践与应用 6.3.2 案例二 RPC服务框架:Dubbo 服务提供者 服务消费者 监控中心 6.3.3 案例三 基于MySQL Binlog的增量订阅和消费组件:Canal Canal基本工作原理 Canal Server主备切换设计 Canal Client的HA设计 6.3.4 案例四 分布式数据库同步系统:Otter 分布式SEDA模型 数据模型 任务处理流程(多阶段任务协调处理) 6.2 Zookeeper在大型分布式系统中的应用 6.2.1 Hadoop YARN介绍 YARN是Hadoop为了提高计算节点的扩展性,同时为了支持多计算模型和提供资源的细粒度调度而引入的全新一代分布式协调框架。 核心为ResourceManager,资源管理中心,负责集群中所有资源的统一管理和分配。 (可理解为YARN的大脑

Dubbo(二):zookeeper 注册中心

北城以北 提交于 2020-03-25 06:37:24
zookeeper 注册中心 Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 [1]。 流程说明: 服务提供者启动时: 向 /dubbo/com.foo.BarService/providers 目录下写入自己的 URL 地址 服务消费者启动时: 订阅 /dubbo/com.foo.BarService/providers 目录下的提供者 URL 地址。并向 /dubbo/com.foo.BarService/consumers 目录下写入自己的 URL 地址 监控中心启动时: 订阅 /dubbo/com.foo.BarService 目录下的所有提供者和消费者 URL 地址。 支持以下功能: 当提供者出现断电等异常停机时,注册中心能自动删除提供者信息 当注册中心重启时,能自动恢复注册数据,以及订阅请求 当会话过期时,能自动恢复注册数据,以及订阅请求 当设置 <dubbo:registry check="false" /> 时,记录失败注册和订阅请求,后台定时重试 可通过 <dubbo:registry username="admin" password="1234" /> 设置 zookeeper 登录信息 可通过 <dubbo:registry

codis原理及部署_01

时间秒杀一切 提交于 2020-03-18 01:56:57
一.codis介绍 Codis是一个分布式Redis解决方案,对于上层的应用来说,连接到Codis Proxy和连接原生的RedisServer没有明显的区别,有部分命令不支持 Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的Redis服务. Codis由四部分组成 Codis-proxy:实现redis协议,由于本身是无状态的,因此可以部署很多个节点 Codis-config :是codis的管理工具,包括添加/删除redis节点添加删除proxy节点,发起数据迁移等操作,自带httpserver,支持管理后台方式管理配置 Codis-server :是codis维护的redis分支,基于2.8.21分支,加入了slot的支持和原子的数据迁移指令; codis-proxy和codis-config只能和这个版本的redis交互才能正常运行 Zookeeper,用于codis集群元数据的存储,维护codis集群节点 二.Codis优缺点 优点 对客户端透明,与codis交互方式和redis本身交互一样 支持在线数据迁移,迁移过程对客户端透明有简单的管理和监控界面 支持高可用,无论是redis数据存储还是代理节点 自动进行数据的均衡分配 最大支持1024个redis实例,存储容量海量

Zookeeper实现的分布式锁

半腔热情 提交于 2020-03-08 06:39:31
Zookeeper实现的分布式锁 zookeeper是一个分布式协调中间件,既可以用来做分布式的id还可以用来做配置中心、还有我们接下来要说的分布式锁。 在说分布式锁之前要先介绍一下zookeeper,它是树形结构,每个节点都可以存储值和创建子节点。而zookeeper的节点一共分为四种分别是临时节点,持久化节点,临时有序节点,持久化有序节点。 Zookeeper节点类型 临时节点 顾名思义,临时的节点,有个需要注意的是当客户端与服务端的会话关闭的时候,临时节点就会被自动删除掉 持久化节点 这个跟临时节点的区别就是,就算会话关闭,节点也不会被关闭。 临时有序节点 这个跟临时节点唯一的区别就是,创建的节点是有序的例如上一个节点创建为 /00000000001 ,那下一个节点就是 /00000000002 ,依次递增 持久化有序节点 这个跟临时有序节点的区别也是会话就算关闭,创建的节点也不会被删除掉 分布式锁的实现原理 多个节点需要共享一个数据或文件,节点之间同时竞争获取执行权限,当其中某个节点获取到执行权限以后,另一个就必须等待占有执行权限的执行完成并将执行权限释放出来,只要能满足条件互斥就能实现分布式锁,比如数据库的锁表,唯一索引,Redis的 setnx 函数,还有我们刚才讲的zookeeper的临时有序节点的。 临时节点如何创建分布式锁 我们先看个图,然后根据下面这个图来讲

ZooKeeper学习第八期——ZooKeeper伸缩性

久未见 提交于 2020-03-06 16:50:04
ZooKeeper学习第一期---Zookeeper简单介绍 ZooKeeper学习第二期--ZooKeeper安装配置 ZooKeeper学习第三期---Zookeeper命令操作 ZooKeeper学习第四期---构建ZooKeeper应用 ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据 ZooKeeper学习第六期---ZooKeeper机制架构 ZooKeeper学习第七期--ZooKeeper一致性原理 ZooKeeper学习第八期——ZooKeeper伸缩性 一、Zookeeper的搭建方式 Zookeeper安装方式有三种, 单机模式 和 集群模式 以及 伪集群模式 。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。 为什么一定要超过半数呢 ?这跟Zookeeper的复制策略有关:zookeeper确保对znode 树的每一个修改都会被复制到集合体中超过半数的机器上。 1.1 Zookeeper的单机模式搭建 下载