![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
zookeeper
fish_cool
擅长java并发设计与开发(包括多核开发)、java性能调优、java分布式架构与设计、工作流引擎算法、python;对erlang、ada、搜索引擎有浓厚的兴趣,曾从事过数据分析与挖掘(SAS)和hadoop平台相关(hive、sqoop、R、zookeeper、mahout、Hbase等)方面的研究与开发,现阶段负责公司的整个大数据平台的搭建(包括海量实时OLAP查询、离线计算平台、实时计算平台),并朝着各平台封装成产品的方向前进
展开
-
Zookeeper全解析——Client端
Zookeeper的Client直接与用户打交道,是我们使用Zookeeper的interface。了解ZK Client的结构和工作原理有利于我们合理的使用ZK,并能在使用中更早的发现问题。本文将在研究源码的技术上讲述ZK Client的工作原理及内部工作机制。在看完ZK Client的大致架构以后我希望能有一种简单的方式描述ZK Client的基本结构,想来想去我觉得还是图片比较能反映情况转载 2011-07-22 16:39:26 · 10930 阅读 · 4 评论 -
关于如何用Zookeeper实现分布式锁机制
之前对zk的应用场景比较好奇,后来发现hive当中已经有使用zk来实现分布式锁的实现。为了更好的理解分布式锁的实现,所以对hive这块的代码进行阅读,提升了对技术实现的理解。hive使用的是ZooKeeperHiveLockManager类来进行处理的。hive锁目前有两个类型,代码如下:public enum HiveLockMode{ SHARED, EXCL原创 2013-05-13 10:37:29 · 4477 阅读 · 0 评论 -
Katta如何使用Zookeeper-数据更新3
数据更新过程中,SyncRequestProcessor的处理对性能非常重要。如下图:注意:Flush方法会发出两个操作:database的commit和NextRP的process,而commit操作涉及到txnLog的flush,这是一个写文件的调用,会消耗大量时间,尤其是磁盘IO比较紧张的时候。所以,Zookeeper建议要有一个本地的磁盘,操作日志和快照要放在本地磁盘上。转载 2011-09-22 13:39:11 · 795 阅读 · 0 评论 -
Katta如何使用Zookeeper-Server节点的通讯
Server节点通过Leader选举过程区分出Leader和Follower后,ZkServer集群准备就绪,开始为Client提供服务:1. Leader,Follower和Observer三者本地都有集群数据的缓存,Client的读数据请求,直接由本地缓存提供;2. 集群数据的更新同步,由Leader负责发起,时机是任何一个Client发起更新数据的请求后;Leader和Follo转载 2011-09-22 13:37:03 · 1415 阅读 · 0 评论 -
Katta如何使用Zookeeper-Client连接
Katta使用ZkClient和ZKServer通讯,调用顺序一般是:Katta->ZKClient->ClientCnxn->NIOServerCnxn->ZKServer,具体结构如下:1. 连接: a)ZkClient、ClientCnxn和Katta处于同一个实例中,和ZkServer通过Socket通讯; b)ClientCnxn发起socket连接后,ZkSer转载 2011-09-22 13:36:09 · 1206 阅读 · 0 评论 -
Katta如何使用Zookeeper-ZkServer的节点
ZkServer的节点分为两大类:Server,Observer,其中Server又分为Leader,FollowerServer节点组成ZkServer的群集系统,数量一般是2*n+1,其中n是最大失效节点数。Server节点在启动的时候,通过一个选举过程,选择一个Leader,来作为领导者,即仲裁或者决策的节点,主要用于在更新数据时,发起最终的更新同步过程。其它节点作为Follower,即转载 2011-09-22 13:35:09 · 1032 阅读 · 0 评论 -
Zookeeper全解析——Paxos作为灵魂
原计划在介绍完ZK Client之后就着手ZK Server的介绍,但是发现ZK Server所包含的内容实在太多,并不是简简单单一篇Blog就能搞定的。于是决定从基础搞起比较好。那么ZK Server最基础的东西是什么呢?我想应该是Paxos了。所以本文会介绍Paxos以及它在ZK Server中对应的实现。先说Paxos,它是一个基于消息传递的一致性算法,Leslie Lamport在转载 2011-07-22 17:03:51 · 2882 阅读 · 0 评论 -
Katta如何使用Zookeeper-数据更新2
当Client连接到Follower,并发出数据更新的请求时:1. Follower的CommitProcessor将阻塞Request,直到Leader发出Commit通知2. Follower把数据更新的request转发给Leader,Leader然后发起数据更新同步的过程具体如下图:注意:Leader和Follower判断哪个最早接收到的数据更新请求,是根据Requ转载 2011-09-22 13:38:40 · 804 阅读 · 0 评论 -
Katta如何使用Zookeeper-数据更新
当Client发起更新数据的请求后,ZkServer会随后发起多个处理过程:1. Propose过程,发起会签请求,即试图获取各个Follower的同意,以便进行数据更新2. ACK过程,即Follower发出同意响应3. Commit过程,Leader向Follower发出数据更新的通知具体如下图:值得注意的地方:1. ProposalRequestProcessor转载 2011-09-22 13:37:40 · 1375 阅读 · 0 评论 -
ZooKeeper leader election 分析和实现
Paxos是分布式应用中解决同步问题的核心。作为应用研发工程师,我们总是倾向于使用一种相对简洁的方式实现复杂的算法。ZooKeeper leader election实现就是一个非常好的参考。其实现比标准Paxos算法简单,基本过程是:1 2转载 2011-09-20 17:26:16 · 2226 阅读 · 0 评论 -
ZooKeeper Server/Client Session 设计及代码分析
学习开源项目,首要应该是了解其机制。拿来主义固然可以加速开发,但是也会带来潜在的风险。如果你想把自己的应用做的好,你需要保证每一次汲取的营养都是精华,而尽量不要引入糟粕。最近有很多分布式的研发,所以了解了一下ZooKeeper,我们来看看有什么有趣的东西。ZooKeeper用了不少代码维护ZK client和ZK server之间的session。基本架构是一个NIO server,后转载 2011-09-20 17:24:12 · 2589 阅读 · 0 评论 -
zookeeper使用体验
随着HBase的使用,我们也接触了如何在实际工作如何运用zookeeper。目前总结下,常规经验:1、首先节点最少是3个。低于3个将不能正常服务(但是每个节点还是能启动的)2、当增加节点时,直接部署即可,原有节点增加新增节点的信息3、当删除的节点是leader类型时,集群会自动选举一个新的节点作为leader4、当删除的节点是follower类型时,集群只要不低于3个就没什么影原创 2013-05-07 11:17:05 · 1399 阅读 · 0 评论