ZooKeeper 3.0.0发行说明
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
- java包结构已从com.yahoo.zookeeper * 更改为org.apache.zookeeper *。这可能会影响所有使用ZooKeeper API的java代码(通常是import语句)
- 使用枚举(而不是整数)重新指定客户端ZooKeeper API中使用的许多常量。有关详细信息,请参阅ZOOKEEPER-7,ZOOKEEPER-132和ZOOKEEPER-139
- ZOOKEEPER-18删除了KeeperStateChanged,改为使用KeeperStateDisconnected
另请参阅当前的Java API
C API
- 为了减少命名空间冲突,重命名了客户端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的值(在这种情况下,为升级实用程序提供两个参数的相同目录)。
关闭ZooKeeper服务器群集。
备份您的和目录
使用运行升级
bin/zkServer.sh upgrade <dataLogDir> <dataDir>
要么
java -classpath pathtolog4j:pathtozookeeper.jar UpgradeMain <dataLogDir> <dataDir>
where 存储所有事务日志(log。)的目录。是存储所有快照(快照。)的目录。
重新启动群集。
如果在升级过程中出现任何故障,请继续阅读以清理数据库。
这就是ZooKeeper中升级的工作原理。这将有助于您在升级时遇到问题时进行故障排除
- 从升级移动文件
<dataLogDir>
,并<dataDir>
以<dataLogDir>/version-1/
和<dataDir>/version-1
分别(版本1子目录被升级程序创建)。 - 升级会创建一个新版本的子目录
<dataDir>/version-2
和<dataLogDir>/version-2
- 升级将旧数据库从内存中读取
<dataDir>/version-1
并<dataLogDir>/version-1
进入内存,并创建新的升级快照。 - 升级将新数据库写入
<dataDir>/version-2
。
故障排除。
- 如果您在2.0数据库上没有从2.0升级而启动ZooKeeper 3.0 - 服务器将启动一个空数据库。这是因为服务器假设
<dataDir>/version-2
并且<dataLogDir>/version-2
将使数据库开始。由于在没有升级的情况下它将为空,因此服务器将以空数据库开头。在这种情况下,关闭ZooKeeper服务器,删除版本2目录(请记住,这将导致在启动3.0后丢失更新。)然后启动升级过程。 - 如果试图重命名文件到版本1目录升级失败,你应该尝试和移动下的所有文件
<dataDir>/version-1
,并<dataLogDir>/version-1
以<dataDir>
和<dataLogDir>
分别。然后再次尝试升级。 - 如果您不希望使用ZooKeeper 3.0运行并且更喜欢使用ZooKeeper 2.0运行并且已经升级 - 您可以运行ZooKeeper 2
<dataDir>
并将<dataLogDir>
目录更改为<dataDir>/version-1
和<dataLogDir>/version-1
。请记住,您将丢失升级后所做的所有更新。
迁移服务器配置
ZooKeeper服务器配置文件发生了重大变化。
由electionAlg配置属性指定的默认选举算法已从默认值0更改为默认值3。请参阅 管理员指南的“ 群集选项”部分,特别是electionAlg和server.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发行说明相关推荐
- 轻量级 Kubernetes 发行版 k3s 1.0.0 发布!
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | https://ww ...
- 【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 ...
- zookeeper 3.6.0安装以及基本使用
1.下载 zookeeper 3.6.0 2.解压压缩包 3.将配置文件复制一份,修改名称为zoo.cfg 4.zoo.cfg修改数据文件和日志文件路径 5.启动zk服务端 [启动完成] 6.启动z ...
- Apache Kafka 3.0.0 稳定版发布,有哪些值得关心的变化?
Apache Kafka 3.0 于2021年9月21日正式发布.本文将介绍这个版本的新功能.以下文章翻译自 <What's New in Apache Kafka 3.0.0>. 我很高 ...
- 离线方式部署Ambari2.6.0.0
Hadoop生态圈-离线方式部署Ambari2.6.0.0 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我现在所在的公司用的是CDH管理Hadoop集群,前端时间去面试时发现很多 ...
- IBM发布Open Liberty 18.0.0.4,支持MicroProfile 2.1和反应性扩展框架
IBM在2018年第四季度发布的Open Liberty 18.0.0.4提供了对MicroProfile 2.1.反应性扩展框架和连接池指标的全面支持.根据发布说明: Open Liberty现在对 ...
- 基于BitBox的Wormhole SDK 已迭代至1.0.0版本
Wormhole协议自推出以来,官方开发团队一直在进行开发工作.早在8月份开发团队推出v0.1.0客户端,正式上线BCH主网.目前,Wormhole协议已经是BCH网络中能够发行Token的较为成熟代 ...
- Kafka-0.10.0.0 集群高可靠实验
记录实验过程之前,先谈一谈学习Kafka过程的心得. 大数据包含一个生态,需众多组件配合使用.逐个学习各个组件非常费力,想摸索出一种快速入门的方法,可能是每个学习大数据的同学都想要的. 我的方法是,每 ...
- 在 Ubuntu 14.04/15.04 上配置 Node JS v4.0.0
大家好,Node.JS 4.0 发布了,这个流行的服务器端 JS 平台合并了 Node.js 和 io.js 的代码,4.0 版就是这两个项目结合的产物--现在合并为一个代码库.这次最主要的变化是 N ...
最新文章
- 摩拜单车正式进军日本,积极拓展海外市场
- android evaluater_android通过WebView的evaluateJavascript()调用JS
- python之字符串的切片操作
- Android-源码剖析CountDownTimer(倒计时类)
- java 去掉 t_java中的“\t”
- python中使用matplotlib问题
- java ognl使用_java框架篇---struts之OGNL详解
- ftp上传乱码_ftp同步图片到本地文件夹,ftp同步图片到本地文件夹的实现步骤
- Ubuntu环境下远程调试Android手机设备
- 【PTA-python】第4章-15 换硬币 (20 分)
- ER图(实体-联系图)
- 屏幕刷新频率怎么更改?
- 2021-10-21python中spilt函数的学习
- python实现企业微信定时发送文本消息!下班自动提交,老板直夸我敬业!
- Fairy tale(BFS + 大模拟)
- java graphics2d 绘图_java GUI Graphics2D 绘图
- BLOXORZ 游戏攻略
- Excel中如何用计算公式或表达式直接计算出结果?
- 【第六章 | 虚拟存储器】《操作系统 慕课版》课后答案 + 复习
- Web前后端缓存技术