zookeeper梳理二 之 zookeeper的数据模型,运维

    xiaoxiao2021-03-25  188

    接上一篇

    数据模型

    非顺序节点,创建时不能重名顺序节点,创建时可以重名,创建成功后,会在节点名称后面加一个10位的数字临时节点,是靠心跳(定时向zookeeper服务器发送数据包)维系,当客户端出现故障(无法向zookeeper服务器发送数据包),会话过期,或者会话不存在时,zookeeper会删除临时节点永久节点与会话周期无关

    !!!zookeeper watcher一次触发就会失效

    zookeeper运维

    echo conf |  nc ip2181

    echo ruok | nc ip 2181

    echo stat | nc ip 2181

    zookeeper应用场景

    主要的应用场景

    配置管理 ---  解决配置一致性问题 HA问题   ---  解决服务器的故障问题 主从架构 --- 动态master选举 集群管理 ---  实现集群内机器的管控 负载均衡 ---  解决业务的负载均衡 分布式锁  ---  实现分布式锁  排它锁,读写锁, 分布式队列 ---  实现分布式队列 同步队列 先进先出队列

    其实就是用顺序节点来控制时序,用状态节点(start,finish)的创建与销毁来做同步

    监听某一个状态节点,监听孩子节点。。。。。

    具体实现:

    配置管理:监听配置,如果有更新,会得到通知。主从选举:监听孩子节点,孩子节点都是顺序节点,最小号的孩子节点是主,其余节点对父节点设置watch。热备问题:监听集群管理:监控集群中的数量,如果孩子的顺序id=x了,就创建start节点,其余节点监控start节点是否创建,如果创建了,就开始,或者做其它操作。互斥锁:如果节点创建,则不能持有锁,再次创建同样的节点,将会失败。读写锁:锁是顺序的,但是子节点的名字不一样,r,w,每次检查节点负载均衡:需要自己设置负载策略。 例如kafka生产者负载均衡:获取partition下的节点后,排成一个有序的分区列表,默认的策略是发送是轮询,从头到晚反复的选择一个分区来发送消息。kafka消费者负载均衡:每个分区针对一个group只挂载一个消费者,如果一个消费者所属的group在想要消费的分区下已经有子节点,则不能再消费这个分区。 分布式队列 同步队列:控制数量 FIFO队列:由顺序节点控制时序 入队:创建顺序节点 出队:得到父节点的所有孩子,如果自己是最小的孩子则开始消费,删除节点。

    zookeeper小结

    watcher 一次触发就会失效!!!事务日志存储设备性能,建议事务日志和快照分磁盘存储ZNode存储大量数据导致性能问题,建议znode不要存储超过1M数据不要设置很多的watcher,建议优化你的设计,减少watcher数量适合写少,读多的应用场景,如果写,读差不多,建议不要使用zookeeper如果zookeeper集群跨机房,建议每个机房部署至少2台服务器

    转载请注明原文地址: https://ju.6miu.com/read-4875.html

    最新回复(0)