分布式项目中 如何保证线程安全问题?-------ZooKeeper

 

前沿:

  上篇文章我们聊到了在解决分布式项目中线程安全问题,提到解决方案还有其他的,那么在此提出 基于 zookeeper  解决分布式项目中的线程安全问题 也是目前市面上比较流行的。做为一个高级开发工程师也是必须要学习的。

ZooKeeper是什么东西?

 是协调多个分布式进程之间活动的。 主要应用在分布式系统中 保证跨jvm虚拟机之间的线程安全。

ZooKeeper特征的初步了解?

   在使用的时候,我们应该了解一下它。其实ZooKeeper的原始功能很简单,基纡它的层次型的目录树的数据结构,并通过对树上的节点进行有效管理,可以设计出各种各样的分布式集群管理功能。此外, ZooKeeper本身 也是分布式集群的。

 下图所示,给出了一个典型的Zookeeper层级命名空间,整个命名方式类似于文件系统,同一个目录下不能有相同名称的目录节点---特点:有层次结构构,类似于包,同一目录里面不能出现两个相同的包

分析其特征:

   基于上面的图片,每一个节点是不能够重复的,如果谁创建了节点,那么谁就获取到了锁

关于节点的分类及生命周期:

临时节点 :

       创建了节点对象后,用完了,就会自动删除,临时节点下不能创建子节点

持久节点:

     节点创建,就一直在。除非有操作主动删除

临时有序节点:

      在临时几点的基础上增加了顺序,可以用来实现分布式锁

持久有序节点:

        就是在创建持久节点的时候,会自动的在持久节点名字后加数字后缀

那么现在我们怎么来 使用ZooKeeper 呢?

  安装:

  1. 官方下载地址Index of /apache/zookeeper , 下载后获得,解压即可安装。
  2. 安装配置: 把conf目录下的zoo_sample.cfg改名成zoo.cfg,这里我是先备份了zoo_sample.cfg再改的名。修改zoo.cfg的值如下:

    dataDir=D:/zookeeper-3.4.9/data/data

    dataLogDir=D:/zookeeper-3.4.9/data/log

启动:

         点击bin目录下的zkServer.cmd 这时候出现下面的提示就说明配置成功了。

可视化界面安装:

        图形界面-ZooViewer:https://blog.csdn.net/u010889616/article/details/80792912

 代码操作zkclient:

<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.10</version>
</dependency>

API总结:

  1. new ZkClient("127.0.0.1:2181",5000); 创建zookeeper客户端
  2. client.getChildren("/")获取子节点 “/”代表根节点
  3. client.createPersistent创建持久节点
  4. client.createPersistentSequential创建持久有顺节点,会在path后面增加序号
  5. client.createEphemeral创建临时节点
  6. client.createEphemeralSequential创建临时有序节点
  7. client.subscribeChildChanges订阅子节点的改变
  8. client.subscribeDataChanges订阅某个节点的数据改变

结尾:

            使用的话,就按照api来,这里我就不做过多说明,很简单的。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值