IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 分布式项目中 如何保证线程安全问题?-------ZooKeeper -> 正文阅读

[大数据]分布式项目中 如何保证线程安全问题?-------ZooKeeper

作者:recommend-item-box type_blog clearfix

前沿:

? 上篇文章我们聊到了在解决分布式项目中线程安全问题,提到解决方案还有其他的,那么在此提出 基于 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来,这里我就不做过多说明,很简单的。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-12 19:39:55  更:2021-11-12 19:40:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:04:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码