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 ...
随机推荐
- (转)__cdecl __fastcall与 __stdcall
原帖 http://blog.sina.com.cn/s/blog_6b7c56870100l8rf.html __cdecl __fastcall与 __stdcall 调用约定: __c ...
- Linux下chkconfig命令详解
chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息.谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接. 使用语法:chkconfig [--ad ...
- OD使用教程10
首先载入程序,然后Ctrl+N打开输入输出表 然后直接输入要找到函数,找到之后下断点,右键-在每个参考上设置断点 然后运行程序来到第一个断点处 然后f8走,开始找注册码没找到就换一个函数,然后看 ...
- HTML5所有标签汇总
来自lampbrother兄弟连HTML5与CSS3教程.<xmp> 结构标签:(块状元素) 有意义的div<article> 标记定义一篇文章<header&g ...
- Fire
Fire 分析: 首先,明确题意:b1,b2,--,bn 交换为b2,--,bn,b1,但这并不是意味着只能从b1开始交换,(这点从样例中可以看出),并且也不意味着交换的必须是连续的一串,可以是几个单 ...
- [转]LibreOffice-SDK 开发实战:嵌入MFC-View 和 C# Winform
转自:http://www.aqcoder.com/blog/detail/id/1579bb39-9bcd-4c0f-9b02-67a851148196/ 前面片文章中我简要介绍了下 LibreOf ...
- vc中获取磁盘IO统计计数
想知道进程读写磁盘的情况,可以获取当前进程或指定进程的IO计数. #include <Windows.h> int get_io_bytes(ULONGLONG * read_bytes, ...
- centos下postgresql的安装与配置[转]
本文摘自:http://blog.chinaunix.net/uid-24846094-id-78490.html 一.安装(以root身份进行) 1.检出最新的postgresql的yum配置从ht ...
- 【转】Linux 文件夹文件创建与删除
[转自:Linux文件夹文件创建.删除 - 风生水起 - 博客园] 1. 删除文件夹 rm -rf fileNamede> -删除文件夹实例:rm -rf /var/log/httpd/acc ...
- Restore Oracle database to another server
1. Copy or remotely mount the backupset folder from the source server to the target server 2. On the ...