码迷,mamicode.com
首页 > 其他好文 > 详细

Zookeeper对于事务性的支持

时间:2015-02-09 20:20:33      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:zookeeper

Zookeeper滴功能还是蛮强大的。

它对于事务性的支持主要依赖于四个函数,zoo_create_op_init zoo_delete_op_init zoo_set_op_init以及zoo_check_op_init。每一个函数都会在客户端初始化一个operation,客户端程序有义务保留这些operations。当准备好一个事务中的所有操作后,可以使用zoo_multi来提交所有的操作,由zookeeper服务来保证这一系列操作的原子性。也就是说只要其中有一个操作失败了,相当于此次提交的任何一个操作都没有对服务端的数据造成影响。Zoo_multi的返回值是第一个失败操作的状态信号。

Zookeeper通过版本号来保证操作的实效性。zoo_set的最后一个形参就是version number。如果提交的数和服务端在该节点的版本号对不上,那么此次设值操作就失败了。这可以解决这样的情况:client1.get, client2.get, client2.set, client1.set。从client1的角度出发,set和get之前操作的变量值已经发生改变了,zookeeper非常负责的保证的最后一次set将不会成功,客户端可以重新get, set一次。

Zookeeper对于事务性的支持

标签:zookeeper

原文地址:http://blog.csdn.net/zhanglehes/article/details/43673861

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!