Blage's Coding Blage's Coding
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
  • SpringCloudAlibaba

    • Nacos

    • Dubbo

    • Zookeeper

      • Zookeeper基础
        • 一、什么是Zookeeper?
        • 二、Zookeeper节点类型?
        • 三、Zookeeper集群分为几种角色?怎么保证主从节点状态同步?
        • 四、znode节点的监听机制?
        • 五、什么是Zookeeper命名服务?
    • Sentinel

    • Seata

  • MQ消息队列

  • Nginx

  • Elasticsearch

  • Gateway

  • Xxl-job

  • Feign

  • Eureka

  • 中间件
  • SpringCloudAlibaba
  • Zookeeper
phan
2023-05-16
目录

Zookeeper基础

# Zookeeper基础

# 一、什么是Zookeeper?

Zookeeper=文件系统+监听通知机制,用来解决分布式应用中的数据管理问题。比如让多个客户端都登记注册在一个目录节点,其中放着客户端的配置信息,当目录节点发生变化,zookeeper就可以通过watcher动态通知客户端进行响应的处理。(实际上是一种观察者模式) 在这里插入图片描述

# 二、Zookeeper节点类型?

1.持久化节点:客户端与Zookeeper断开连接后,该节点依旧存在。

持久化顺序编号节点:Zookeeper会给持久化节点进行顺序编号。

2.临时节点:客户端与Zookeeper断开连接后该节点删除。

临时顺序编号节点:Zookeeper给临时节点编号

注意同一个Zookeeper的znode目录下,节点名称是唯一的。(类似于文件系统同一个目录下文件名唯一)分布式锁实现方式就是基于这个机制。

# 三、Zookeeper集群分为几种角色?怎么保证主从节点状态同步?

1.leader:事务请求的唯一处理者,只能由leader处理写请求。

follower:对于事务请求把它转发给leader;Leader执行事务时进行投票

2.Zookeeper通过ZAB协议保证主从一致性。分为两个模式:

①恢复模式:当leader主机宕机或者leader主机和过半follower失去联系。这时候需要重新选举新的leader,然后把leader数据同步到各个follower节点。

选举机制:首先一开始每个服务器都投自己为leader,然后把投票发给各个服务器。服务器收到其它的投票后会与自己的投票进行PK(检查两个id变量)。每次投票都会统计,有超过一半的服务器收到相同的投票,那么该投票的候选人就会成为新的leader。

②广播模式:客户端发起一个写操作请求后,leader会转换一个事务并给其分配一个全局ID(保证消息处理顺序),会把这个事务通过队列发送到每个follower,每个follower从队列中取出并处理完事务后,会发送一个ACK给leader;当leader收到超过半数的ACK后,就会给所有follower发送commit将前一个事务提交(包括自己的事务)。

因为只是过半的ACK,因此不能保证强一致性。 在这里插入图片描述

# 四、znode节点的监听机制?

客户端在服务端znode节点上注册一个Watcher监听器,当znode节点发生变化时,就会触发znode的注册时间,客户端就会收到znode节点改变的异步通知,然后做出对应业务的改变。

# 五、什么是Zookeeper命名服务?

1.比如一个znode下有一个生产者节点和一个消费者节点,生产者节点可以把资源的名字或者地址放到znode下完成服务的发布,然后消费者可以通过znode节点读取该资源路径访问。其中Zookeeper会定时检查资源路径是否失效,并动态通知生产者和消费者。

编辑 (opens new window)
#中间件#SpringCloudAlibaba
上次更新: 2023/12/15, 15:49:57
Dubbo泛化调用
Sentinel基础

← Dubbo泛化调用 Sentinel基础→

Theme by Vdoing | Copyright © 2023-2024 blageCoder
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式