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的使用的更多相关文章

  1. zk系列-zookeeper概述

    接触zk是2年前了,最近工作又比较依赖于zk,所以准备起个系列文章,系统的总结下. zookeeper是一个分布式的用于协调的服务,起源于Hadoop中的一个组件.分布式系统可以用zookeeper实 ...

  2. zk系列三:zookeeper实战之分布式锁实现

    一.分布式锁的通用实现思路 分布式锁的概念以及常规解决方案可以参考之前的博客:聊聊分布式锁的解决方案:今天我们先分析下分布式锁的实现思路: 首先,需要保证唯一性,即某一时点只能有一个线程访问某一资源: ...

  3. zk系列二:zookeeper实战之分布式统一配置获取

    前面介绍了zk的一些基础知识,这篇文章主要介绍下如何在java环境下获取zk的配置信息:主要基于zk的监听器以及回调函数通过响应式编程的思想将核心代码糅合成一个工具类,几乎做到了拿来即用: 在分布式集 ...

  4. zk系列一:zookeeper基础介绍

    聊完kafka必不可少的需要再聊一聊zk了,下面开始 一.ZK是什么 ZooKeeper是分布式应用程序的高性能协调服务.它可以实现分布式的选主.统一配置管理,命名,分布式节点同步,分布式锁等分布式常 ...

  5. 面试必问:分布式锁实现之zk(Zookeeper)

    点赞再看,养成习惯,微信搜索[三太子敖丙]关注这个互联网苟且偷生的工具人. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的 ...

  6. 容器化系列 - Zookeeper启动和配置 on Docker

    本文简要说明了如何在Docker容器中启动和配置Zookeeper. 1 准备工作 1.1 下载zookeeper镜像 $ docker pull zookeeper:3.4 1.2 单点模式 安装D ...

  7. Hadoop系列-zookeeper基础

    目前是刚刚初学完zookeeper,这篇文章主要是简单的对一些基本的概念进行梳理强化. zookeeper基础概念的理解 有时候计算机领域很多名词都是从一长串英文提取首字母缩写而来,但很不幸zooke ...

  8. ZK(ZooKeeper)分布式锁实现

    点赞再看,养成习惯,微信搜索[牧小农]关注我获取更多资讯,风里雨里,小农等你. 本文中案例都会在上传到git上,请放心浏览 git地址:https://github.com/muxiaonong/Zo ...

  9. (转)淘淘商城系列——zookeeper单机版安装

    http://blog.csdn.net/yerenyuan_pku/article/details/72717744 这篇文章,我单独来说一下zookeeper如何安装.在实际开发中,zookeep ...

随机推荐

  1. c# HttpWebRequest 与 HttpWebResponse

    如果你想做一些,抓取,或者是自动获取的功能,那么就跟我一起来学习一下Http请求吧.本文章会对Http请求时的Get和Post方式进行详细的说明,在请求时的参数怎么发送,怎么带Cookie,怎么设置证 ...

  2. 【Mail】JavaMail发送带附件的邮件(二)

    上一篇讲了使用JavaMail发送普通邮件([Mail]JavaMail介绍及发送邮件(一)),本例讲发送复杂的邮件(带有附件的邮件) 生成一封复杂的邮件 新建一个JavaWeb的Maven工程,引入 ...

  3. appium踩过的坑(1):NoClassDefFoundError

    1.引入jar包错误导致的错误: 引入的jar包引起的 应该引入下面的jar包

  4. tomcat详情

    [转载]http://grass51.blog.51cto.com/4356355/1123400

  5. 【转载】【树形DP】【数学期望】Codeforces Round #362 (Div. 2) D.Puzzles

    期望计算的套路: 1.定义:算出所有测试值的和,除以测试次数. 2.定义:算出所有值出现的概率与其乘积之和. 3.用前一步的期望,加上两者的期望距离,递推出来. 题意: 一个树,dfs遍历子树的顺序是 ...

  6. Devexpress 汉化

    DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.对于较老的版本(例如之前项目中遇到的dev9),对于汉化(应该说本地化Localization)支持 ...

  7. MATLAB的crack安装小曲

    MATLAB的crack安装小曲 本学期要学数学模型和数值分析,需要用MATLAB,便琢磨着装MATLAB.我同专业的同学会装MATLAB的crack,他是数学协会的理事长,平时爱吹牛,问他一个简单的 ...

  8. 使用Prism6 建立 Windows 10 通用程序.

    使用Prism6 建立 Windows 10 通用程序. 目标: 使用prism6,建立Windows 通用程序项目. 1, 解决方案—添加新建项目—通用—空白应用—输入名称—确定—确定 2 ,引用上 ...

  9. Mini projects #8–RiceRocks

    课程全名:An Introduction to Interactive Programming in Python,来自 Rice University 授课教授:Joe Warren, Scott ...

  10. middleware中间件的概念

    简要来说express就是一个由路由和中间件构成的 web 开发框架. 当express服务收到客户端的请求时,会通过一组函数来处理请求. 这些函数用于解析请求体数据,处理错误,或者负责返回各种情况对 ...