zk系列-zookeeper的使用
zk支持java/c访问,java常用的有apache-zkclient、社区版的i0tec-zkclient、github.adyliu,apache-zkclient是zk自身提供的接口,i0tec/adyliu都是对apache版的封装丰富,提供了便捷的事件监听和数据序列化。C版的使用见"zk系列-c++下zookeeper使用实例"。具体使用不做介绍了。
一般zkclient要支持如下功能:
- 节点-创建、删除、是否存在、永久节点、临时节点、序列节点
- 事件-子节点变化、节点变化、状态变化、数据变化事件的注册和取消。也就是收到服务端事件通知时,根据事件类型调用相关函数。
更进一步,可以支持:
- 维护对不同zkserver的zkclient,维护各自的连接数,当一个zkclient的连接数为0时,关闭其连接
- 如果维护全公司的zk,可以封装一些默认的配置,让zk对使用者完全透明
- 支持存储数据的序列化和反序列化:如java中的Properties,来管理配置(properties或xml格式);或者其他格式,只要自己知道二进制流的格式就好
- 分布式锁-不同进程或服务间互斥的实现,主要使用临时序列节点
- 向zkserver在同一个父目录(如/lock)下创建临时序列子节点(/lock/ip_),并监听/lock子节点变化
- /lock下会有/ipa_1,/ipb_2,/ipc_3类似递增的临时节点
- ipa获得/lock下所有子节点,当前最小节点是自己创建的时候,表示该服务获得锁
- ipa完成互斥操作后,删除/lock/ipa_1,表示释放锁
- zkserver会通知其他client变化,其他client重复以上判断和操作
- 统一配置:服务经常有自己的配置文件,但服务又是多份部署,为了保证配置的一致性及修改方便,可以用zkserver维护配置文件。各服务都监听配置节点,当节点数据变化时,各自获取新数据(即配置)
- 服务管理:后台服务都向一个节点下创建子节点,保存自己的Ip和端口;客户端获取该节点下的所有子节点,随机选一个ip去调用。也可以做智能一些,每个ip节点还能记录下最近一段时间使用该ip的client数,这样client选用使用数最少的ip,达到更好的负载均衡。
就说这么多吧,具体的代码实现也都很简单,在已有zkclient的基础上进行一些简单封装就好。
zk系列-zookeeper的使用的更多相关文章
- zk系列-zookeeper概述
接触zk是2年前了,最近工作又比较依赖于zk,所以准备起个系列文章,系统的总结下. zookeeper是一个分布式的用于协调的服务,起源于Hadoop中的一个组件.分布式系统可以用zookeeper实 ...
- zk系列三:zookeeper实战之分布式锁实现
一.分布式锁的通用实现思路 分布式锁的概念以及常规解决方案可以参考之前的博客:聊聊分布式锁的解决方案:今天我们先分析下分布式锁的实现思路: 首先,需要保证唯一性,即某一时点只能有一个线程访问某一资源: ...
- zk系列二:zookeeper实战之分布式统一配置获取
前面介绍了zk的一些基础知识,这篇文章主要介绍下如何在java环境下获取zk的配置信息:主要基于zk的监听器以及回调函数通过响应式编程的思想将核心代码糅合成一个工具类,几乎做到了拿来即用: 在分布式集 ...
- zk系列一:zookeeper基础介绍
聊完kafka必不可少的需要再聊一聊zk了,下面开始 一.ZK是什么 ZooKeeper是分布式应用程序的高性能协调服务.它可以实现分布式的选主.统一配置管理,命名,分布式节点同步,分布式锁等分布式常 ...
- 面试必问:分布式锁实现之zk(Zookeeper)
点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...
- 容器化系列 - Zookeeper启动和配置 on Docker
本文简要说明了如何在Docker容器中启动和配置Zookeeper. 1 准备工作 1.1 下载zookeeper镜像 $ docker pull zookeeper:3.4 1.2 单点模式 安装D ...
- Hadoop系列-zookeeper基础
目前是刚刚初学完zookeeper,这篇文章主要是简单的对一些基本的概念进行梳理强化. zookeeper基础概念的理解 有时候计算机领域很多名词都是从一长串英文提取首字母缩写而来,但很不幸zooke ...
- ZK(ZooKeeper)分布式锁实现
点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你. 本文中案例都会在上传到git上,请放心浏览 git地址:https://github.com/muxiaonong/Zo ...
- (转)淘淘商城系列——zookeeper单机版安装
http://blog.csdn.net/yerenyuan_pku/article/details/72717744 这篇文章,我单独来说一下zookeeper如何安装.在实际开发中,zookeep ...
随机推荐
- 用Backbone.js教程系列的链接
整理了一下用Backbone.js系列教程链接. Backbone.js入门教程 用Backbone.js创建一个联系人管理系统(一) 用Backbone.js创建一个联系人管理系统(二) 用Back ...
- css3之背景新属性
background属性 属性 描述 background-origin 背景图片的定位区域 background-size 背景图片尺寸 background-image:url(),url();允 ...
- KMP详解
原文: http://blog.csdn.net/v_july_v/article/details/7041827 从头到尾彻底理解KMP 1. 引言 本KMP原文最初写于2年多前的2011年12月, ...
- Free git private repo
今天在网上搜索了一下,发现除了github之外还有很多免费的git server,列表可以见 https://git.wiki.kernel.org/index.php/GitHosting 对比了一 ...
- iis下设置php最大执行时间
php在执行中常见错误: The FastCGI process exceeded configured request timeout: FastCGI process exceeded confi ...
- 电子科技大学第八届ACM趣味程序设计竞赛第四场(正式赛)题解
A. Picking&Dancing 有一列n个石子,两人交替取石子,每次只能取连续的两个,取走后,剩下的石子仍然排成1列.问最后剩下的石子数量是奇数还是偶数. 读懂题意就没什么好说的. #i ...
- ODBC,OLEDB,ADO,ADO.net,JDBC 理解
一 .ODBC 开放式数据库互联(Open Database connectivity), 93年微软推出的实现应用程序 和关系数据库直接 通讯的借口标准.只能用于关系数据库 . 注意事项 : 必须先 ...
- Good Bye ACM
——记于2015.11.9 合肥 合肥区域赛结束了,长舒一口气,这次终于能成功退役了,以后可以不被学弟们吊打了Y(^_^)Y. 这次的比赛让我不禁联想起去年的上海现场赛,出题者防AK防得太过分了,又是 ...
- 简单修改cramfs
首先进入root用户,确保LINUX系统下装有cramfsprogs,没有的话get-apt install cramfsprogs, 找到.cramfs文件,输入命令cramfsck -x song ...
- 【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应
转自http://blog.csdn.net/yanfeiouc2009/archive/2010/06/07/5653360.aspx 手头上有个东西要用到单文档,由于想省事,直接用VS2010做了 ...