zookeeper学习笔记1

zookeeper是一种c/s架构设计的一种应用于分布式服务的一种协调的中间框架,能够实现服务的统一配置管理,统一命名服务,分布式锁,集群状态管理。能够对分布式服务的节点进行有效的管理,比如监控节点的状态,对节点进行集中统一管理,而作为一种解决问题的中间件存在。从设计模式的角度出发,它是基于观察者模式而设计的,其实就是文件系统加上通知机制。

zookeeper是一种类似于文件系统的树状结构,有节点和子节点的概念,每一个节点默认能够存储1MB的数据,不能实现海量数据的存储,每个znode都可以通过唯一路径标识,而节点根据其时效性可以分为:永久节点和临时节点,(根据客户端与服务端断开连接后节点是否还存在进行划分)根据其是否有序可以分为:普通节点和带顺序号节点。 还有监听器这个角色,通过监听器配合节点才能实现它的丰富的功能,监听器有两种监听场景:1,监听znode节点中数据的变化,2监听znode节点的子节点的增加或者删除的变化。下面说一下他大致如何实现上述的功能。

一、统一配置管理

假如现在有三个系统,他们各自有自己的配置文件,如果需要更改需要去编写源代码的配置文件,再把系统服务重启,很浪费效率,现在使用zookeeper就可以这样实现:我把这三个系统的配置文件的共同部分提取出来存入一个znode中(/common),然后a,b,c三个系统分别去监听/common节点(watch),一旦发现变化及时响应给系统。

二、统一命名服务

比如我现在网站域名是:www.chenzhipeng.com,我部署了服务器集群,:192.168.64.1,192.168.64.2,192.168.64.3,192.168.64.4,同时创建一个新的节点/www.chenzhipeng.com,把这四个地址存入该节点,有系统访问就可以直接去访问我的域名。

三、分布式锁

  现在我有3个线程A,B,C需要访问一份共享的数据,可是线程之间是不通的,无法进行锁控制,我就把这份共享数据存在zookeeper的/lock节点中,当这三个线程去访问该节点的时候需要先创建一个临时的有顺序号的子节点,然后判断自己是不是顺序号最小的那个节点,如果是就获得锁可以访问数据,如果不是就监听顺序号比你小1的节点的状态,访问完数据删除自己的子节点,剩下的线程再继续判断。

四、集群状态管理

  假如是部署一个集群需要监控集群中每个节点的健康状态,则可以每启动一个服务器就在zookeeper的/cluster节点的下面创建一个临时的带顺序号的子节点,同时配置一个监听器监听/cluster节点下面子节点的增删,如果是主从架构还可以实现故障转移自动选主,如果主节点master挂了,那么zookeeper中的对应节点也会被删除,剩下的节点通过比较自己的顺序号大小选举最小的那个成为主节点。

五、软负载均衡

 在服务域名节点下的ip地址子节点,可以记录每个IP的访问次数,再有client过来请求IP的时候,判断一下请求次数少的进行分配,提供一种类似nginx 的负载均衡。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值