滚动更新

    在执行滚动更新时,Akka 有两个部分需要仔细考虑。

    1. 远程消息协议的兼容性。旧节点可以向新节点发送消息,反之亦然。

    还有许多应用程序特定的方面。有一个可以改进的序列化格式策略是很重要的,并且你可以在「持久化 - 模式演化」中找到一些建议,它在使用滚动更新部署时也适用于远程消息。

    Akka 支持在两个连续补丁版本之间滚动更新,除非本页提到异常。例如,将 Akka 版本从 2.5.15 更新到 2.5.16。很多时候也可以跳过几个版本,这里也描述了一些例外情况。例如,在没有中间版本 2.5.15 的情况下,可以从 2.5.14 更新到 2.5.16。

    不支持具有两个以上不同版本的集群。在开始下一个更新之前,必须执行完前一个更新。

    由于协议完全不同,不支持从经典远程处理到动脉()的滚动更新。它将需要完全关闭集群并重新启动。

    最好将运行时间最长的节点保留到最后。这是因为集群单例(包括集群分片协调员)运行在最旧的节点上。更有效的方法是避免移动单例,因为这些单例通常必须恢复其状态,并且可能会导致不必要的延迟,例如访问新的分片 Actor。

    从 2.4.x 更新到 2.5.x 时,请参阅「」。

    不兼容的变化在 2.5.10 中引入,并在 2.5.11 中得到修正。

    这意味着你不能从 2.5.9 进行滚动更新到 2.5.10,而必须从 2.5.9 更新到 2.5.11。

    问题:#25491

    不兼容的变化在 2.5.10 中引入,并在 2.5.15 中得到修正。

    这意味着如果需要在更新阶段连接 2.5.9 节点,那么应该直接从 2.5.9 滚动更新到 2.5.15。

    问题:

    在 2.5.14 中进行了有意的变更。

    • 2.5.13 - 更改前的旧格式。可以与中间格式和旧格式通信。
    • 2.5.14、2.5.15、2.5.16 - 中间格式。可以与旧格式和新格式通信。
    • 2.5.17 - 新格式。可以与中间格式和新格式通信。

    这意味着你不能直接从 2.5.13 更新到 2.5.17,必须首先更新到中间版本 2.5.14、2.5.15 或 2.5.16 之一。

    问题:#25348

    在 2.5.22 中进行了有意的变更。

    已更改类的序列化程序:GetShardRegionStats、、GetShardStats和。

    此更改需要两个阶段的更新,其中引入了新的序列化程序,但在早期版本中未启用。

    • 2.5.18 - 添加了序列化程序但未启用,仍使用JavaSerializer

    这意味着你不能直接从 2.5.17 更新到 2.5.22,必须首先更新到中间版本 2.5.18、2.5.19、2.5.20 或 2.5.21 之一。


    英文原文链接:.