Zookeeper和Nacos的区别

2023-11-16

目录

Zookeeper

1.ZK结构

2.ZK的消息广播和崩溃恢复

Nacos

1.存储和数据更新

2.注册中心


 

Zookeeper

1.ZK结构

Zookeeper的功能主要是通过它的树形节点来实现的,当有节点数据变化时或者说节点过期的时候会通过事件触发通知对应的客户端数据变化了,然后客户端再请求zk获取最新数据,采用push-pull来做数据更新

2.ZK的消息广播和崩溃恢复

1.Client和Server是通过NIO的方式通信的

(55条消息) NIO学习_Fairy要carry的博客-CSDN博客

(55条消息) 为什么NIO比BIO效率高_Fairy要carry的博客-CSDN博客_nio比bio优势

2.消息时FIFO方式执行的(先进先出)

3.读消息可通过zk的leader和所有follower

4.写消息必须通过leader

消息广播主要是两段机制:1.当客户端接收到请求后,follower会先将请求给到leader,2.然后我们的leader进行处理生成Proposal——>3.发送给follower(收到过半follower针对这个Proposal的消息)——>leader让follower进行提交

(55条消息) zookeeper Zab协议—消息广播_L25809的博客-CSDN博客_zk消息广播

 崩溃恢复

当leader挂了,或者超半数follower投票得出leader不可用,那么会重新选举,这段期间zk服务是不可用的。通过最新的 xid来选举出新的leader,选举出来后需要将新的leader中的数据更新给超过半数的follower节点才能对外提供服务

Nacos

Nacos的配置中心和注册中心实现的是两套代码,和Zk不同

1.存储和数据更新

Nacos:依赖Mysql数据库做数据存储,当你有数据更新的时候,直接更新数据库中的数据,然后将数据更新的信息异步广播——>给Nacos集群中所有服务节点数据变更——>再由Nacos服务节点更新本地缓存,然后将通知客户端节点数据变化

Zookeeper:利用zk的树型结构做数据存储,当有数据更新的时候使用过半机制保证各个节点的数据一致性;然后通过zk的事件机制通知客户端——>先ack给follower,转到leader,过半再提交

差异:

服务器存储位置不同,分别采用mysql和zk本身存储
消息发送,一个有采用过半机制保持一致性,另外一个异步广播,通过后台线程重试保证;

2.注册中心

(55条消息) Nacos注册中心_Fairy要carry的博客-CSDN博客_nacos注册中心

Eureka遵从AP原则,追求可用性;Zookeeper遵从CP原则,追求一致性(es也是cp,利用分片集群,每个节点有副本)
体现在获取服务注册列表上,当ZK的master挂掉后,会触发选举,选举期间无法从ZK获取服务列表信息,这就是为了一致性放弃了可用性;Eureka则追求可用性,只存在Eureka Server,就可以获取到服务注册列表信息,但是可能获取到不是最新的,这就是为了可用性放弃了一致性
 

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

Zookeeper和Nacos的区别 的相关文章

  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query
  • 斯坦福 NLP - 处理文件列表时 OpenIE 内存不足

    我正在尝试使用斯坦福 CoreNLP 中的 OpenIE 工具从多个文件中提取信息 当多个文件 而不是一个 传递到输入时 它会给出内存不足错误 All files have been queued awaiting termination
  • 从 127.0.0.1 到 2130706433,然后再返回

    使用标准 Java 库 从 IPV4 地址的点分字符串表示形式获取的最快方法是什么 127 0 0 1 到等效的整数表示 2130706433 相应地 反转所述操作的最快方法是什么 从整数开始2130706433到字符串表示形式 127 0
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项

随机推荐

  • Vue.js常用的语法(一)

    在一个html文件中 我们直接可以通过script标签引入Vue js 然后就可以在页面里写Vue js代码了 我们通过new Vue 构建了一个Vue的实例 html文件 div p a p div app js var app new
  • 三十二.Python学习笔记.7

    文件和数据格式化 一 文件的使用 1 文件的理解 文件是存储在辅助存储器上的数据序列 文件是数据存储的一种形式 文件展现形态 文本文件和二进制文件 文本文件VS二进制文件 文本文件和二进制文件只是文件的展示方式 本质上 所有文件都是二进制形
  • Openlayer 5 使用坐标点查询最近的图层feature

    Openlayer 5 使用坐标点查询最近的图层feature vector getClosestFeatureToCoordinate coordinates 返回指定图层距离该坐标最近的faeture 官方API getClosestF
  • 音乐生成 - 使用LSTM和Transformer模型进行MIDI音乐生成

    欢迎来到这篇博客 在这篇文章中 我们将讨论如何使用LSTM和Transformer模型生成音乐 特别是MIDI音乐 在这个过程中 我们将使用Python编程语言以及一些常见的库 让我们开始吧 1 简介 深度学习已经在许多领域取得了显著的成功
  • 【经验总结】tcp_tw_recycle参数引发的故障

    tcp tw recycle参数引发的故障 By Eric 故障描述 2010年9月7日 新上线的手机游戏论坛有部分地区用户反应登陆游戏时出现不能登陆或登陆超时等情况 观察用户同时在线数量开始下降情况 排错过程 一 初步检查是否有变更导致的
  • C++类成员函数中const的用法

    C 类中 const的用法个人总结主要有以下几种 1 用来修饰成员变量 比如const int var 2 用来修饰形参 主要针对引用 比如const type 3 用来修饰返回值 返回常量引用 4 放在成员函数的形参列表的 之后 大括号
  • 嵌入式是什么?(一个电子产品的从0到1)-杂谈

    这篇博客 我想聊聊嵌入式 在IT行业 存在着很多不同的领域与不同的职位 由此也延伸出了各式各样的工程师 但其中嵌入式工程师算是比较迷糊的一个职位了 即便同是IT的同事也有不少问过我 嵌入式是干什么的 更别说是非IT行业的人以及刚刚入门的小白
  • VPP plugin so 的封装与解耦

    封装与解耦 每一个 plugin 封装了一个独立的功能模块 模块依赖的外部 so 接口也封装在每个 plugin 中 vpp 提供统一的使能 禁能 初始化 plugin 的框架 同时每个 plugin 对外提供的接口也使用统一的方式 大多采
  • python 输入输出相关

    输入字符串 n input 字符串可以直接遍历 输入字符串时遇到需要输出字符串的题 可以再建一个字符串用来更新 比如这道题 输入一个由小写英文字母组成的字符串 请将其中的元音字母 a e i o u 转换成大写 其它字母仍然保持小写 n i
  • FPGA 与门

    module and gate a b y input a b output y assign y a b endmodule
  • [tensorflow]联邦学习框架TFF安装记录(基于docker)

    1 介绍 tensorflow federated 下面简称为TFF 是谷歌开发的一款开源联邦学习框架 该框架基于tensorflow 下面简称为TF 运行 安装这个框架花了我两天时间 现在对安装过程进行总结 本帖子总共分为3章 第一章介绍
  • Linux 查看文件大包括隐藏文件

    du h max depth 1 sort hr
  • 实现Vue的登录页面

    实现Vue的登录页面步骤 1 前期准备 1 1 安装Node js 从官网下载地址 https nodejs org zh cn 安装完成后 在终端输入 node v 来查询版本号 1 2 安装Webpack 在终端输入npm instal
  • 测试servlet的小tips

    由于servlet中使用了一些Request请求中的参数 我们可以通过请求url中添加这些参数 传入到 Request中 一个小tips
  • GTest的测试环境搭建

    一 gtest的安装 Google test是一种比较方便的C 测试框架 它能够帮助我们比较方便的进行测试代码的编写 以及输出尽可能详细的失败信息 能够大大缩短我们测试代码的编写效率 而且该框架的使用方法也比较简单 能够降低我们学习新框架的
  • Java 移除重复节点

    移除重复节点 难度简单97 编写代码 移除未排序链表中的重复节点 保留最开始出现的节点 示例1 输入 1 2 3 3 2 1 输出 1 2 3 示例2 输入 1 1 1 1 2 输出 1 2 提示 链表长度在 0 20000 范围内 链表元
  • MES管理系统对电子企业来说有什么优点

    引言 在电子制造企业中 MES管理系统已经成为提高生产效率 降低成本 提高订单履行速度和准确性的重要工具 电子企业MES管理系统是一套集成的信息系统 用于监控和控制电子企业的生产过程 本文将探讨MES管理系统对于电子企业来说有哪些优点 一
  • 人工智能的最新进展:2024年将会发生什么?

    文章目录 2024年AI最新发展 2024年AI具体应用 2024年AI的具体预测 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 人工智能 AI 是一种快速发展的技术
  • C++ MAP的遍历顺序和插入元素顺序是不同的

    当你为MAP插入一个元素后 MAP会按KEY的顺序重新排列 所以当你遍历MAP的时候 遍历的顺序已经不是你插入元素的顺序 举个具体例子 MAP B 1 MAP C 2 MAP A 3 当你遍历MAP输出的时候 是按 A B C 顺序输出的
  • Zookeeper和Nacos的区别

    目录 Zookeeper 1 ZK结构 2 ZK的消息广播和崩溃恢复 Nacos 1 存储和数据更新 2 注册中心 Zookeeper 1 ZK结构 Zookeeper的功能主要是通过它的树形节点来实现的 当有节点数据变化时或者说节点过期的