zookeeper学习小节01

mac2022-06-30  16

 

zookeeper的使用:

1.安装zookeeper,并且要知道zookeeper下面的几个主要目录是干什么的。比如说conf、bin、jar等等要复制conf里面的文件,然后改下配置要在vim pro.... 里面添加zk的环境

具体安装zk配置, 请参考该博主的优秀博文  https://www.cnblogs.com/tonylovett/p/5227973.html

 

 补充:启动的时候可能会报错,要检查这几项

a netstat -nltp | grep 2181 如果被占用就-------kill 进程的pidb 通过sudo service iptables status检查防火墙,如果开启就用命令关掉 sudo service iptables stop

 

2.zookeeper的基本数据模型

3.zk的作用提现:(重要概念)A master节点选举模式,主节点挂了以后,从节点(备胎)就会接手工作,并且保证这个节点是唯一的,这也是所谓首脑模式,从而保证我们的集群是高可用的。B 统一配置文件管理,即只需要部署一台服务器,则可以把相同的配置文件同步更新到其他所有服务器,此操作在云计算中用的特别多,(假设修改了redis统一配置)C 发布与订阅,类似消息队列mq,dubbo发布者把数据存在znode节点上,订阅者会读取这个数据。(zk相当于一个中介)D 提供分布式锁,在分布式环境中不同进程(服务器)之间争夺资源,类似于多线程中的锁。 eg:比如说,网盘中有个文件(下面所有的ABCD服务器操作的都是这个文件),A服务器对文件进行读操作,B服务器对文件进行写操作,c服务器删除文件操作,D服务器对文件进行读操作。面对这么多的服务器(并发),文件该听谁的呢?先来后到?还是最后一个先?办法就是加一个锁机制,A服务器在对文件操作的时候,其他的服务器要排队。等A操作完以后,下面的服务器才能做操作。专业的说法就是,A服务器在操作时,其他的服务器阻塞住了,直到A服务器释放了,然后B操作,B释放,然后C操作,C释放.....,以此类推,是一个顺序。

E 集群管理,集群中保证数据的强一致性。 eg:在集群环境中,它的节点都是一致的比如说有三个节点。A是主节点,B是子节点,C是子节点。当我们修改A节点中的数据的时候,zk会使用同步机制,A节点的数据会同步到B节点和C节点中(三个节点数据一模一样)。客户端读取A节点的数据,某天发生了意外,A节点不能继续工作,我们把客户端连接切到B节点,也是能读到数据的。也就是说,不管客户端连接哪台机器,都能都读取数据的,保持数据的一致性。

补充:如何调整好我们的zk配置 才能达到最优了

 

4. 熟悉zookeeper常用命令行操作通过 ./zkCli.sh 打开zk的客户端进行命令行后台,然后helpeg:ls ls / 查看当前节点下面的子节点ls2 查看stat 查出来的东西和ls ls2一样,是他们的整合(节省代码)get get / 把当前节点里面的数据取出来。 aaa是节点名称,123是值create 创建节点(后面跟参数可以创建临时节点,永久节点,瞬时节点)eg: create /aaa 123 -------增create -e 创建临时节点set 修改节点 --------改delete 删除节点 --------删

 

 

5.zk特性-session(客户端到服务端请求的一次会话)session如果过期了,session中的zk里的所有的临时节点znode都会被抛弃。

 

6.zk特性-vatcher机制(重要,需要自己去理解,类似于一个触发器)针对每个节点的操作,都会有一个监督者,就是vatcher

 

7. 理解watch事件

当监控的某个对象(节点)发生了变化,就会触发watcher事件

watcher事件类型一:父节点、子节点 增删改都能触发其watcher。并且增删改的触发事件不同。其中删除父节点,可以设置 delete /节点名称 watch

watcher事件类型二:ls为父节点设置watcher,创建子节点触发: NodeChildrenChanged

ls为父节点设置watcher,删除子节点触发:NodeChildrenChanged

ls为父节点设置watcher,修改子节点不触发事件

补充:比如说aaa是父节点,ccc是子节点 eg: ls /aaa watcher ------------------ls为父节点设置watcher create /aaa/ccc ------------------create 创建子节点 set /aaa/ccc 9090 -----------------改变父节点下面 子节点的值 get /aaa/ccc watch ----------------修改子节点不触发事件.只有这样做才触发。把子节点当做是父节点,删除子节点会触发:NodeDataChanged

 

watcher 使用场景: 1.统一资源配置。 设置了watcher事件后,每一个节点都有vatcher事件,当修改一个节点,剩下的节点都通知客户端进行改变。

 

8. 理解ACL 权限控制特性:针对节点可以设置相关读写等权限,目的为了保障数据安全权限permissions 可以指定不同的权限范围以及角色

ACL使用场景:1.开发、测试人员环境分离,开发者无权操作测试库的节点,只能看

ACL命令行getAcl:获取某个节点的acl权限信息 eg:getAcl /aaa/bbbsetAcl:设置某个节点的acl权限信息addauth :输入认证授权信息,注册时输入明文密码(登陆),但是在zk的系统里,密码是以加密的形式存在的

ACL的构成一:zk的acl通过(scheme id permissions)三个常用来构成权限列表scheme :代表采用的某种权限机制id :代表允许访问的用户permissions :权限组合字符串

ACL的构成二:world:world下只有一个id,即一个用户,创建节点默认的权限是anyone,组合的写法就是--- world:anyone:[permissions]

auth:代表认证登录,需要注册用户有权限就可以,(明文密码)写法为: auth:user:password:[permissions]

digest:需要对密码加密才能访问(两层加密),写法为:digest:username:BASE64(SHA1(password)):[permissions]

ip:当设置为指定的ip地址,此时限制ip进行访问,比如 ip:192.168.1.1:[permissions]

super:代表超级管理员,拥有所有的权限

ACL的构成三:权限字符串缩写 crdwacreate:创建子节点read :获取节点write :设置节点数据delete :删除子节点admin :设置权限

 

eg:setAcl /aaa/bbb world:anyone:crwa 设置子节点的权限为增删改,如果你要删除bbb的值就会报错:Authentication is not valid

 

 

 

9. zookeeper 四字命令之一(常用,不用在指定的目录下运行,在装有zk的服务器上面运行就可以了)stat 查看zk的状态信息 eg: echo stat |nc localhost 2181 --localhost是当前服务器的ip,可以用localhost,也可以用详细ip192.1XXXXXruok 查看当前zkserver是否启动 eg: echo ruok |nc localhost 2181dump 列出未经处理的回话和临时节点 eg: echo dump |nc localhost 2181conf 查看配置的信息 eg: echo conf |nc localhost 2181cons 展示连接到服务器的客户端信息 eg: echo cons |nc localhost 2181envi 环境变量(去查看zk相关的环境变量,把相关的环境变量信息都打印出来) eg:echo envi |nc localhost 2181mntr 监控zk健康信息 eg: echo mntr |nc localhost 2181wchs 查看watches的个数 eg: echo wchs |nc localhost 2181wchc 与 wchp session 与watch及path与watch信息

 

11 zk的集群集群:集群就是当一个节点挂掉是没有关系的,因为有心跳机制(选举模式)

 

 

 

搭建注意点:1.配置数据文件 myid 1/2/3 对应 server.1/2/3 ,最少的集群是3台。

2.通过 ./zkCli.sh -server[ip]:[port] 检测集群是否配置成功

 

转载于:https://www.cnblogs.com/PinkPink/p/9935769.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)