Zookeeper 的 ZAB 协议 以及 zookeeper 与 nacos 注册中心比对

简介: Zookeeper 的 ZAB 协议 以及 zookeeper 与 nacos 注册中心比对

本文为博主原创,未经允许不得转载:

目录:

  1. ZAB 协议

  2. zookeer 节点状态

  3. zookeeper 注册中心与 nacos 注册中心比较

  4. zookeeper 配置注册中心


1. ZAB 协议

    ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广播协议,实现分布式数据一致性

    所有客户端的请求都是写入到 Leader 进程中,然后,由 Leader 同步到其他节点,称为 Follower。在集群数据同步的过程中,如果出现 Follower 节点崩溃

  或者 Leader 进程崩溃时,都会通过 Zab 协议来保证数据一致性。


  ZAB 协议包括两种基本的模式:崩溃恢复和消息广播。

    消息广播:

      集群中所有的事务请求都由 Leader 节点来处理,其他服务器为 Follower,Leader 将客户端的事务请求转换为事务 Proposal,并且将 Proposal 分发

    给集群中其他所有的 Follower 。完成广播之后,Leader 等待 Follwer 反馈,当有过半数的 Follower 反馈信息后,Leader 将再次向集群内 Follower 广播 Commit 信息,                    Commit 信息就是确认将之前的Proposal 提交。

      Leader 节点的写入是一个两步操作,第一步是广播事务操作,第二步是广播提交操作,其中过半数指的是反馈的节点数 >=N/2+1,N 是全部的 Follower 节点数量。

 

    崩溃恢复:

      初始化集群,刚刚启动的时候Leader 崩溃,因为故障宕机Leader 失去了半数的机器支持,与集群中超过一半的节点断连,此时开启新一轮 Leader 选举,

    选举产生的 Leader 会与过半的 Follower 进行同步,使数据一致,当与过半的机器同步完成后,就退出恢复模式, 然后进入消息广播模式,整个 ZooKeeper

    集群的一致性保证就是在上面两个状态之前切换,当 Leader 服务正常时,就是正常的消息广播模式;当 Leader 不可用时,则进入崩溃恢复模式,崩溃恢复

    阶段会进行数据同步,完成以后,重新进入消息广播阶段。


2.zab节点的三种状态

    following:服从leader的命令

    leading:负责协调事务

    election/looking:选举状态

 

3.zk 和 nacos 的区别

    zk:CP设计(强一致性),目标是一个分布式的协调系统,用于进行资源的统一管理。

      当节点crash后,需要进行leader的选举,在这个期间内,zk服务是不可用的。

 


    nacos:AP设计(高可用),目标是一个服务注册发现系统,专门用于微服务的服务发现注册。

      nacos 各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而 nacos 的客户端在向某个

    nacos 注册时如果发现连接失败,会自动切换至其他节点,只要有一台 nacos 还在,就能保证注册服务可用(保证可用性),只不过查到的信息可

    能不是最新的(不保证强一致性)

 

4. zk 配置注册中心

    1。 引入 zookeeper 服务注册发现的启动类:

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>

 

    2。 spring boot 项目在配置文件中指定注册地址:

#zookeeper 连接地址
spring.cloud.zookeeper.connect-string=localhost:2181
#将本服务注册到zookeeper
spring.cloud.zookeeper.discovery.register=true
spring.cloud.zookeeper.session-timeout=30000

 

 

 

标签: zookeeper

目录
相关文章
|
3月前
|
人工智能 运维 Serverless
函数计算 × MSE Nacos : 轻松托管你的 MCP Server
本文将通过一个具体案例,演示如何基于 MCP Python SDK 开发一个标准的 MCP Server,并将其部署至函数计算。在不修改任何业务代码的前提下,通过控制台简单配置,即可实现该服务自动注册至 MSE Nacos 企业版,并支持后续的动态更新与统一管理。
668 54
|
3月前
|
人工智能 Java API
Nacos 3.1.0 正式发布,支持 A2A 注册中心与 MCP 注册协议增强
3.1.0 发布核心全新功能-Agent 注册中心,助力构建基于 A2A 协议的多 Agent 协作的AI应用,同时 MCP 注册中心适配最新 MCP 官方注册中心协议及升级优化多项核心功能。
798 34
|
3月前
|
消息中间件 分布式计算 资源调度
《聊聊分布式》ZooKeeper与ZAB协议:分布式协调的核心引擎
ZooKeeper是一个开源的分布式协调服务,基于ZAB协议实现数据一致性,提供分布式锁、配置管理、领导者选举等核心功能,具有高可用、强一致和简单易用的特点,广泛应用于Kafka、Hadoop等大型分布式系统中。
|
9月前
|
人工智能 JSON API
Nacos 发布 MCP Registry,实现存量应用接口“0改动”升级到 MCP 协议
MCP(Model Calling Protocol)生态快速发展,Nacos作为MCP Registry,通过与Higress网关结合,实现“0代码”将存量API转化为MCP协议接口。本文详细解析了Nacos如何快速构建MCP Server,包括工具列表暴露、协议转换原理及优势。同时,通过高德API实例演示“0改动”适配流程。Nacos 3.0正式发布,定位AI应用服务管理平台,支持动态服务发现与配置管理,助力MCP生态发展。欢迎参与社区共建!
1587 1
|
存储 算法 Nacos
Nacos支持哪些协议
Nacos支持哪些协议
|
5月前
|
人工智能 Kubernetes Cloud Native
MSE Nacos Controller:为 Kubernetes 生态构建配置管理与服务发现的桥梁
在企业云原生转型过程中,如何实现传统微服务与 Kubernetes 服务的配置统一管理、服务互通及协议转换成为关键挑战。MSE Nacos Controller 应运而生,作为连接 Kubernetes 与 Nacos 的桥梁,支持 ConfigMap 与 Nacos 配置双向同步、服务自动注册发现,并助力 Higress 等 MCP 网关实现 REST API 向 AI 可调用 MCP 服务的转换,全面提升系统治理能力与智能化水平。
451 32
|
12月前
|
负载均衡 Kubernetes 网络协议
注册中心如何选型?Eureka、Zookeeper、Nacos怎么选
这是小卷对分布式系统架构学习的第9篇文章,继续探讨注册中心的原理及选型。文章详细介绍了Eureka、Nacos的工作机制与特点,并对比了Eureka、Nacos、Consul和Zookeeper在一致性协议、健康检查、负载均衡等方面的差异。最后根据不同的应用场景给出了注册中心的选型建议,帮助读者理解如何选择最适合的注册中心。
1003 100
|
9月前
|
存储 安全 Nacos
阿里云 MSE Nacos 发布全新“安全防护”模块,简化安全配置,提升数据保护
阿里云在其微服务引擎(MSE)注册配置中心 Nacos 上正式推出全新“安全防护”功能模块,旨在帮助企业用户有效管理安全状态和降低开启安全相关功能的学习成本,提升微服务架构的安全性。
383 25
|
安全 算法 Java
MSE Nacos 2.3.2.0 发布,性能最多提升三倍,支持操作审计等安全特性
MSE Nacos 是阿里云推出的托管式注册配置中心。它基于阿里云开源产品 Nacos 构建,100% 兼容开源协议,同时在稳定性、安全性、性能、易用性等方面做了增强。不久前,我们发布了 MSE Nacos 2.3.2.0 版本,在性能、安全性方面大幅升级。
391 99
|
存储 缓存 负载均衡
如何设计一个注册中心?以Zookeeper为例
本文介绍了分布式系统中注册中心的设计与工作原理,重点讲解了Zookeeper作为注册中心的实现。注册中心需具备服务注册、注销、心跳检测、服务查询等功能,确保高可用性。Zookeeper通过层次命名空间和znode存储数据,支持服务注册与发现,并采用发布-订阅模式通知消费者服务变更。然而,Zookeeper存在选举期间不可用的问题,不太适合作为注册中心,因其CP模型优先保证一致性而非可用性。
605 78