Zookeeper 学习笔记归纳

用Matlab系统辨识工具箱搞定温控系统建模:从阶跃响应到传递函数(附完整代码) 本文详细介绍了如何使用Matlab系统辨识工具箱进行温控系统建模,从阶跃响应数据采集到传递函数参数辨识的全过程。通过实际案例和完整代码,帮助工程师快速掌握PID控制参数整定技巧,提升温控系统设计效率。特别适合单片机开发者和自动化控制工程师参考。 阅读详情

Zookeeper 学习笔记归纳01

1.zookeeper是什么?

  1. zookeeper是一个分布式协调服务工具,可以提供配置信息、名称、分布式同步、组服务等
  2. 官网https://zookeeper.apache.org/
  3. apache基金下的开源软件在这里插入图片描述
  4. 当前版本搜索https://mvnrepository.com/search?q=zookeeper
    在这里插入图片描述
    这里可以看到3.4.6使用次数较多,不过比较旧。只是研究学习,使用这个版本是足够的,如果是企业使用,采用较新的稳定版本更合适。后续会讲一下企业选择第三方库和第三方库版本的一些注意事项。
    在这里插入图片描述
  5. 官网中现有版本,
    3.4.6(本文采用的版本)
    在这里插入图片描述
    在这里插入图片描述
    3.6.1
    在这里插入图片描述

2. zookeeper解决了什么问题?

  1. ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
  2. 官网介绍,其实已经把功能和作用解释的比较清楚了,归纳起来就是可以往zookeeper写数据、读取数据、使用它做数据变化监控。稍后画图做解释。
  • 主节点选举
    在这里插入图片描述
  • 主从节点感知(状态通信)
    在这里插入图片描述
  • 配置文件同步(zookeeper可以进行少量数据存储,并且具备较高的信息同步和传输性能)
    在这里插入图片描述
  • 集群节点上下线动态感知
    在这里插入图片描述
  • 负载均衡,zookeeper如上图,也可以进行负载均衡。外部请求过来后,根据一定规则,让请求分发到集群中不同处理节点上。这样可以保证整体服务的可用。结合zookeeper的节点上下线动态感知,当集群遇到突发性流量时如天猫双十一,这时候集群节点会临时性扩充来应对爆发性请求流量。
  • 分布式锁
    在这里插入图片描述
  • 名称服务,例如请求过来后,根据负载均衡,返回相同域名对应的不同ip地址。
    在这里插入图片描述

3.zookeeper怎么使用

  1. zookeeper安装,zookeeper安装
    2.通过命令行客户端或者java api进行调用访问。这一点和java的文件IO流(文件可以使用操作系统的图形化界面和java api操作)、mysql(可以通过命令行客户端、图形化客户端如navicat、java api进行操作)、hdfs(命令行客户端、java api)。
  2. zookeeper的核心功能就是数据读写,同时具备很高的数据传输性能。zookeeper的数据是以node节点方式进行存储,跟linux的文件目录树一样,都是划分节点,。
  3. 状态和数据同步,就是对这个节点以及节点中数据进行同步。
  4. 数据读写,就是对这些节点以及节点中数据进行读写。

3.1命令行客户端

  1. 在zookeeper安装目录下的bin目录下,执行 以下shell脚本命令。注意2种方式,不管是对哪个zookeeper节点做操作,最后数据都会被同步到整个zookeeper的所有节点上去。
# 本地连接,就是在充当了zookeeper的节点服务器上,直接运行这个客户端程序
./zkCli.sh  
# 连接到指定的服务节点
bin/zkCli.sh  -server linux101:2181  

在这里插入图片描述
2. 创建一个节点,并设置数据为字符串,age18。注意路径必须是绝对路径,也就是以/目录为起始节点。
create /doit/zoo age18
在这里插入图片描述
这里创建节点,需要逐级创建,否则就会报中间节点不存在的错误,如下图
在这里插入图片描述
3. 查看文件节点 ,ls / 。ls之后跟一个节点的绝对路径,这里演示传的参数是根节点
在这里插入图片描述
ls2 /doit 这个指令返回信息会更加详细。信息详细程度类似stat指令
在这里插入图片描述

  1. 查看节点状态信息, stat /doit 。 注意stat后面跟的是一个节点的绝对路径,切记切记,不要给相对路径,就给绝对路径。这一点和hdfs中的数据访问一样,都给绝对路径。
    在这里插入图片描述
  2. 当前打开客户端的操作指令历史记录, history
    在这里插入图片描述
  3. 删除节点,delete /xixi 注意这里删除不能递归删除,也就类似linux中的,删除文件,而不能删除文件夹。递归删除需要使用后面的rmr指令
    在这里插入图片描述
    7.递归删除 rmr /xixi 这个指令类似linux的rm -r指令,递归删除文件夹,
    在这里插入图片描述
  4. 更新节点的数据,set /doit/zoo zooooo
    在这里插入图片描述
  5. 退出命令行quit,这里可以对比mysql的,也是quit。不过mysql还支持exit退出
    在这里插入图片描述

3.2 java api操作

  1. 使用idea 2020版本,创建maven项目
  2. 去maven repository 拷贝对应版本的pom配置信息
    在这里插入图片描述
  3. 粘贴配置信息,我的如下
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.6</version>
    <!-- 这一行注释掉<type>pom</type>-->
</dependency>
  1. 刷新maven,等待maven把jar包下载下来。下载速度慢的,请配置一下maven的本地仓库。具体配置可以参考我的另外一篇文章maven对比和使用简介
  2. 创建节点数据和判断节点是否存在
private static void zkCreate() {
        try {
            // 创建连接
            ZooKeeper zooKeeper = new ZooKeeper("linux100:2181", 2000, null);

            // zookeeper的操作,查看,创建,更新,删除,监控数据变化
            // 这里是创建一个节点,
            // 第一个参数是节点路径
            // 第二个是节点值
            // 第三个是节点访问权限控制,这里选择的是对所有人开放所以单词中有unsafe字样
            // 第四个是节点类型(zookeeper的节点有永久和临时,persistant就是永久,ephemeral就是短暂的,临时的节点)
            Stat exists = zooKeeper.exists("/keyboard", false);
            // 不存在才创建
            if(exists == null) {
                String result = zooKeeper.create("/keyboard", "dareu".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
                System.out.println("result:" + result);
            } else {
                byte[] data = zooKeeper.getData("/keyboard", null, null);

                System.out.println("keyuboard value exists:" + new String(data));
            }

            Stat exists2 = zooKeeper.exists("/mouse", null);
            if(exists2 == null) {
                String result2 = zooKeeper.create("/mouse", "keve".getBytes(), ZooDefs.Ids.READ_ACL_UNSAFE, CreateMode.EPHEMERAL);
                System.out.println("result2:" + result2);
            }

            // 关闭连接,这里和io流、mysql、hdfs都是一样的代码套路
            zooKeeper.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  1. 获取节点数据,节点的子节点,节点的权限
private static void zkShow() {
        try {
            // 创建连接
            ZooKeeper zooKeeper = new ZooKeeper("linux100:2181", 2000, null);

            // 获取节点数据
            byte[] data = zooKeeper.getData("/keyboard", null, null);

            System.out.println("keyboard data:" + new String(data));

            // 获取节点权限
            List<ACL> acl = zooKeeper.getACL("/keyboard", new Stat());
            System.out.println("keyboard acl:" + acl);

            // 获取子节点
            List<String> children = zooKeeper.getChildren("/", null);
            System.out.println("root childrens:" + children);

            // 关闭
            zooKeeper.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

  1. 删除单节点
private static void zkDelete() {

        try {
            // 创建连接
            ZooKeeper zooKeeper = new ZooKeeper("linux100:2181", 2000, null);

            // 先创建节点和节点数据
            if(zooKeeper.exists("/rmrNode", false) == null) {
                String deletePath = zooKeeper.create("/rmrNode", "rmrData".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            }

            // 在一个节点下,创建多个子节点存储数据,方便后续做递归删除
            if(zooKeeper.exists("/rmrNode/deleteNode", false) == null) {
                String deletePath2 = zooKeeper.create("/rmrNode/deleteNode", "deleteData".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            }
            if(zooKeeper.exists("/rmrNode/deleteNode2", false) == null) {
                String deletePath3 = zooKeeper.create("/rmrNode/deleteNode2", "deleteData2".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
            }
            if(zooKeeper.exists("/rmrNode/deleteNode3", false) == null) {
                String deletePath4 = zooKeeper.create("/rmrNode/deleteNode3", "deleteData2".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
            }

            // 删除有递归删除和节点删除
            // delete 只能做节点删除,不能递归删除,否则会报错
            zooKeeper.delete("/rmrNode", -1);

            zooKeeper.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

在这里插入图片描述
需要修改为删除某个叶子节点,可以理解只能删除路径下最后的那个节点,不能删除中间节点

private static void zkDelete() {

        try {
            // 创建连接
            ZooKeeper zooKeeper = new ZooKeeper("linux100:2181", 2000, null);

            // 先创建节点和节点数据
            if(zooKeeper.exists("/rmrNode", false) == null) {
                String deletePath = zooKeeper.create("/rmrNode", "rmrData".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            }

            // 在一个节点下,创建多个子节点存储数据,方便后续做递归删除
            if(zooKeeper.exists("/rmrNode/deleteNode", false) == null) {
                String deletePath2 = zooKeeper.create("/rmrNode/deleteNode", "deleteData".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            }
            if(zooKeeper.exists("/rmrNode/deleteNode2", false) == null) {
                String deletePath3 = zooKeeper.create("/rmrNode/deleteNode2", "deleteData2".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
            }
            if(zooKeeper.exists("/rmrNode/deleteNode3", false) == null) {
                String deletePath4 = zooKeeper.create("/rmrNode/deleteNode3", "deleteData2".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT_SEQUENTIAL);
            }

            List<String> beforeDelete = zooKeeper.getChildren("/rmrNode", false);
            System.out.println("before delete:" + beforeDelete);

            // 删除有递归删除和节点删除
            // delete 只能做节点删除,不能递归删除,否则会报错
            zooKeeper.delete("/rmrNode/deleteNode", -1);

            List<String> afterDelete = zooKeeper.getChildren("/rmrNode", false);
            System.out.println("after delete:" + afterDelete);

            zooKeeper.close();
        }catch (Exception e) {
            e.printStackTrace();
        }
    }

可以看到那个deleteNode被删除掉了
在这里插入图片描述

  1. 递归删除节点以及所有节点下子节点
    没有提供现成API,需要跟java 的File操作一样,进行递归判断和删除
private static void zkRMR(String path) {
        // 参数异常处理
        if(path == null || path.length() == 0) {
            return;
        }

        // 不允许删除根节点
        if(path == "/") {
            return;
        }

        try {
            // 创建连接, 给出集群多个节点地址,这样就算一个节点宕机,也可以连接其他节点
            ZooKeeper zooKeeper = new ZooKeeper("linux100:2181,linux101:2181,linux102:2181", 2000, null);

            // 获取子节点
            List<String> children = zooKeeper.getChildren(path, false);
            // 检查子节点中信息,
            if(children != null && children.size() > 0) {
                for (String child : children) {
                    zkRMR(path + "/" + child);
                }
            }

            zooKeeper.delete(path, -1);

            // 关闭
            zooKeeper.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

4.zookeeper内部机制

作为高效的任务协调工具,zookeeper最为人知就是它的几个机制

4.1选举机制

  1. 选举主要是为了选出集群中的主节点leader,其他就是从节点follower
  2. Leader选举过程(以3个节点的集群为例):

zookeeper的进程在不同的工作模式下,有不同的通信端口(比如选举时,通过端口3888通信;作为leader或者follower接收客户端请求时通过端口2181;leader和follower之间通信用2888)
注意在zk集群安装的时候 会人为的为每台机器分配一个唯一的id。每个节点的配置文件中都有一个自己的独一无二的id
(1)集群初次启动时的选举流程
A、第一台机器(id=1)启动,发现没有leader,进入投票模式,投自己,并收到自己投这一票,得1票,不能当选leader(当leader的条件是,集群机器数量过半的票数)
B、第2台机器(id=2)启动,发现没有leader,进入投票模式,投自己(因为自己的id>1 收到的另一台机器的票的id)
C、第1台机器收到2的票,发现集群中有一个比自己id大的机器上线了,重新投票,投id=2
D、第2台收到的得票数为2票,过半数,自己当选,切换模式:Leader模式
E、第1台就发现有Leader存在了,自己切换模式:Follower
F、第3台启动,发现有Leader,自动进入Follower状态
如果每个节点是同时启动的zk 同时选举自己 ,同时广播 , 同时获取别人的广播,3机器会当选
(2)集群在运行过程中的选举流程
a.在某个时间点上,id=2机器挂了(leader),别的机器发现没有leader了,全体进入投票模式
b.先投自己,票中会携带(自己的id,自己的数据的版本号)
c.大家都投数据版本最新的节点做leader,如果有多个节点数据版本一样,则从中选id最大的那个作为投票目标!

  1. 从上可以看出,zookeeper集群,有3或者5台机器即可(注意是奇数台,方便选举)

4.2数据存储机制

  1. zookeeper是以节点方式进行数据存储,类似于linux的文件目录以及tree的结构。每个节点叫做znode,维护了节点的层级关系 ,不过真正的数据存储是以key:value的形式存储。
  2. zookeeper中对数据的存储采用key-value的形式,它的key有特别的格式——路径的形式!( /xixi/haha /xixi/haha2 /xixi)之所以采取这种形式,是因为zookeeper中的数据节点(znode)之间可以存在父子关系;
  3. zookeeper的数据节点分为以下类型:
    永久的znode:客户一旦创建这个znode,它就会被zookeeper一直保存,除非人为删除;java api
    的参数中的persistant
    短暂的znode:客户创建完这个znode后,如果客户断开与zookeeper的连接,则该数据马上会被zookeeper删除;java api中的ephemeral类型
    带序号的znode:客户创建一个key,zookeeper会为客户的key自动拼接一个递增的序号!可以类比mysql的主键,自增
    (客户创建的是/haha/x ,那么zookeeper真实生成的key为: /haha/x0000000000001
    如果客户继续创建 /zzz/y,那么zookeeper真实生成的key为:/zzz/y000000000002)
    另外: 永久的和短暂的,都可以跟“带序号的”特性进行组合!组合下来之后共有4种:
  • 永久不带序号
  • 永久且带序号的
  • 短暂不带序号
  • 短暂且带序号的

4.3内部通信机制

  1. 前文说过,zookeeper主要是以少量数据存储和读取,以及高速的数据同步传输为核心。
  2. 以此扩展开的节点间感知,动态上下线感知,负载均衡功能等都是基于对存储节点的创建,删除,更新的实时操作和监控为基础实现的。
  3. 服务器集群计算机之间通信,简单可以划分几个类型,一种是http协议,例如心跳包通信机制就是这种类型。HDFS的namenode和datanode之间心跳通信就是这种方式;一种是rpc,远程服务调用,速度和效率更快,zookeeper就是采用这种方式。

5.zookeeper注意事项

  1. zookeeper可以存储数据,但一般只存储少量如配置信息等数据
  2. zookeeper可以做的功能都是基于快速高效的分布式数据读写来实现的,所以zookeeper的集群高可用需要保证配置无误
  3. zookeeper可以扩展的功能较多,但只是整个java 生态体系中方案的一种,根据业务需要自行选择。适合自己的才是最好的,并不是一定要选某一种方案。
  4. zookeeper的数据存储可以有永久性和临时性存储,可以进行权限划分。基于此可以做更多功能扩展。
  5. zookeeper没有专门的日志目录,出现问题时,日志会出现在安装目录bin目录下,以.out格式显示,如图
    在这里插入图片描述
超声相控阵合成孔径成像FPGA设计介绍 1.仿真预览 2.理论分析 系统的基本结构如下所示: 以上是实际中完整的结构,系统中会涉及到两块板子中的时钟,这个就是设计一个时钟采样同步的问题,即所谓的时钟同步。一般这种情况,往往使用内插的方式来解决。这是由于,在实际中,超生波接收到的信号是由本身系统发送出去反射回来得到的,因此从另外一方面将,其是同步的。但是在接收的时候通过内插的方法解决其中的延迟问题。 根据论文中的介绍,整个系统分为如下几个部分: ·模拟发送信号,这个部分由MATLAB产生测试数据并量... 阅读详情

相关推荐

ADS新手必看:ICCAP数据导入与导出CSV的完整流程(附常见问题解决)

本文为ADS新手详细讲解了如何将ICCAP测试数据导入ADS进行仿真分析,并导出为通用CSV格式的完整流程。内容涵盖文件格式解析、导入设置、数据验证、处理技巧及常见问题排查,重点解决了数据文件导入过程中的兼容性与单位映射等核心难点,帮助射频工程师高效连接测量与仿真环节。

peace的博客 557

kafka删除指定topic,zookeeper: Command not found: Command not found rmr。

kafka删除指定topic,zookeeper: Command not found: Command not found rmr。

万里无云能蔽日 3768

瑞芯微rk3568移植openbmc(一)----关于ob移植的优缺点

基于rock3a的单板,CPU为瑞芯微rk3568的环境,移植了openbmc

feixiang3839的专栏 5537

zookeeper学习笔记(最全)

zookeeper学习笔记(最全) zookeeper解决并发问题——分布式锁

洛柒 3141

WinForm制作文件传输助手,Tcp局域网传输文件,传输速度受限于宽带和硬盘速度上限

文件传输助手为什么会出现,是因为项目上有些特殊的地方限制太多了,连插硬盘都需要关软件,联网又要开很不方便,网络限制一般软件只能局域网通信,还要开特定的端口等,你才能在电脑上通信,这样和机房的服务器远程的时候文件就不好拿过去,又不可能每次都去开机房的门。现在这个功能比较简单,只能单文件发送,但是其实比U盘硬盘方便,一般的六类网线传输压缩包在50M/s以上,U盘硬盘复制就不行了,特别如果是像我们学校这种网络结构,一个学校都在一个局域网,那真的方便!普通的局域网用特定IP和端口,通信也是很方便的。

m0_69233031的博客 1672

故障处理:Oracle一体机磁盘故障时磁盘组重平衡失败的故障处理

摘要: Oracle Exadata一体机出现磁盘故障案例,存储节点故障灯未亮但磁盘已产生大量坏块,导致重平衡失败。文章强调了一体机硬件巡检需检查6个关键维度:节点messages日志、存储cell告警日志、CellCLI日志、ASM告警日志、ILOM日志及服务器信号灯。故障分析显示硬盘物理故障导致磁盘组冗余受损,自动修复流程受阻。文中详细记录了通过CellCLI工具排查损坏磁盘的过程,并提供了完整的故障处理流程和命令输出。文章同步发布于微信公众号"IT民工的龙马人生"和博客网站(www

提供数据库技术支持(系统优化,故障处理,安装升级,数据恢复等) 1231

zookeeper 3.7.0 zkCli.cmd常用命令(添加、修改、删除)

zookeeper 3.7.0 zkCli.cmd常用命令(添加、修改、删除)

liaomingwu的专栏 7832

android 数据库锁的问题

最近在项目中遇到一个错误: 12-26 17:29:10.501 32592 32644 W SQLiteConnectionPool: The connection pool for database '***.db' has been unable to grant a connection to thread 1378 (thread-pool-0) with flags 0x2 for...

低调的成长 2903

zookeeper笔记

zookeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程,zookeeper通过其简单的架构和API解决了这个问题。zookeeper允许开发人员专注于核心业务逻辑开发,而不必担心应用的分布式特性。Curator是Netflix公司开源的一套zookeeper客户端框架,Curator是对zookeeper支持最好的客户端框架。...

kyrielx的博客 3631

【WRF-DART第一期】WRF/DART概述

【WRF-DART第一期】WRF/DART概述

WW、forever的博客 107

GJB 5000B二级-II实施基础

本文主要描述GJB 5000B二级II实施基础与GJB 5000A的变化情况,以及过程域各条款的实施要点

Abel的博客 2581

归纳下Zookeeper 和 storm

最近做完项目后,发线ivan那块的数据分析比较有意思,所以忍不住看了下zookeeper和storm。之前工作的时候搞apache solr也大概开了下zookeeper。 反正也无事,先学习下,毕竟很久没有学新东西。哈哈, 看了之后,觉得还不错,特别归纳下!!

wudelong0112的专栏 172

AUTOSAR进阶图解==>AUTOSAR_EXP_VFB

AUTOSAR虚拟功能总线(VFB)摘要 AUTOSAR虚拟功能总线(VFB)是汽车开放系统架构中的核心抽象概念,为分布式电子系统提供统一通信模型。VFB允许软件组件在不了解底层物理通信机制的情况下交互,通过运行时环境(RTE)实现组件间的数据交换。系统配置过程将抽象的VFB视图转换为具体实现,包括组件到ECU的映射和通信机制选择。VFB采用"last-is-best"语义进行数据通信,并支持模式管理机制,使组件能根据系统状态调整行为。此外,VFB还支持与非AUTOSAR系统的交互,通常

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1117

zookeeper版本更新_Zookeeper归纳

写在开头:本章是zookeeper学习归纳,着重于复习盘点zookeeper的大部分知识点。文章内容输出来源:拉勾教育大数据高薪训练营。1.什么是zookeeper?Zookeeper 是⼀个分布式协调服务的开源框架。 主要⽤来解决分布式集群中应⽤系统的⼀致性问题,例如怎样避免同时操作同⼀数据造成脏读的问题。分布式系统中数据存在⼀致性的问题。2.Zookeeper的数据模型我们需要记忆的知识点:Z...

weixin_39881513的博客 614

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

华为顶级安全专家提交出了Linux+redis+netty+zookeeper归纳笔记

近日,华为又处在了风口浪尖的位置,围绕华为L20首席安全专家为Linux内核提交补丁却被发现漏洞,国内外有了很多的讨论。于是就有一位华为顶级专家提交了这份Linux+redis+netty+zookeeper归纳笔记以平人心,于是就有了下面这份归纳笔记! Linux太难用了(一通鼠标点击,进入/etc) 学习Linux,你忘记Windows的思维方式了吗? 怎么安装软件啊?那一堆文件是干什么的呢? 进入Linux,岁半按了几下,赶紧弄充重启进入win 学习Linux,你用心了吗? 首先,我想引

yuandengta的博客 249

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

HDFS 之Java API归纳(对照Zookeeper的java api)

HDFS 之Java API归纳 1. HDFS访问方式 HDFS和文件IO、mysql、yarn、zookeeper一样,都同时提供了命令行客户端,java api访问方式 mysql、文件IO还有图形化客户端,navicat,图形化操作系统进行文件创建,删除等操作。 2. HDFS的java api汇总 2.1 封装获取FileSystem对象的代码 private static FileSystem getFileSystem() throws URISyntaxException, IOExce

xiaohu21的博客 229

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JDBC java代码归纳(类比Zookeeper代码)

JDBC java代码归纳(类比Zookeeper代码) 1.初始化的代码 在众多框架中,基本都会有命令行客户端和java api提供出来。 mysql的访问,提供了三种方式,一种是图形化客户端如navicat,命令行客户端,java api。当然其他编程语言接口也是有提供api的 以下就是简单的jdbc代码 private static void connectToMySQL() { try { // 1.注册驱动 // DriverMa

xiaohu21的博客 209

Zookeeper重点归纳

第1章 Zookeeper入门 1.1 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。 Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生了变化,Zookeeper就负责通知已经在Zookeeper上注册的那些观察者做出相应的反应.(观察者模式) Zookeeper = 文件系统 + 通知机制 1.2 特点 1.3 数据结构 1.4 应用场景

m0_67991849的博客 129

[kafka]kafka中的zookeeper是做什么的?

前言 ZooKeeper是什么?一个典型的分布式数据一致性解决方案,分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。 kafka中的zookeeper~ Kafka严重依赖于ZooKeeper集群。所有的broker在启动的时候都会往zookeeper进行注册,目的就是选举出一个controller,controller会读取注册上来的从节点的数据(通过监听机制),生成集群的元数据信息,

新一的技术笔记 5485

Zookeeper学习-总结,重点问题归纳

1. ZooKeeper是什么? ZooKeeper是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。 Zookee...

[工仔不是公仔】 238

大数据开发入门之ZooKeeper知识点归纳

在从事大数据开发领域工作的同时,愈发觉得大数据组件实在太多了!!!有时候分不清哪些是重点,为了总结经验和知识点,更深入的了解各大数据架构原理等内容,也为了便于后续继续在该领域的择业过程,特别总结一份最强大数据知识点笔记,用于分别进行各组件内容的学习和记录。本章主要针对的是ZooKeeper相关的内容,后续会不断扩充和总结。加油,大家一起共勉!大家如果有关键核心的ZooKeeper相关的知识点,日常生产中发现的问题,都可以一起沟通下~

qq_43249097的博客 1109

zookeeper全解析归纳总结

转载:https://www.cnblogs.com/raphael5200/p/5285583.html https://www.cnblogs.com/jxhd1/p/6528614.html https://blog.youkuaiyun.com/gaoshan12345678910/article/details/67638657 那么ZK Server最基础的东西是什么呢?我想应该是Paxos...

akunshouyoudou的博客 752

Zookeeper学习笔记

zookeeper基础知识和实践

weixin_51585498的博客 330

e3mall商城的归纳总结2之认识dubbo、zookeeper

由于本项目用的是soa架构,因此必须需要两个系统之间进行通信,目前的解决办法有三种(本人认为) Webservice:效率不高基于soap协议。项目中不推荐使用。 使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。 使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、...

无 332

Zookeeper原理分析

一、基础概念 官方解释: ZooKeeper是面向分布式应用程序的分布式开源协调服务。它公开了一组简单的基元,分布式应用程序可以基于这些基元来实现更高级别的服务,以实现同步,配置维护以及组和命名。它被设计为易于编程,并且使用在文件系统熟悉的目录树结构之后的样式的数据模型。它运行在Java中,并具有Java和C的绑定。协调服务是非常难以正确的。他们特别容易出现诸如竞赛状况和僵局等错误。ZooKe...

sinat_34814635的博客 4998
上一篇: Linux centos7.x安装zookeeper 3.4.6教程
下一篇: HDFS 之Java API归纳(对照Zookeeper的java api)
闻香识代码
博客等级 码龄12年 314粉丝 223原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值