问题365网经验知识百科全书!

Day2:zookeeper入门

0次浏览 | 2023-04-08 11:18:13
来源 :daniel
zookeeper

安装zookeeper

Zookeeper

zookeeper能做什么

zookeeper是一种分布式协调服务,用于管理大型主机,在分布式系统中管理和协调服务是一个复杂的过程,zookeeper允许开发人员专注于应用程序的设计,而不用担心应用的分布式特性

分布式协调组件

当通过nginx进行负载均衡时,此时服务A-1,A-2是冗余存储的,flag都为true,当A-2的值修改为false时,此时A-1与A-2的数据就不一致了,这时ZK就可以修改A-1中的数据,让服务之间的数据保持一致实现无状态

当用户的登陆请求传到A服务器时,别的冗余服务器并没有A的登录信息,此时就可以把登录信息传到zookeeper上,而无需冗余存储每个用户的登录状态(类似于分布式session) 搭建zookeeper服务器


zoo.cfg配置文件说明
zookeeper需要依赖conf/zoo.cfg才能启动

tickTime=2000 发送心跳包的间隔时间(ms),也是别的配置项的基础单位 initLimit=10 容忍follow初始化连接到leader的最大心跳数syncLimit=5 follower与leader同步的最大心跳数dataDir=/temp/data zookeeper数据存储目录及日志保存目录(如果不指定dataLogDir,则日志也保存在这个文件夹下)clientPort=2181 与客户端连接的端口maxClientCnxns=60 单个客户端与zookeeper最大并发连接数

zookeeper服务端命令

./zkServer.sh start ./conf/zoo.cfg [主机地址] 启动zookeeper服务./zkServer.sh stop./conf/zoo.cfg 关闭zookeeper服务 ./zkServer.sh status./conf/zoo.cfg 查看指定zookeeper状态root@agoiyanzsa-PC:/opt/apache-zookeeper-3.6.3-bin/bin# ./zkCli.sh [主机地址] 连接ZK

zookeeper内部数据模型

保存数据的方式

ZK的文件结构类似于树,它的数据是保存在节点上的,ZK的节点称为ZNode,每一个ZNode有一个名称标识,并用路径(/)序列分隔。

在图中,首先有一个由“/”分隔的znode。在根目录下,你有两个逻辑命名空间** config ** 和** workers ** 。

config 命名空间用于集中式配置管理,workers 命名空间用于命名。

在config命名空间下,每个znode最多可存储1MB的数据。这与UNIX文件系统相类似,除了父znode也可以存储数据。这种结构的主要目的是存储同步数据并描述znode的元数据。此结构称为ZooKeeper数据模型。

基础操作 help获取帮助[zk: localhost:2181(CONNECTED) 5] create /test/zookeeperCreated /test/zookeeper[zk: localhost:2181(CONNECTED) 6] set /test 2233[zk: localhost:2181(CONNECTED) 7] ls -lorg.apache.commons.cli.UnrecognizedOptionException: Unrecognized option: -l[zk: localhost:2181(CONNECTED) 8] ls /[test, zookeeper][zk: localhost:2181(CONNECTED) 9] ls /test[zookeeper][zk: localhost:2181(CONNECTED) 10] get /test2233[zk: localhost:2181(CONNECTED) 12] get -s /test2233cZxid = 0x4ctime = Mon Feb 21 21:18:01 CST 2022mZxid = 0x6mtime = Mon Feb 21 21:19:04 CST 2022pZxid = 0x5cversion = 1dataVersion = 1aclVersion = 0ephemeralOwner = 0x0dataLength = 4numChildren = 1

znode

Znode兼具文件和目录两种特点。既像文件一样维护着数据长度、元信息、ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。每个Znode由四个部分组成:

stat :此为状态信息,描述该Znode版本、权限等信息。

acl: 简单的说就是增删改查自身和子节点(cwrda)的操作权限定义

data :与该Znode关联的数据

child :该Znode下的节点

版本号 - 每个znode都有版本号,这意味着每当与znode相关联的数据发生变化时,其对应的版本号也会增加。当多个zookeeper客户端尝试在同一znode上执行操作时,版本号的使用就很重要。操作控制列表(ACL) - ACL基本上是访问znode的认证机制。它管理所有znode读取和写入操作。时间戳 - 时间戳表示创建和修改znode所经过的时间。它通常以毫秒为单位。ZooKeeper从“事务ID"(zxid)标识znode的每个更改。Zxid是唯一的,并且为每个事务保留时间,以便你可以轻松地确定从一个请求到另一个请求所经过的时间。数据长度 - 存储在znode中的数据总量是数据长度。你最多可以存储1MB的数据。

znode的类型

持久节点 - 即使在创建该特定znode的客户端断开连接后,持久节点仍然存在。默认情况下,除非另有说明,否则所有持久节点都是持久的。临时节点 - 客户端活跃时,临时节点就是有效的。当客户端与ZooKeeper集合断开连接时,临时节点会自动删除。因此,只有临时节点不允许有子节点。如果临时节点被删除,则下一个合适的节点将填充其位置。临时节点在leader选举中起着重要作用。这个特性也可以实现服务的注册与发现
创建临时节点 create -e顺序节点 - 顺序节点可以是持久的或临时的。当一个新的znode被创建为一个顺序节点时,ZooKeeper通过将10位的序列号附加到原始名称来设置znode的路径。例如,如果将具有路径/myapp的znode创建为顺序节点,则ZooKeeper会将路径更改为/myapp0000000001,并将下一个序列号设置为0000000002。如果两个顺序节点是同时创建的,那么ZooKeeper不会对每个znode使用相同的数字。顺序节点在锁定和同步中起重要作用。可以利用自增特性实现分布式锁
创建顺序节点 create -s临时顺序节点container(容器节点) - 当容器中没有任何子节点,该节点会被ZK定期删除(60s)TTL节点 - 可以被指定到期时间,到期时ZK会删除它,只能通过zookeeper.extendTypesEnabled=true开启

电脑键盘属于哪类垃圾
一般来说电脑键盘是属于可回收的垃圾,由于它的主要材质是塑料制品,而类似于纸类、硬纸板、玻璃、塑料、金属、塑料包装等物品都属于可回收的垃圾,主要是为了增加材料的利用总体
Hive报错ERRORtool.ImportTool:Importfailed:java.io.IOException:HiveCliDriverexitedwithstatus=1
使用Sqoop将MySQL的数据导入到Hive中报错: ERROR tool.ImportTool: Import failed: java.io.IOException: Hive CliDriver exited with status=1 参考解决方案: https
Day2:zookeeper入门
zookeeper 安装zookeeper Zookeeper zookeeper能做什么 zookeeper是一种分布式协调服务,用于管理大型主机,在分布式系统中管理和协调服务是一个复杂的过程,z
Android中WebView使用LoadUrl不刷新网页的问题,网址带#只能通过reload刷新
文章目录 项目场景:问题描述原因分析结论参考材料 可以直接快进到结论部分 项目场景: 最近在和其他公司沟通联调H5的时候,意外发现对方发过来的地址可以加载,但是没有办法正
369问题网
免责声明:问题365网所有文字、图片、视频、音频等资料均来自互联网,不代表本站赞同其观点,内容仅代表作者本人意见,若因此产生任何纠纷作者本人负责,本站亦不为其版权负责! 如有问题,请联系我们
CopyRight©1999-2022 www.wt369.net/ All Right Reserved