zookeeper分布式锁是干什么的
zookeeper实现分布式锁的原理就是多个节点同时在一个指定的节点下面创建临时会话顺序节点,谁创建的节点序号最小,谁就获得了锁,并且其他节点就会监听序号比自己小的节点,一旦序号比自己小的节点被删除了,其他节点就会得到相应的事件,然后查看自己是否为序号最小的节点,如果是,则获取锁。
为什么使用zookeeper分布式锁?
使用分布式锁的目的,无外乎就是保证同一时间只有一个客户端可以对共享资源进行操作。 但是Martin指出,根据锁的用途还可以细分为以下两类: (1)允许多个客户端操作共享资源 这种情况下,对共享资源的操作一定是幂等性操作,无论你操作多少次都不会出现不同结果。在这里使用锁,无外乎就是为了避免重复操作共享资源从而提高效率。 (2)只允许一个客户端操作共享资源 这种情况下,对共享资源的操作一般是非幂等性操作。在这种情况下,如果出现多个客户端操作共享资源,就可能意味着数据不一致,数据丢失。
分布式锁操作
1、 在app-11上创建一个临时节点并存入数据lock。
命令:create -e /test "lock"
2、在app-12上登录到hadoop用户下,并切换到客户端。
命令:su – hadoop
、zkCli.sh
3、 创建一个和app-11一样的临时节点,路径也相同。
命令:create -e /test "lock"
这里说明创建失败。
4、 在app-12上创建一个通知,监视test。
命令:stat /test true
5、 在app-11上删除test节点。
命令:delete /test
6、返回app-12。
7、 此处的监视是一次性,还想监视,需要在输入一次命令。
命令:stat /test true
这里显示说明,这个test不存在。
8、在app-11上再创建一次test。
命令:create -e /test "lock"
9、返回app-12上。
友情提示:详细学习内容可观看Spark快速大数据处理——余海峰https://edu.csdn.net/course/detail/24205