ZooKeeper 3.0.0发行说明

  • 升级到3.0.0时的迁移说明

    • 迁移客户端代码

      • 观察管理
      • Java API
      • C API
    • 迁移服务器数据
    • 迁移服务器配置
  • 自ZooKeeper 2.2.1以来的变化

这些发行说明包括新的开发人员和面向用户的不兼容性,功能和主要改进。

  • 迁移说明
  • 变化

升级到3.0.0时的迁移说明

如果要从以前版本的ZooKeeper升级到版本3.0.0,则只需阅读本节,otw跳到更改

此版本中的少量更改导致非向后兼容的Zookeeper客户端用户代码和服务器实例数据。以下说明提供了有关如何将代码和日期从2.2.1版迁移到3.0.0版的详细信息。

注意:当对源代码进行向后不兼容的更改时,ZooKeeper会增加主版本号(major.minor.fix)。作为从SourceForge迁移的一部分,我们更改了包结构(com.yahoo.zookeeper。*到org.apache.zookeeper。*),并认为现在是合并我们一直拒绝的一些更改的好时机。因此,从2.2.1迁移到3.0.0版本的ZooKeeper时,将需要以下内容。

  • 迁移客户端代码
  • 迁移服务器数据
  • 迁移服务器配置

迁移客户端代码

在ZooKeeper 3.0.0版中,底层客户端 - 服务器协议已更改。因此,客户端必须与服务群集一起升级,以确保系统正常运行(旧的3.0.0之前的客户端不能保证对升级的3.0.0服务器运行,反之亦然)。

观察管理

在以前的ZooKeeper版本中,如果客户端丢失了与ZooKeeper服务器的连接,则客户端注册的任何手表都将丢失。这意味着开发人员必须跟踪他们感兴趣的手表,并在收到会话断开事件时重新注册。在此版本中,客户端库跟踪客户端已注册的监视,并在与新服务器建立连接时重新注册监视。只要能够处理未经请求的手表,仍然可以手动重新注册兴趣的应用程序应继续正常工作。例如,旧应用程序可能会为/ foo和/ goo注册监视,丢失连接,并仅重新注册/ goo。只要应用程序能够接收/ foo的通知(可能忽略它),就不需要更改它。手表管理的一个警告:

此版本还允许客户端指定特定于呼叫的监视功能。这使开发人员能够在不同的监视功能中模块化逻辑,而不是在连接到ZooKeeper句柄的监视功能中填充所有内容。呼叫特定监视功能只要它们处于活动状态就会接收所有会话事件,但只会接收它们注册的监视回调。

Java API

  1. java包结构已从com.yahoo.zookeeper * 更改为org.apache.zookeeper *。这可能会影响所有使用ZooKeeper API的java代码(通常是import语句)
  2. 使用枚举(而不是整数)重新指定客户端ZooKeeper API中使用的许多常量。有关详细信息,请参阅ZOOKEEPER-7,ZOOKEEPER-132和ZOOKEEPER-139
  3. ZOOKEEPER-18删除了KeeperStateChanged,改为使用KeeperStateDisconnected

另请参阅当前的Java API

C API

  1. 为了减少命名空间冲突,重命名了客户端ZooKeeper API中使用的许多常量,有关详细信息,请参阅ZOOKEEPER-6

迁移服务器数据

以下问题导致磁盘数据格式(ZK数据目录中包含的快照和事务日志文件)发生更改,并且需要运行迁移实用程序。

  • ZOOKEEPER-27服务器和客户端的唯一数据库标识符
  • 用于ZooKeeper数据的ZOOKEEPER-32 CRC
  • ZOOKEEPER-33更好的ACL管理
  • 日志/快照文件中的ZOOKEEPER-38标头(版本+)

将ZooKeeper服务器实例升级到3.0.0版时,必须运行以下一次,并且只运行一次。

注意

下面引用的和目录分别由ZooKeeper配置文件中的dataLogDir 和dataDir规范指定。如果未在ZooKeeper服务器配置文件中明确指定,dataLogDir默认为dataDir的值(在这种情况下,为升级实用程序提供两个参数的相同目录)。

  1. 关闭ZooKeeper服务器群集。

  2. 备份您的和目录

  3. 使用运行升级

    • bin/zkServer.sh upgrade <dataLogDir> <dataDir>

    要么

    • java -classpath pathtolog4j:pathtozookeeper.jar UpgradeMain <dataLogDir> <dataDir>

    where 存储所有事务日志(log。的目录存储所有快照(快照。的目录

  4. 重新启动群集。

如果在升级过程中出现任何故障,请继续阅读以清理数据库。

这就是ZooKeeper中升级的工作原理。这将有助于您在升级时遇到问题时进行故障排除

  1. 从升级移动文件<dataLogDir>,并<dataDir><dataLogDir>/version-1/<dataDir>/version-1分别(版本1子目录被升级程序创建)。
  2. 升级会创建一个新版本的子目录<dataDir>/version-2<dataLogDir>/version-2
  3. 升级将旧数据库从内存中读取<dataDir>/version-1<dataLogDir>/version-1进入内存,并创建新的升级快照。
  4. 升级将新数据库写入<dataDir>/version-2

故障排除。

  1. 如果您在2.0数据库上没有从2.0升级而启动ZooKeeper 3.0 - 服务器将启动一个空数据库。这是因为服务器假设<dataDir>/version-2并且<dataLogDir>/version-2将使数据库开始。由于在没有升级的情况下它将为空,因此服务器将以空数据库开头。在这种情况下,关闭ZooKeeper服务器,删除版本2目录(请记住,这将导致在启动3.0后丢失更新。)然后启动升级过程。
  2. 如果试图重命名文件到版本1目录升级失败,你应该尝试和移动下的所有文件<dataDir>/version-1 ,并<dataLogDir>/version-1<dataDir><dataLogDir>分别。然后再次尝试升级。
  3. 如果您不希望使用ZooKeeper 3.0运行并且更喜欢使用ZooKeeper 2.0运行并且已经升级 - 您可以运行ZooKeeper 2 <dataDir>并将<dataLogDir>目录更改为<dataDir>/version-1<dataLogDir>/version-1。请记住,您将丢失升级后所做的所有更新。

迁移服务器配置

ZooKeeper服务器配置文件发生了重大变化。

electionAlg配置属性指定的默认选举算法已从默认值0更改为默认值3。请参阅 管理员指南的“ 群集选项”部分,特别是electionAlgserver.X属性。

您将需要将electionAlg显式设置为其先前的默认值0或更改您的server.X选项以包括领导者选举端口。

自ZooKeeper 2.2.1以来的变化

版本2.2.1代码,文档,二进制文件等仍然可以在SourceForge上访问

问题 笔记
ZOOKEEPER-43 服务器端自动重置手表。
ZOOKEEPER-132 创建枚举以替换ZooKepper.create方法中的CreateFlag
ZOOKEEPER-139 为WatcherEvent的KeeperState和EventType创建枚举
ZOOKEEPER-18 守门员状态不一致
ZOOKEEPER-38 日志/快照文件中的标头
ZOOKEEPER-8 统计包含数量的子项和大小
ZOOKEEPER-6 zookeeper.h中的问题标识符列表
ZOOKEEPER-7 对于类型和状态,请使用枚举而不是整数
ZOOKEEPER-27 服务器和客户端的唯一DB标识符
ZOOKEEPER-32 ZooKeeper数据的CRC
ZOOKEEPER-33 更好的ACL管理
ZOOKEEPER-203 在releasenotes中修复datadir拼写错误
ZOOKEEPER-145 为从2.x迁移到3.0的用户编写详细的发行说明
ZOOKEEPER-23 重新连接时手表自动重置
ZOOKEEPER-191 forrest docs升级。
ZOOKEEPER-201 读取快照和事务日志时验证幻数
ZOOKEEPER-200 快照和日志的幻数必须不同
ZOOKEEPER-199 修复持久性代码中的日志消息
ZOOKEEPER-197 为快照创建校验和
ZOOKEEPER-198 FollowerSyncRequest.java中缺少apache许可证头
ZOOKEEPER-5 Zookeeper服务器中的升级功能。
ZOOKEEPER-194 修复zookeeperAdmin.xml中的术语
ZOOKEEPER-151 将文档更改为服务器配置
ZOOKEEPER-193 更新java示例doc以使用最新的zookeeper进行编译
ZOOKEEPER-187 缺少CreateMode api文档
ZOOKEEPER-186 为forrest文档添加新的“releasenotes.xml”
ZOOKEEPER-190 Reorg链接到文档和导航到文档到相关部分
ZOOKEEPER-189 forrest build未经验证的xml输入文档
ZOOKEEPER-188 检查所有服务器是否存在选举端口
ZOOKEEPER-185 改进版FLETest
ZOOKEEPER-184 测试:使用memcpy函数需要显式include derective
ZOOKEEPER-183 数组下标位于od_completion,src / cli.c中的数组范围之上。
ZOOKEEPER-182 zookeeper_init接受空的host-port字符串并返回指向zhandle_t的有效指针。
ZOOKEEPER-17 zookeeper_init doc需要澄清
ZOOKEEPER-181 一些Source Forge文档没有被移过:javaExample,zookeeperTutorial,zookeeperInternals
ZOOKEEPER-180 伞文章讨论的新主题文档中需要占位符部分
ZOOKEEPER-179 程序员指南“基本操作”部分缺少内容
ZOOKEEPER-178 FLE测试。
ZOOKEEPER-159 涵盖领导人选举的两个角落案例
ZOOKEEPER-156 从旧维基页面更新程序员指南和acl详细信息
ZOOKEEPER-154 概述doc中的可靠性图表需要上下文
ZOOKEEPER-157 同行找不到现有的领导者
ZOOKEEPER-155 改进概述doc的“zookeeper项目”部分
ZOOKEEPER-140 QuorumCnxManager中的死锁
ZOOKEEPER-147 这是大多数[tbd ...]清除的文档版本
ZOOKEEPER-150 动物园管理员建造破碎
ZOOKEEPER-136 同步导致仲裁的所有粉丝都挂起。
ZOOKEEPER-134 findbugs清理
ZOOKEEPER-133 哈德森测试间歇性地失败
ZOOKEEPER-144 为观察者事件添加tostring支持,为事件类型/状态添加枚举
ZOOKEEPER-21 改善zk ctor / watcher
ZOOKEEPER-142 提供Javadoc,以确定可能存储在znode中的数据字节数组的最大大小
ZOOKEEPER-93 为Zookeeper创建文档
ZOOKEEPER-117 领导选举中的线索问题
ZOOKEEPER-137 客户端观察者对象可能会丢失事件
ZOOKEEPER-131 老领导人选举可以一次又一次地选出一位死去的领导人
ZOOKEEPER-130 更新build.xml以支持apache发布过程
ZOOKEEPER-118 在followerrequestprocessor.run中的findbugs标记的switch语句
ZOOKEEPER-115 QuorumCnxManager中的潜在NPE
ZOOKEEPER-114 清理zookeeper客户端中的丑陋事件消息
ZOOKEEPER-112 src / java / main ZooKeeper.java中嵌入了测试代码。
ZOOKEEPER-39 在读取操作中使用Watcher对象而不是布尔值。
ZOOKEEPER-97 支持代码生成器中的可选输出目录。
ZOOKEEPER-101 在Hudson上集成ZooKeeper和“违规”功能
ZOOKEEPER-105 捕获Zookeeper异常并在stderr上打印。
ZOOKEEPER-42 将领导者选举更改为快速tcp。
ZOOKEEPER-48 auth_id现在在没有auth id存在时正确处理
ZOOKEEPER-44 创建前缀为0的序列标志子项,以便按字典顺序对它们进行排序。
ZOOKEEPER-108 修复仲裁上的同步操作重新排序。
ZOOKEEPER-25 Zookeeper的Fuse模块。
ZOOKEEPER-58 ClientCnxn.java上的竞争条件
ZOOKEEPER-56 为build.xml添加三叶草支持。
ZOOKEEPER-75 使用nabble.com注册ZooKeeper邮件列表
ZOOKEEPER-54 在测试中删除睡眠。
ZOOKEEPER-55 build.xml failes从SVN检索版本号,ant目标“dist”失败
ZOOKEEPER-89 当ZK连接失败时调用WhenOwnerListener.whenNotOwner
ZOOKEEPER-90 当ZK会话到期并且znode是领导者时调用WhenOwnerListener.whenNotOwner
ZOOKEEPER-82 使ZooKeeperServer更加友好。
ZOOKEEPER-110 构建脚本依赖于svnant,它与subversion 1.5工作副本不兼容
ZOOKEEPER-111 显着清理现有测试。
ZOOKEEPER-122 在黄麻的Utils.toCSVString中修复NPE。
ZOOKEEPER-123 修复了为记录器指定的错误类。
ZOOKEEPER-2 修复QuorumPeer和FastLeader选举中的同步问题。
ZOOKEEPER-125 在FastLeaderElection中删除不需要的类声明。
ZOOKEEPER-61 客户端/服务器测试用例中的地址。
ZOOKEEPER-75 清理库目录
ZOOKEEPER-109 通过静态分析找到NPE和资源问题的清理
ZOOKEEPER-76 Commit 677109删除了cobertura库,但没有删除构建目标。
ZOOKEEPER-63 客户关闭的竞争条件
ZOOKEEPER-70 为ZooKeeper添加骨架forrest doc结构
ZOOKEEPER-79 在wiki食谱页面上记录jacob的领导者选举
ZOOKEEPER-73 将ZK wiki从SourceForge移动到Apache
ZOOKEEPER-72 ZooKeeper ASF站点的初始创建/设置。
ZOOKEEPER-71 确定要做什么重新使用ZooKeeper Changelog
ZOOKEEPER-68 ZooKeeper.java中的parseACL无法解析ACL的元素,应该是lastIndexOf而不是IndexOf
ZOOKEEPER-130 更新build.xml以支持apache发布过程。
ZOOKEEPER-131 修复旧领导人选举可以一次又一次地选出一位死去的领导人。
ZOOKEEPER-137 客户端观察者对象可能会丢失事件
ZOOKEEPER-117 领导选举中的线索问题
ZOOKEEPER-128 异步客户端操作的测试覆盖率需要改进
ZOOKEEPER-127 在配置中断服务中使用非标准选举端口
ZOOKEEPER-53 测试在solaris上失败了。
ZOOKEEPER-172 FLE测试
ZOOKEEPER-41 示例启动脚本
ZOOKEEPER-33 更好的ACL管理
ZOOKEEPER-49 SetACL不起作用
ZOOKEEPER-20 删除节点时不会触发子监视
ZOOKEEPER-15 在build.xml中更好地处理故障:test
ZOOKEEPER-11 使用ArrayList代替List
ZOOKEEPER-45 初始导入后重构SVN存储库
ZOOKEEPER-1 来自Yahoo!的初始ZooKeeper代码贡献

转载来源:https://github.com/apache/zookeeper/blob/master/zookeeper-docs/src/main/resources/markdown/releasenotes.md

ZooKeeper 3.0.0发行说明相关推荐

  1. 轻量级 Kubernetes 发行版 k3s 1.0.0 发布!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...

  2. 【Linux部署】第一次部署ZooKeeper启动两次报错问题解决 Could not find or load main class+Failed to bind to /0.0.0.0:8080

    使用 zkServer.sh start-foreground 启动可以看到报错信息,使用的时候还是用 zkServer.sh start 来启动服务. 1.第一次安装报错 安装包(apache-zo ...

  3. zookeeper 3.6.0安装以及基本使用

    1.下载 zookeeper 3.6.0 2.解压压缩包 3.将配置文件复制一份,修改名称为zoo.cfg 4.zoo.cfg修改数据文件和日志文件路径  5.启动zk服务端 [启动完成] 6.启动z ...

  4. Apache Kafka 3.0.0 稳定版发布,有哪些值得关心的变化?

    Apache Kafka 3.0 于2021年9月21日正式发布.本文将介绍这个版本的新功能.以下文章翻译自 <What's New in Apache Kafka 3.0.0>. 我很高 ...

  5. 离线方式部署Ambari2.6.0.0

    Hadoop生态圈-离线方式部署Ambari2.6.0.0 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我现在所在的公司用的是CDH管理Hadoop集群,前端时间去面试时发现很多 ...

  6. IBM发布Open Liberty 18.0.0.4,支持MicroProfile 2.1和反应性扩展框架

    IBM在2018年第四季度发布的Open Liberty 18.0.0.4提供了对MicroProfile 2.1.反应性扩展框架和连接池指标的全面支持.根据发布说明: Open Liberty现在对 ...

  7. 基于BitBox的Wormhole SDK 已迭代至1.0.0版本

    Wormhole协议自推出以来,官方开发团队一直在进行开发工作.早在8月份开发团队推出v0.1.0客户端,正式上线BCH主网.目前,Wormhole协议已经是BCH网络中能够发行Token的较为成熟代 ...

  8. Kafka-0.10.0.0 集群高可靠实验

    记录实验过程之前,先谈一谈学习Kafka过程的心得. 大数据包含一个生态,需众多组件配合使用.逐个学习各个组件非常费力,想摸索出一种快速入门的方法,可能是每个学习大数据的同学都想要的. 我的方法是,每 ...

  9. 在 Ubuntu 14.04/15.04 上配置 Node JS v4.0.0

    大家好,Node.JS 4.0 发布了,这个流行的服务器端 JS 平台合并了 Node.js 和 io.js 的代码,4.0 版就是这两个项目结合的产物--现在合并为一个代码库.这次最主要的变化是 N ...

最新文章

  1. 摩拜单车正式进军日本,积极拓展海外市场
  2. android evaluater_android通过WebView的evaluateJavascript()调用JS
  3. python之字符串的切片操作
  4. Android-源码剖析CountDownTimer(倒计时类)
  5. java 去掉 t_java中的“\t”
  6. python中使用matplotlib问题
  7. java ognl使用_java框架篇---struts之OGNL详解
  8. ftp上传乱码_ftp同步图片到本地文件夹,ftp同步图片到本地文件夹的实现步骤
  9. Ubuntu环境下远程调试Android手机设备
  10. 【PTA-python】第4章-15 换硬币 (20 分)
  11. ER图(实体-联系图)
  12. 屏幕刷新频率怎么更改?
  13. 2021-10-21python中spilt函数的学习
  14. python实现企业微信定时发送文本消息!下班自动提交,老板直夸我敬业!
  15. Fairy tale(BFS + 大模拟)
  16. java graphics2d 绘图_java GUI Graphics2D 绘图
  17. BLOXORZ 游戏攻略
  18. Excel中如何用计算公式或表达式直接计算出结果?
  19. 【第六章 | 虚拟存储器】《操作系统 慕课版》课后答案 + 复习
  20. Web前后端缓存技术

热门文章

  1. Ubuntu用户及用户组管理命令
  2. iOS App的图标,启动画面及其它
  3. php 动态加载JavaScript文件或者css文件
  4. 机器学习速成课程 | 练习 | Google Development——编程练习:逻辑回归
  5. J-LINK 操作使用指南
  6. STL——vector容器详解
  7. 【今日CV 计算机视觉论文速览 第123期】Mon, 3 Jun 2019
  8. Spring学习笔记专题二
  9. 2021-04-22 宠店流程图
  10. 线程加入 java 1615477815