gpt4 book ai didi

java - 在代码部署期间实现零停机时间

转载 作者:行者123 更新时间:2023-11-29 05:43:37 25 4
gpt4 key购买 nike

需要在部署期间实现零停机时间。场景是我总共有 6 个生产箱,我的代码将在其中部署。第一个代码将部署在 3 个盒子中。此时我将启动并运行我的旧代码和新代码。我在我的数据库中的一个表中应用加密逻辑,它将仅由我的新代码处理。当用户点击我的旧代码库时,我的应用程序将失败。有哪些可能的解决方案。我的应用程序是 java 应用程序,我的用户是 oracle 10g。

最佳答案

解决方案是有一系列允许这样做的版本。假设代码在更新之前使用名为 A 的纯文本列。

  • 向数据库中添加另一列 A_ENCRYPTED。旧代码仍然使用 A 并忽略 A_ENCRYPTED,所以一切都很好
  • 发布三个框的第一个更新,从 A 读取,写入 A 并加密值并将结果写入 A_ENCRYPTED。旧代码和新代码都从A读写,一切正常
  • 将第一次更新发布到其他三个盒子。现在每个人都写信给 A 和 A_ENCRYPTED
  • 执行脚本加密 A 中的所有内容并将结果存储在 A_ENCRYPTED 中。现在 A 和 A_ENCRYPTED 对于所有行都是一致的,并且继续保持一致,因为所有框都写入两列。
  • 现在发布对三个盒子的第二次更新,它们从 A_ENCRYPTED 读取,并且仍然写入 A 和 A_ENCRYPTED。其他 3 个框仍然可以正常工作,因为 A 始终与 A_ENCRYPTED 保持一致。
  • 对其他 3 个盒子进行相同的释放。现在所有的盒子都从 A_ENCRYPTED 读写。
  • 现在对 3 个只能从/向 A_ENCRYPTED 读写的盒子发布第三次更新
  • 对其他 3 个盒子进行相同的释放。现在没有人再使用 A 列了。
  • 执行删除 A 列的脚本。

关于java - 在代码部署期间实现零停机时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16609527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com