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好记)

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

3. 统一集群管理
###分布式环境下,掌握每个节点的状态,可根据节点实时状态做调整

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

5. 软负载均衡
###记录每台服务器的访问数,让访问最少的服务器去处理客户端请求

六、选举机制

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的跟随者

相关推荐

  1. ZooKeeper 概述

    2024-04-12 17:50:01       49 阅读
  2. Zookeeper+Kafka概述

    2024-04-12 17:50:01       46 阅读
  3. Zookeeper

    2024-04-12 17:50:01       59 阅读
  4. <span style='color:red;'>ZooKeeper</span>

    ZooKeeper

    2024-04-12 17:50:01      71 阅读
  5. <span style='color:red;'>Zookeeper</span>

    Zookeeper

    2024-04-12 17:50:01      47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 17:50:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 17:50:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 17:50:01       87 阅读
  4. Python语言-面向对象

    2024-04-12 17:50:01       96 阅读

热门阅读

  1. #ifdef __cplusplus语句的作用

    2024-04-12 17:50:01       41 阅读
  2. 字符串排序

    2024-04-12 17:50:01       43 阅读
  3. Python的时间和日期:探索datetime模块

    2024-04-12 17:50:01       94 阅读
  4. Go语言中如何设置channel缓冲区大小

    2024-04-12 17:50:01       40 阅读
  5. 网安基础4-扫描程序

    2024-04-12 17:50:01       46 阅读
  6. HarmonyOS ArkTS 横竖屏设置

    2024-04-12 17:50:01       45 阅读
  7. Linux查看硬件信息

    2024-04-12 17:50:01       36 阅读
  8. TCP/IP协议介绍

    2024-04-12 17:50:01       48 阅读
  9. 前端编译时和运行时(简单易懂快速理解)

    2024-04-12 17:50:01       43 阅读
  10. arm 的system IP有哪些?

    2024-04-12 17:50:01       125 阅读
  11. 碳交易机制下考虑需求响应的优化运行-MATLAB复现

    2024-04-12 17:50:01       36 阅读
  12. Linux命令学习—linux 的文件系统

    2024-04-12 17:50:01       47 阅读
  13. [MySQL] 慢查询

    2024-04-12 17:50:01       50 阅读
  14. Python格式化输出的三种常用方式

    2024-04-12 17:50:01       38 阅读
  15. react中useMemo 钩子函数的使用

    2024-04-12 17:50:01       42 阅读
  16. 滑动窗口和螺旋矩阵(二十天)

    2024-04-12 17:50:01       107 阅读
  17. 人工智能在哪些行业赋能

    2024-04-12 17:50:01       93 阅读
  18. iperf3使用记录

    2024-04-12 17:50:01       41 阅读
  19. C#设计简单的WinForms多窗口应用程序[示例]

    2024-04-12 17:50:01       32 阅读