1

我有一个带有 install4j 自动更新的桌面应用程序(在应用程序启动时检查)。我想分阶段推出更新。

为此,我正在考虑让Apache 负载均衡器为我的一部分用户提供更新版本的 updates.xml。我看到的问题:

  • 如果对updates.xml 请求的响应设置了一个cookie,那么对媒体部分的请求是否会包含该cookie?需要 cookie 来防止失去粘性,如所提供链接的“负载平衡器粘性的详细信息”部分所述。我不希望客户端应用程序接收更新的updates.xml,然后在获取媒体部分时出现404,因为它的请求被重定向到“旧”服务器。

  • 如果我将负载平衡设置为将 10% 的流量重定向到新的 updates.xml,这并不意味着我将让 10% 的用户获得更新的版本。实际百分比将没有相关性。这是因为即使是最新的应用程序仍会在启动时检查 updates.xml,计入总流量。我想这是可以的,只要我不需要精确的数字而只是想避免大爆炸部署。但是有更好的方法吗?

编辑

我在部署文件夹上实现了负载平衡。工作流程是这样的:

  • 我有绿色服务器和蓝色服务器。流量仅定向到绿色服务器。
  • 当我想部署时,我将新的updates.xml 和媒体文件复制到Server Blue,并且仅将媒体文件复制到Server Green,旧的updates.xml 不会更新。
  • 我们将 90% 的流量路由到绿色服务器,10% 到蓝色服务器。
  • 随着我们对新版本的信心增强,我们逐渐增加了 Server Blue 的流量。
  • 当我们准备好 100% 推出时,我们将新的 updates.xml 复制到 Server Green,现在两台服务器都有完全相同的文件。
  • 此时,我们如何配置流量平衡并不重要。它可以是 100-0、50-50、0-100 等。我们选择 90% 的绿色 - 10% 的蓝色,因为这是我们下一次部署所需的平衡配置。在下一次部署中,我们只需部署到蓝色服务器,无需再次更改平衡配置。
4

1 回答 1

1

如果对updates.xml 请求的响应设置了一个cookie,那么对媒体部分的请求是否会包含该cookie?

不,cookie 不由 install4j 管理,您只能在“检查更新”和“下载文件”等操作的“请求标头”属性中设置 cookie。

您必须首先向服务器上的某些资源添加“HTTP 请求”操作并配置其“响应标头的变量名称”属性以提取 cookie。可以将“HTTP 请求方法”属性设置为“HEAD”,因此您只能获取标头。从该变量(地图实例)中,您可以获取 cookie 变量并将其保存到另一个安装程序变量。此逻辑可以在“运行脚本”操作中完成。

于 2021-08-19T10:59:22.453 回答