zookeeper探索(5): Znode类型及特点

2016-5-10 sunsmile zookeeper

(1) 每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识,如/SERVER2节点的标识就为/APP3/SERVER2

(2) Znode可以有子znode,并且znode里可以存数据,但是EPHEMERAL类型的节点不能有子节点

(3) Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本。 

(4) znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和 服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了 

(5) znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2 

(6) znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的集中管理,集群管理,分布式锁等等。

阅读全文>>

评论(0) 浏览(5413)

zookeeper探索(4): leaderElection(C语言实现)

2016-5-3 sunsmile zookeeper

上一篇中只是给出了文字描述,本篇中给出具体的代码。
zookeeper的领导选举过程的实现比较简单,体现为创建znode节点,并监听znode节点的变化。具体来说就是:
(1)在跟节点创建"/election"永久性节点;
(2)在“/election”节点之下,每个客户端创建属于自己独享的临时顺序节点(即znode节点属性为ZOO_SEQUENCE | ZOO_EPHEMERAL),可以用ip地址也可以用其他的字符串(例如a,b,c);
(3)获取“/election/“子节点列表,并获取其中的最小节点,判断此最小节点是否为自己;

阅读全文>>

评论(0) 浏览(2777)

zookeeper探索(3):选举过程

2016-4-15 sunsmile zookeeper

使用zookeeper实现leader选举过程的一种简单方式是在创建代表参选人的客户端znode节点的时候指定SEQUENCE|EPHEMERAL标签。首先创建一个“/election”节点,然后每个客户端在此节点之下创建代表自己的znode节点,“/election/guid-n_”并同时指定SEQUENCE|EPHEMERAL这两个标签。根据SEQUENCE标签,zookeeper会自动将序号最大的znode节点放在“/election”子节点队列的最后面。序号最小的那个znode节点对应的客户端就是leader。 至此,选举过程并不完整。选举好leader之后,仍然需要监视这个le...

阅读全文>>

评论(0) 浏览(2221)

zookeeper探索(2):C/C++开发环境搭建

2016-4-14 sunsmile zookeeper

Zookeeper是分布式设计常用的架构,分为服务端和客户端,其中服务端基本不需要修改直接拿来用就可以了,客户端需要根据自己的需求进行设计,zookeeper提供了大量非常有用的c api,基本上都是以“zoo_”开头,含义简单明了。客户端根据不同人的需求,可能会使用不同的程序语言来实现,首选当然是和zookeeper使用相同的Java语言 ,但有时候,已有的框架会使用其他语言,这里给出C/C++语言的客户端开发实例。 Zookeeper的环境搭建见上一篇《zookeeper探索(1)》。进入到目录zookeeper-3.4.8/src/c/,执行如下命令即可安装好Zookeep...

阅读全文>>

评论(0) 浏览(2705)

zookeeper探索(1):初试

2016-4-14 sunsmile zookeeper

借用百度百科对zookeeper的介绍如下:

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。ZooKeeper包含一个简单的原语集,提供Java和C的接口。ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.8\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。

阅读全文>>

评论(0) 浏览(2323)

对于并行处理的一点思考

2016-4-13 sunsmile 专业

最近一段时间,需要对一直进行维护的服务器后端模块从现有的单机较低并行程度改进升级,首先是提高单机并行化程度,其次从单机工作模式升级为多机分布式工作模式。 说到并行化,经常会想到相近的一个名词就是,并发 ; 并发是指在同一时间间隔内,同时运行多个任务; 并行是指在同一时刻内,同时运行多个任务; 在单核单处理上面执行这些指令时,可以首先将不相关的指令在短时间内依次执行,然后处理后续的指令;也就是时分复用处理器,同一时刻只有一条指令在执行,这叫并发,其实并发从硬件来说仍然是串行的,只是给人们(或者说使用者)的感觉是同时在执行,或者可以理解为伪并行; 在多核或者多处理的情况下,可以将不相...

阅读全文>>

评论(0) 浏览(2237)

git hooks探索(3)

2015-12-9 sunsmile 专业

hooks实验

提交更新之后自动执行推送操作

客户端推送更新时自动更新服务端代码

阅读全文>>

评论(0) 浏览(3360)

git hooks探索(2)

2015-12-7 sunsmile 专业

 git commit事件相关的hooks

阅读全文>>

评论(0) 浏览(2546)

git hooks探索(1)

2015-12-4 sunsmile 专业

git hooks是由特定事件触发,可以在事件发生之前、之时或者之后调用用户通过hooks自定义的操作。通过git hooks能够配置一系列动作,例如,每次提交代码之后,能够自动进行代码编译和部署操作。这仅仅是举一个很简单的例子,希望起到抛砖引玉的作用,能够通过git hooks实现更多的功能。默认情况下,hooks脚本文件都使用的bash shell语言,当前平时在linux系统中使用的脚本语言都能够在此脚本文件中使用,例如python、perl甚至ruby。本文中仍然使用bash shell完成所有实验内容。

阅读全文>>

评论(0) 浏览(2594)

SDN网络初探

2015-11-12 sunsmile 专业

软件定义网络(Software Defined Network, SDN)通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台目前,包括HPIBMCiscoNEC以及国内的华为和中兴等传统网络设备制造商都已纷纷加入到OpenFlow的阵营,同时有一些支持OpenFlow的网络硬件设备已经面世。2011年,开放网络基金会(Open Networking Foundation)在Nick等人的推动下成立,专门负责OpenFlow标准和规范的维护和发展;同年,第一届开放网络峰会(OpenNetworking Summit)召开,为OpenFlowSDN在学术界和工业界都做了很好的介绍和推广。

阅读全文>>

评论(4) 浏览(2941)

Powered by emlog 京ICP备15044591号-1