4.ZooKeeper 3.0.0发行说明及版本升级
来源:互联网 发布:windows上软件无法卸载 编辑:程序博客网 时间:2024/06/05 21:06
升级到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。*),并认为这是一个合并一些我们已拒绝的更改的好时机。因此,当从ZooKeeper的2.2.1版本迁移到3.0.0版本时,将需要以下内容。
迁移客户端代码
迁移服务器数据
迁移服务器配置
迁移客户端代码
底层的客户端 - 服务器协议在3.0版本的ZooKeeper中已经更改。因此,客户端必须与服务群集一起升级,以确保系统正常运行(旧的3.0.0之前的客户端不能保证在升级的3.0.0服务器上运行,反之亦然)。
表管理
在以前的ZooKeeper版本中,如果客户端丢失了与ZooKeeper服务器的连接,则客户端注册的任何监视都会丢失。这意味着开发人员必须跟踪他们感兴趣的手表,如果收到会话断开连接事件,则重新注册它们。在此版本中,客户端库跟踪客户端已注册的监视,并在与新服务器建立连接时重新注册监视。仍然手动重新注册利益的应用程序应该继续正常工作,只要他们能够处理未经请求的手表。例如,旧应用程序可以注册/ foo和/ goo的监视,失去连接,并仅重新注册/ goo。只要应用程序能够接收/ foo的通知,(可能忽略它),它不需要更改。对手表管理的一个警告:
此版本还允许客户端指定呼叫特定的手表功能。这使开发人员能够在不同的手表功能中模块化逻辑,而不是在附加到ZooKeeper句柄的手表功能中填充所有内容。呼叫特定的手表功能接收所有会话事件,只要它们是活动的,但只会接收他们注册的手表回调。
Java API
java包结构已从com.yahoo.zookeeper *更改为org.apache.zookeeper *。这可能会影响所有使用ZooKeeper API(通常是import语句)的Java代码,
客户端ZooKeeper API中使用的许多常量使用枚举(而不是int)重新指定。见ZOOKEEPER-7,ZOOKEEPER-132和ZOOKEEPER-139的全部细节
ZOOKEEPER-18删除了KeeperStateChanged,而改用KeeperStateDisconnected
另请参阅当前的Java API
C API
为了减少命名空间冲突,客户端ZooKeeper API中使用的许多常量已重命名,有关完整详细信息,请参阅ZOOKEEPER-6
迁移服务器数据
以下问题导致磁盘数据格式(ZK数据目录中包含的快照和事务日志文件)的更改,并需要运行迁移实用程序。
ZOOKEEPER-27服务器和客户端的唯一数据库标识符
ZookeePER-32 ZooKeeper数据的CRC
ZOOKEEPER-33更好的ACL管理
日志/快照文件中的ZOOKEEPER-38标题(版本+)
在将ZooKeeper服务器实例升级到版本3.0.0时,必须运行一次,并且只能运行一次。
下面引用的<dataLogDir>和<dataDir>目录分别由ZooKeeper配置文件中的dataLogDir 和dataDir规范指定。dataLogDir默认为价值DATADIR如果不是在ZooKeeper的服务器配置文件中明确指定的(在这种情况下,提供两个参数来升级实用程序相同的目录)。
关闭ZooKeeper服务器集群。
备份您的<dataLogDir>和<dataDir>目录
使用运行升级
bin / zkServer.sh upgrade <dataLogDir> <dataDir>
要么
java -classpath pathtolog4j:pathtozookeeper.jar UpgradeMain <dataLogDir> <dataDir>
其中<dataLogDir>是存储所有事务日志(log。*)的目录。<dataDir>是存储所有快照(快照。*)的目录。
重新启动集群。
如果在升级过程中出现任何故障,请继续阅读以清理数据库。
这是升级在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数据库上启动ZooKeeper 3.0而不从2.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选项,包括领导人选举端口。
- 4.ZooKeeper 3.0.0发行说明及版本升级
- MySQL发行版本的命名机制及解释说明
- Android Studio 3.0 正式版本 发行说明 (翻译)
- 2.0升级3.0版本注意事项说明
- solr版本升级说明
- Microsoft .NET Framework发行版本说明
- [Spark--版本更新]-----2.1.2发行说明
- [Spark--版本更新]----2.2.1发行说明
- SequoiaDB版本升级及导入导出工具说明
- linux 查看内核版本及发行版本
- spark-2.2.0发行说明
- zookeeper移除及升级
- Ubuntu的发行版本及控制
- Linux系统的组成部分及发行版本
- 查看linux发行版本及字长
- 麒麟开源堡垒机功能版本说明及升级方式说明
- 发行说明
- System.Data.Silverlight V2.0版本升级说明
- maven介绍及常用命令(一)
- MySQL基本操作
- 第十三章 线程安全与锁优化
- Struts
- Socks5代码的一点解析
- 4.ZooKeeper 3.0.0发行说明及版本升级
- (4)深坑之MyBatis只能查询一条记录
- 利用 Memory Analyer分析JVM内存问题
- 蓝牙音频编码和压缩
- 机器学习中常见的损失函数
- git 常见命令
- 软件测试(十)软件测试年终报告模版
- Hexo 3.x ERROR Deployer not found github
- 开始写博客