ZooKeeper

目录

一、概念

二、工作机制

三、特点

四、数据结构

五、应用场景

六、选举机制


一、概念

是一个开源的分布式,为分布式框架提供协调服务的Apache项目

结合中间件使用

###作用:

做服务的上线和下线;当某一个节点挂了,它会把它下线;有一个新的节点过来,就会把它上线

二、工作机制

文件系统+通知机制

  1. 当服务器(Kibana)启动时,要去Zookeeper集群中注册信息(告诉别人,我的服务已上线,可以来访问)

  2. 当客户端要访问服务器(Kibana)时,去Zookeeper集群读取服务器的注册信息

  3. 如果服务器正常,Zookeeper会返回信息给客户端

  4. 如果服务器下线了,Zookeeper会告诉客户端,服务器已下线,不用来访问了

缓存/消息队列

**缓存:**大量并发量的一个缓存

消息队列:

  1. 巨大数据接收后,放在共享池中;

  2. 中间件(Tomcat)过来拿数据,每次拿一部分处理;

  3. 消息队列会检测Tomcat,当Tomcat数据处理完之后,会通知Tomcat再来拿数据

三、特点

复制代码
1. Zookeeper:一个领导者,多个跟随着组成的集群;类似一主多从(最少3台服务器)
复制代码
2. Zookeeper集群中,只要有半数以上节点存活,就能正常服务
复制代码
​3. 集群中,服务器数据是一致的
复制代码
​4. 更新请求顺序执行(如果我现在访问3数据,服务断开了,再次连接后,还是会继续访问3数据)
复制代码
​5. 数据原子性
复制代码
​6. 实时性,能读取到最新的数据

四、数据结构

以根划分数据;每个节点叫做Znode;每个Znode能通过统一标识,找到数据

解析:

当访问数据,突然断开时,通过唯一路径标识,重新找到刚刚访问的数据,继续访问

五、应用场景

提供的服务包括:

  1. 统一命名服务

###分布式环境下,设置一个统一的名字,方便记住(百度IP不好记,baidu好记)

  1. 统一配置管理

###分布式环境下,所有节点配置一致,为了将数据快速同步到各个节点上

  1. 统一集群管理

###分布式环境下,掌握每个节点的状态,可根据节点实时状态做调整

  1. 服务器动态上下线

###客户端能实时知道服务器上下线的变化

  1. 软负载均衡

###记录每台服务器的访问数,让访问最少的服务器去处理客户端请求

六、选举机制

复制代码
1.  
    1)服务器1启动后,发起一次选举。   
    2)服务器1投自己一票,此时服务器1只有一票,不够半数以上,选举无法完成    
    3)此时服务器1状态为Looking
复制代码
2.    
    1)服务器2启动,再发起一次选举。    
    2)服务器1和2分别投服务器2一票(服务器更改刚刚投自己的一票)    
    3)此时服务器1为0票;服务器2为2票,没有半数,选举不成功    
    4)此时,服务器1和2状态为Looking
###(为什么1会投2?:因为服务器2的id比服务器1大,所以服务器1会投服务器2)
复制代码
3.     
    1)服务器3启动,发起选举。    
    2)服务器1和2会更改选票,投给服务器3    
    3)此时,服务器3为3票,以超过半数,服务器3当选为领导者    
    4)此时,服务器1和2状态为跟随者,服务器3为领导者
复制代码
4.     
    1)之后服务器启动,会发起选举    
    2)虽然后面的服务器myid都比服务器3大    
    3)但是此时服务器3已经是领导者了,服务器1,2,3不会更改选票信息了    
    4)之后的服务器都将是服务器3的跟随者
相关推荐
NCIN EXPE5 小时前
redis 使用
数据库·redis·缓存
极客on之路5 小时前
mysql explain type 各个字段解释
数据库·mysql
rADu REME5 小时前
探索Spring Cloud Config:构建高可用的配置中心
大数据·elasticsearch·搜索引擎
代码雕刻家5 小时前
MySQL与SQL Server的基本指令
数据库·mysql·sqlserver
lThE ANDE5 小时前
开启mysql的binlog日志
数据库·mysql
hERS EOUS5 小时前
nginx 代理 redis
运维·redis·nginx
xcbrand6 小时前
政府事业机构品牌策划公司找哪家
大数据·人工智能·python
川石课堂软件测试6 小时前
软件测试:典型面试题库
数据库·python·功能测试·mysql·单元测试·grafana·prometheus
NoSi EFUL7 小时前
redis存取list集合
windows·redis·list