Zookeeper和Nacos的区别

2023-11-18

Zookeeper和Nacos的区别

在分布式系统中,注册中心充当着重要角色,是服务发现、客户端负载均衡中不可缺少的一员。注册中心除了能够实现基本的功能外,他的稳定性、可用性和健壮性对整个分布式系统的流畅运行影响重大。zookeeper和nacos可能是最常使用的方式。

Zookeeper

  • Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高。
  • Zookeeper的功能主要是它的树形节点来实现的。当有数据变化的时候或者节点过期的时候,会通过事件触发通知对应的客户端数据变化了,然后客户端再请求zookeeper获取最新数据,采用push-pull来做数据更新。服务注册和消费信息直接存储在zk树形节点上,集群下采用过半机制保证服务节点间一致性。
  • **Zookeeper主要是用来协调服务的,不用来存储业务数据。**ZNode的数据大小最大是1M
  • **消息广播:**集群中zk在数据更新的时候,通过leader节点将将消息广播给其他follower节点,采用简单的两阶段提交模式,先request->ack->commit,当超过一半的follower节点响应可以提交就更新代码。
  • 崩溃恢复: 当leader不可用时,或者超半数follower投票得出leader不可用,那么会重新选举,这段期间zk服务是不可用的。通过最新的 xid来选举出新的leader,选举出来后需要将新的leader中的数据更新给超过半数的follower节点才能对外提供服务。
  • zookeeper是个CP系统,强一致性。(集群leader挂了会重新选举,此时暂停对外服务)。Zookeeper是通过TCP的心跳判断服务是否可用。

Nacos

  • Nacos 是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理。Nacos 是 Dubbo 生态系统中重要的注册中心实现。
  • Nacos的配置中心和注册中心实现的是两套代码。Nacos依赖Mysql数据库做数据存储,当有数据更新的时候,直接更新数据库的数据,然后将数据更新的信息异步广播给Nacos集群中所有服务节点数据变更,在由Nacos服务节点更新本地缓存,然后将通知客户端节点数据变化。
  • Nacos支持两种方式的注册中心,持久化和非持久化存储服务信息
  • 非持久直接存储在nacos服务节点的内存中,并且服务节点间采用去中心化的思想,服务节点采用hash分片存储注册信息。
  • 持久化使用Raft协议选举master节点,同样采用过半机制将数据存储在leader节点上。
  • Nacos保证了P,官方推荐使用A,即AP,保证其高可用
  • AP模式下服务以临时实例注册,CP模式下服务以永久实例注册,Nacos集成了配置中心的功能。
  • Nacos同时实现CP以及AP两种数据的一致性策略,其实在一个组件中,同时实现两种数据一致性策略,这样在做服务注册中心选型时,就不必操心AP选什么组件,CP选什么组件,直接采用nacos就好了,同时满足你AP以及CP的数据一致性需求,即直接在一个组件中,享受Zookeeper以及Eureka组件的服务,避免了需要同时维护两种不同的组件的运维代价,只需要根据自己的实例需求,选择不同的注册模式即可。

关于C、A、P三者的定义:

  • Consistency : Every read receives the most recent write or an error
    Availability : Every request receives a (non-error) response – without the guarantee that it contains the most recent write
    Partition tolerance : The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes
    
  • ①一致性:对于客户端的每次读操作,要么读到的是最新的数据,要么读取失败。换句话说,一致性是站在分布式系统的角度,对访问本系统的客户端的一种承诺:要么我给您返回一个错误,要么我给你返回绝对一致的最新数据,不难看出,其强调的是数据正确。

  • ②可用性:任何客户端的请求都能得到响应数据,不会出现响应错误。换句话说,可用性是站在分布式系统的角度,对访问本系统的客户的另一种承诺:我一定会给您返回数据,不会给你返回错误,但不保证数据最新,强调的是不出错。

  • ③分区容忍性:由于分布式系统通过网络进行通信,网络是不可靠的。当任意数量的消息丢失或延迟到达时,系统仍会继续提供服务,不会挂掉。换句话说,分区容忍性是站在分布式系统的角度,对访问本系统的客户端的再一种承诺:我会一直运行,不管我的内部出现何种数据同步问题,强调的是不挂掉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Zookeeper和Nacos的区别 的相关文章

  • 连接远程redis服务器

    我想对 redis conf 进行一些更改 以便每当我输入 redis cli 时 它都会将我连接到远程服务器上安装的 redis 我知道我们可以通过以下方式连接到安装在远程服务器上的redis redis cli h IP Address
  • ruby redis 客户端扫描与密钥

    我正在寻找一些有关 redis 的 ruby 客户端的文档 但没有成功 我正在使用密钥 但我听说它们在生产 redis 中的性能很糟糕 redis Redis new host Settings redis host port Settin
  • 即使增加超时后,stackexchange.redis 也会抛出超时?

    尝试从缓存中删除时出现以下错误 Timeout performing DEL test com inst 0 mgr ExecuteSelect err never queue 0 qu 0 qs 0 qc 0 wr 0 wq 0 in 0
  • Redis - 考虑重命名其中一个 bean 或通过设置 spring.main.allow-bean-definition-overriding=true 来启用覆盖

    我正在开发Spring Boot Spring Data Redis例子 在此示例中 我正在开发以下代码RedisMessageListenerContainer并在这里定义相应的bean 现在 当我运行该应用程序时 出现以下错误 有人可以
  • 是否可以使用带有 FUSE 文件系统的 Linux VFS 缓存?

    默认情况下 Linux VFS 缓存似乎不适用于 FUSE 文件系统 例如 read 调用似乎被系统地转发到 FUSE 文件系统 我在 FUSE 特定的远程文件系统上工作 我需要一个非常积极的缓存 我需要实现自己的页面缓存吗 或者是否可以为
  • Redis多插入问题

    我尝试多次插入 但它给了我错误 http pastie org 7337421 http pastie org 7337421 cat mass insert txt 3 r n 3 r nSET r n 3 r nkey r n 5 r
  • Redis 写入 .ssh/authorized_keys

    当前设置 2 个主服务器 12 个工作服务器 工作人员通过 ssh copy id 连接到主设备 主设备和工作人员正在主设备上的 redis 队列中写入数据 过去一周我遇到的问题是 Redis 正在将数据写入authorized keys
  • 如何清理redis中不活跃的玩家?

    我正在制作一个使用 redis 来存储游戏状态的游戏 它可以很好地跟踪位置和玩家 但我没有一个好的方法来清理不活跃的玩家 每当玩家移动时 这是一个半慢速移动游戏 想想每秒 1 5 帧 我就会用新位置更新哈希并删除旧位置键 跟踪活跃玩家的最佳
  • 如何在redis中创建自己的数据库?

    There are 0 to 15 databases in redis 我想使用 redis cli 创建自己的数据库 有什么命令可以实现吗 Redis 数据库并不等同于 MySQL 等 DBMS 中的数据库名称 这是一种为键创建隔离和命
  • 使用brew在MacOSx上安装Redis JSON

    如何使用brew 在 macOSx 上安装 RedisJSON 如何在不编译redis的情况下启用redis上的模块 我不想使用 docker 客户端 Redis Stack 可能是最简单的方法 它不仅仅是 RedisJSON 还包括 Re
  • Redis 块推送直到列表有空位

    我正在寻找类似的东西BLPUSH该命令将阻塞 直到列表的长度低于指定值max size 目的是防止生产者运行速度快于消费者时列表无限增长 功能与 python 非常相似Queue put https docs python org 3 li
  • Stackexchange.redis 缺乏“WAIT”支持

    我在客户端应用程序正在使用的负载均衡器后面有 3 个 Web API 服务器 我正在使用这个库来访问具有一个主服务器和几个从服务器的 Redis 集群 目前不支持 WAIT 操作 我需要此功能来存储新创建的用户会话并等待它复制到所有从属服务
  • 如何设置 Celery 以通过 ssl 与 Azure Redis 实例对话

    使用 的伟大答案 如何在microsoft azure上的django项目中配置celery redis https stackoverflow com questions 39616701 how to configure celery
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127
  • 从redis中检索大数据集

    一台服务器上的应用程序查询另一台服务器上运行的 Redis 查询的结果数据集约为 250kzrangebyscore objects locations inf inf这在应用程序服务器上似乎需要 40 秒 当使用命令执行时redis cl
  • 通过 StackExchange.Redis 连接到 Redis Servier

    我尝试使用以下方法制作一个测试项目Redis https redis io服务器 通过 Virtual Box 安装在 Linux Ubuntu 虚拟机上 Linux 机器通过 Virtual Box 的桥接适配器与本地网络连接 Virtu
  • 如何将node.js管道传输到redis?

    我有很多数据要插入 SET INCR 到redis DB 所以我正在寻找pipeline http redis io topics pipelining 质量插入 http redis io topics mass insert通过node
  • SignalR 无法连接到 SSL 上的 Azure Redis

    我目前在 Azure 上托管我的 redis 缓存服务器 并让 signalR 依赖它作为骨干 使用以下内容 GlobalHost DependencyResolver UseRedis 服务器 端口 密码 eventKey 这可以在端口
  • Redis SYNC 套接字上的错误情况:连接被拒绝

    在我的 django 应用程序中使用 celery 和 redis 一切都工作正常 直到我遇到了问题 redis 文件的位置已更改 redis 无法访问它们 经过查找 原来这是由于网络随机攻击造成的 需要添加confg 我添加文件后 一段时
  • socket.io 广播功能 & Redis pub/sub 架构

    如果有人能帮助我解决一个小疑问 我将不胜感激 使用socket io广播功能和在Redis上使用pub sub设计架构有什么区别 例如 在另一个示例中 node js 服务器正在侦听 socket io 针对 键 模型 todo 和值 数据

随机推荐

  • c++ 打印当前时间(精确到毫秒)

    打印时间精确到毫秒好实现 但是那种对用户可读性不好 更适合开头记一次结尾记一次 打印中间减出来的程序运行时间 但是因为一些情况 我开多线程开的不方便打印结束时间 同事跟我说那你把开始时间打印一下 结束他自己接受那边打印 最好精确到毫秒 那就
  • (电赛电源方向)怎么样从零开始准备全国大学生电子设计竞赛

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 电赛是什么 二 电源方向是什么 三 该怎么去学习电源方向的知识 1 博主的劝诫 2 硬件该准备些什么 3 软件该准备些什么 总结 前言 我建了一个群 分享
  • selenium 常用操作总结

    谷歌驱动下载 http chromedriver storage googleapis com index html 参数设置options opt Options opt add argument headless 无头模式 opt ad
  • 在腾讯连拿六个五星

    刚毕业入职腾讯工作 2 3 年 半年 年终绩效每次都是 5 4 星 不一定年薪百万 主要薪资 奖金无法决定 这个取决于股票是否上涨不少 但晋升肯定是最快的 在阿里拿 375 跟在腾讯拿 5 4 星的比例差不多 应届毕业能拿一次确实很优秀了
  • 15. unity官网资源商店的免费资源引入自己项目中

    1 说明 在unity开发中可以在官网引入一些免费的资源 免得自己找不到合适的素材 第一步 首先进入Unity资源商店官网 https assetstore unity com 计入并登录自己的unity账号 如果没账号 可以注册一个 然后
  • Fisco Bcos区块链五(WeBase结点前置服务)

    文章目录 区块链开荒 技术文档 https webasedoc readthedocs io zh CN latest docs WeBASE Front install html 三 WeBase节点前置服务 1 前提条件 2 拉取代码
  • AIGC驱动产品开发创新,改变你所知的一切!

    你是否想过 3000年后的饮料是什么味道 9月12日 可口可乐全球创意平台 乐创无界 再度推出全新限定产品 首款联合人工智能 AI 打造的无糖可口可乐 未来3000年 从口味研发到包装设计都体现了AI的深度参与打造 Y3000与AI共创这一
  • 实战: 跨年烟花代码的实现(附源码)

    目录 前言 一 pandas是什么 二 代码结构 1 介绍主html代码 2 js文件介绍 GameCanvas js script js 运行效果 前言 本文章将介绍跨年烟花代码的实现以及源代码 提示 以下是本篇文章正文内容 一 pand
  • 关于security权限的坑

    遇到了一个spring security的坑 分享给大家 首先介绍一下项目 spring boot 整合security 配合做权限与认证 如果数据库权限是ROLE USER 比如 那么在Security配置文件里 权限必须写出USER 也
  • 如何在vue 中使用 sass

    传送门
  • python中协程实现的本质以及两个封装协程模块greenle、gevent

    协程 协程 又称微线程 纤程 英文名Coroutine 协程是啥 协程是python个中另外一种实现多任务的方式 只不过比线程更小占用更小执行单元 理解为需要的资源 为啥说它是一个执行单元 因为它自带CPU上下文 这样只要在合适的时机 我们
  • Fun论设计模式之2:代理模式(Proxy Pattern)

    今天学习到了一个新的设计模式 代理模式 介绍借鉴了runoob的 意图 为其他对象提供一种代理以控制对这个对象的访问 主要解决 在直接访问对象时带来的问题 比如说 要访问的对象在远程的机器上 在面向对象系统中 有些对象由于某些原因 比如对象
  • LeetCode刷题-9

    数组 119 杨辉三角 II 题目描述 题目样例 Java方法 线性递推 思路及算法 代码 复杂度 题目描述 给定一个非负索引 rowIndex 返回 杨辉三角 的第 rowIndex 行 在 杨辉三角 中 每个数是它左上方和右上方的数的和
  • 训练后的网络输出为固定值

    缘起 之前训练好的网络 但是为了硬件移植 其中某些操作需要删除 那么简单 替换一些硬件不支持的操作 重新训练一下就好了 毕竟训练集 数据导入方式 训练代码 测试代码之前都验证了没有什么问题 但是问题来了 简单的训练一次 居然出现了输出结果成
  • jquery显示和隐藏 切换

  • 华硕笔记本没有无线服务器,华硕电脑搜不到wifi怎么回事

    华硕电脑搜不到wifi怎么回事 可能还有些网友不太了解 那么下面就由学习啦小编给你们介绍华硕电脑搜不到wifi的原因及解决方法吧 希望能帮到大家哦 华硕电脑搜不到wifi的解决分析一 1 首先点击桌面右下角的无线网络图标 打开网络和共享中心
  • shell 命令之wc

    wc命令很简单 就是统计指定文件中的字节数 字数 行数 并将统计结果显示输出 其命令及参数如下 wc lcmw file c 统计字节数 l 统计行数 m 统计字符数 如果本地不支持多字节字符 则和 c一样的效果 w 统计字数 一个字被定义
  • python 格式化

    一 格式化方式 1 使用 进行格式化 2 使用f str 进行格式化 3 使用str format进行格式化 二 格式化的使用 1 使用 进行格式化 定义以下变量 name Tom age 17 weight 58 9871 book 10
  • python装饰器计算函数运行时间

    import time from functools import wraps import random def fn timer function wraps function def function timer args kwarg
  • Zookeeper和Nacos的区别

    Zookeeper和Nacos的区别 在分布式系统中 注册中心充当着重要角色 是服务发现 客户端负载均衡中不可缺少的一员 注册中心除了能够实现基本的功能外 他的稳定性 可用性和健壮性对整个分布式系统的流畅运行影响重大 zookeeper和n