更新时间:2019年07月26日 10时53分32秒 来源:黑马程序员论坛
1.是什么 设计模式得理解: 是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的主从,一旦这些数据的状态发生改变, Zookeeper 就负责同志已在Zookeeper 上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式 zookeeper = 文件系统+ 通知机制 2.能干嘛: 统一命名服务 (dubbo) 配置维护 集群管理 分布式消息同步和协调机制 负债均衡 对Dubbo的支持 备注 :Zookeeper提供了一套很好的分布式集群管理的机制,就是它基于层次型的目录树的数据结构,并对树种的节点进行有效的管理,从而设计出多种多样的分布式管理模式,作为 分布式调度和沟通的桥梁 1.tickTime : 通信的心跳数,Zookeeper 服务器心跳时间,单位是毫秒 Zookeeper 使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime 时间就会发送一个心跳,时间为毫秒 它用于心跳机制 2.initLimit :LF初始通信时限 10 集群中的follower 跟随者服务器(F) 与leader 领导者服务器(L)之间初始连接时 能容忍的最多时间,用它来限定集群中Zookeeper 服务器连接到Leader 的时限 3.syncLimit: LF 同步通信时限 5 集群中Leader 与Follower 之间通信的最大相应时间单位,加入响应时间超过syncLimit * tickTime ,Leader 认为Follwer 死掉,从服务器列表中删除Follwer 4.dataDir: 数据文件目录,+数据持久化路径 5.clientPort:端口号 2、zookeeper 入门 create -e -s ls / ls2 / get /zookeeper set delete rmr 1.查看+获得zookeeper 的服务器上的数据存储信息 ls 2.文件系统: zookeeper 维护了一个类似文件系统的数据结构 类似于windows 的注册表, 有名称, 有树节点,有key(键)/value(值)对的关系 可以看做一个树形结构的数据库 ,分布在不同的机器上做名称管理 3.初始Zode 节点 Zookeeper 数据结构与Unix 文件系统类似,整体上可以看作一棵树,每个节点称为一个ZNode ,我很显然,zookeeper集群自身维护了一套数据结构。 整个存储结构是一个树形结构,每一个Znode 默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识 3、深入Zode Znode的结构模型: 1、Zookeeper 的Stat 结构体 Znode 维护了一个stat 结构,这个stat 包含数据变化的版本号,访问控制列表变化,还有时间戳,版本号和时间戳一起, 可让Zookeeper 验证缓存和协调更新,每个znode数据发生了变化,版本号就增加 例如:无论何时客户端解索数据,它也一起检索数据的版本号,并且当客户端执行更新或删除时,客户端必须提供他正在改变的znode 版本号,如果它提供的版本号和真实的版本号不一致,更新会失败 czxid:引起这个znode创建的zxid,创建节点的事务zxid,为了保证顺序性 zkid :必须单调递增。因此Zookeeper使用一个64位的数来表示,高32位是Leader的epoch,从1开始,每次选出新的Leader,epoch加一。 低32位为该epoch内的序号,每次epoch变化,都将低32位的序号重置。这样保证了zkid的全局递增性。 ctime :zode被创建的毫秒数(1970年开始) mzxid:znode最后更新的zxid mtime: znode 最后被修改的时间 pzxid :znode最后更新的子节点zxid 小结:Zookeeper 内部维护了一套类似于UNix的树形结构,由Znode 构成的集合,每一个znode由多个树形进行描述 Znode 存在的類型 -e -s PERSISTENT 持久化目录节点 PERSISTENT_SEQUENTIAL 持久化顺序编号目录节点 EPHEMERAL 临时目录节点 EPHEMERAL SEQUENTIAL 临时顺序编号目录节点 小结:zookeeper的一个节点对应一个应用,节点存储的数据就是应用需要的配置信息 watch : 数据观察 和 节点观察 1. 客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变,删除,子节点增加,zookeeper 会通知客户端) 2.zookeeper 支持watch(观察)的概念,客户端可以在每个znode节点上设置一个观察,如果被观察服务端的znode节点有变更,那么watch就会被触发, 这个watch所属的客户端将收到一个通知包被告知哪个节点发生了变化,把相应的时间通知给设置watcher的client 端 在getData() ,getChildren() 和exists()都有设置watch的选项 异步回调触发机制 特征: 1.一次触发 2.发送客户端 异步,Zookeeper 提供一个顺序保证,在watch事件之前绝不会看到变化,这样不同客户端看到的是一致性顺序 3.为数据设置watch 4.时序性和一致性 3.编辑zoo.cfg 4.在各自mydata下创建myid,在里边写入server 数字 5.分别启动三个服务器 6.zkCli连接server,带参数指定-server |
推荐了解热门学科
java培训 | Python人工智能 | Web前端培训 | PHP培训 |
区块链培训 | 影视制作培训 | C++培训 | 产品经理培训 |
UI设计培训 | 新媒体培训 | 产品经理培训 | Linux运维 |
大数据培训 | 智能机器人软件开发 |
传智播客是一家致力于培养高素质软件开发人才的科技公司,“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。
传智播客从未停止思考
传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”
中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。
何为中高级程序员课程?
传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展。“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。
黑马程序员热门视频教程【点击播放】
Python入门教程完整版(懂中文就能学会) | 零起点打开Java世界的大门 |
C++| 匠心之作 从0到1入门学编程 | PHP|零基础入门开发者编程核心技术 |
Web前端入门教程_Web前端html+css+JavaScript | 软件测试入门到精通 |