zookeeper
绝世好阿狸
这个作者很懒,什么都没留下…
展开
-
【Java】NIO 仿照zookeeper 写的 nio客户端
之前用nio写了一个聊天室的简单demo,发现思路很乱,然后就开始看zookeeper是怎么做的,发现思路很妙,于是就仿照着写了一个很简单的客户端版本,就是输入一个加法的字符串,然后让服务器计算,再返回。客户端:package client;import java.io.IOException;import java.net.InetSocketAddress;import jav原创 2017-10-30 12:11:50 · 458 阅读 · 0 评论 -
【zookeeper】客户端 底层实现
首先看下我们是怎么用zk客户端的。我们一般都会采用如下的代码:ZooKeeper zk = new ZooKeeper("127.0.0.1:2183", 5000, new DefaultHandler());然后创建的ZooKeeper实例是我们与服务端通讯的接口。所以从这个类开始看。 public ZooKeeper(String connectString, int sess原创 2017-11-11 04:45:06 · 559 阅读 · 0 评论 -
【zookeeper】节点信息
使用客户端get 节点的命令以后,会有如下信息:第一行是节点的内容。cZxid:创建节点的事务id。ctime:创建节点的时间。mZxid:最后一次修改节点的事务id。mtime:最后一次修改节点的时间。datalength:数据的长度numChildren:子节点的数目接着是三个版本:用于乐观锁控制并发。版本号的值就是修改的次数。刚开始创建的时候是原创 2017-11-11 02:53:33 · 644 阅读 · 0 评论 -
【zookeeper】ACL
ACL全称是access control list,是zk中控制访问权限的一种策略。大致的思路是任何人都可以登录zk,但是登录以后,zk的节点树的每一个节点都有自己的访问控制,所以用户登录以后需要先添加自己此次登录的权限,然后才能访问相应的节点。如果没有某一个节点的权限,那么zk会报错。传统的访问控制最经典的是linux系统的基于user,group和other三种类型的权限控制。这种控制原创 2017-11-11 00:34:12 · 595 阅读 · 0 评论 -
【zookeeper】ACL super 超级管理员
zk的权限管理表有一种ACL的模式叫做super,该模式的作用是方便管理节点。一旦我们为某一个节点设置了acl,那么其余的未授权的节点是无法访问或者操作该节点的,那么系统用久了以后,假如忘记了某一个节点的密码,那么就无法再操作这个节点了,所以需要这个super超级管理员用户权限,其作用还是很大的。下面看下如何假如一个超级管理员。添加方式:只能在启动服务器的时候添加。假设这个超管是:原创 2017-11-10 12:13:36 · 6749 阅读 · 0 评论 -
【zookeeper】INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1183] - 报错
客户端启动报错信息:INFO [main-SendThread(localhost:2181):ClientCnxn$SendThread@1183] - Unable to read additional data from server sessionid 0x0, likely server has closed socket, closing socket connection an原创 2017-11-10 11:48:04 · 30291 阅读 · 1 评论 -
【zookeeper】java API 例子
之前体验了命令行客户端,这次看一下java API操作zk。server还是按照之前的配置,一个server1,server2和server3的伪集群。maven:这里使用maven管理zk的jar包,大致需要zk的jar和日志的jar,pom.xml:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt原创 2017-10-24 07:59:04 · 471 阅读 · 0 评论 -
【zookeeper】简单的客户端命令
接着上一次配置的zk伪集群,这里打开两个客户端,一个操作一个查看。1.ls path列出path的下一级节点列别第一次登陆zk,/是根节点,下面默认只有一个zookeeper节点2.create path data用于创建一个节点,data是数据,但是这个路径的前部分必须存在 使用21822查看:3.get path用于查看对应节点的数据原创 2017-10-24 04:55:03 · 249 阅读 · 0 评论 -
【zookeeper】伪集群
最近想学习一下zk,今天就先搭建一个伪集群吧。我的系统是macOS,zk的安装是真的简单,可以使用homebrew,但是我觉得直接从官网上下载然后按照配置文件启动zk的方式更好。其次,如果是伪集群的话,我们只需要一个zk的包就可以,每一次都指定不同的配置文件启动就行了。如果是集群模式,那么确实是每一台物理节点都需要一个zk的包。我zk的下载地址是官网:http://apache.claz.or原创 2017-10-24 03:38:59 · 264 阅读 · 0 评论 -
【zookeeper】data/zookeeper_server.pid: No such file or directory FAILED TO WRITE PID 报错
今天在配置zk的伪集群,发现了如下报错:上网查看有的说是因为zoo.cfg配置文件“=”前后有空格,查了以后我的配置文件并没有空格,所以我排除了这个原因。最后解决:zk的配置文件路径解析确实不够智能,路径必须是全路径而且是从根目录开始的,我的路径开始用的是"~/xxxx"这样的路径,很显然,zk并不认识这个"~"家目录,更改以后问题解决。另外网上说“#”注释后面必须原创 2017-10-24 02:54:51 · 18163 阅读 · 3 评论 -
【zookeeper】事件 watch 机制 原理
zk作为一款成熟的分布式协调框架,订阅-发布功能是很重要的一个。所谓订阅发布功能,其实说白了就是观察者模式。观察者会订阅一些感兴趣的主题,然后这些主题一旦变化了,就会自动通知到这些观察者。zk的订阅发布也就是watch机制,是一个轻量级的设计。因为它采用了一种推拉结合的模式。一旦服务端感知主题变了,那么只会发送一个事件类型和节点信息给关注的客户端,而不会包括具体的变更内容,所以事件本身是轻量级原创 2017-11-12 01:21:02 · 12769 阅读 · 0 评论