栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Day2: zookeeper入门

Day2: zookeeper入门

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/zookeeper
Created /test/zookeeper
[zk: localhost:2181(CONNECTED) 6] set /test 2233
[zk: localhost:2181(CONNECTED) 7] ls -l
org.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 /test
2233

[zk: localhost:2181(CONNECTED) 12] get -s /test
2233
cZxid = 0x4
ctime = Mon Feb 21 21:18:01 CST 2022
mZxid = 0x6
mtime = Mon Feb 21 21:19:04 CST 2022
pZxid = 0x5
cversion = 1
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 4
numChildren = 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开启

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/746155.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号