单机模式
tickTime=2000
dataDir=/data
clientPort=2181
集群模式
在单机模式基础上增加几个配置项。
//Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数
initLimit=5
// Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度
syncLimit=2
server.1=
server.2=
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。
集群模式下还需要配置一个文件myid,在dataDir目录下,内容就是A的值。Zookeeper启动式会读取这个文件,拿里面的数据与zoo.cfg中的配置信息比较判断哪个是server。
数据模型
1.znode可以有子节点目录,并且每个znode可以存储数据,EPHEMERAL类型的目录节点不能有子节点目录。
2.znode 是有版本的,每个 znode 中存储的数据可以有多个版本,也就是一个访问路径中可以存储多份数据。
3.znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除。
4.znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端。
程序
客户端要连接 Zookeeper 服务器可以通过创建 org.apache.zookeeper. ZooKeeper 的一个实例对象,然后调用这个类提供的接口来和服务器交互。
方法:
String create (String path , byte[] data, List<ACL> acl , CreateMode createmode) 创建目录节点path,设置数据
createmode : PERSISITENT 持久化目录节点,存储数据不会丢失
PERSISTENT_SEQUENTIAL 顺序自动编号目录节点
EPHEMERAL 临时目录节点
EPHEMERAL_SEQUENTIAL 临时自动编号节点
当对目录节点监控状态打开时,一旦目录节点的状态发生变化,Watch对象的process方法就会被调用。