0

我们正在构建一个 Jboss BRMS 应用程序,在 spring-boot 中有两个微服务,一个用于规则生成(SRV1),一个用于规则执行(SRV2)。这个想法是使用生成微服务 (SRV1)生成规则,并使用版本控制将它们保存在数据库中。该过程的下一部分是让执行微服务通过查询共享数据库中的信息将这些持久化规则加载到每个 pod 内存中。

发生这种情况时有以下两种情况:

  • 当规则执行服务 pod/pods启动时,它会在数据库中查询最新版本,并且每个运行执行应用程序的 pod 从共享数据库中加载这些规则。

  • 第二个场景是我们想要手动触发在每个运行执行应用程序的 pod 上加载特定版本的规则,最好是通过一个 rest 调用。

这就是问题所在!

每当我们尝试向 api 发出 rest 请求时,由于它是在 kubernetes 服务下进行负载平衡的,因此该请求仅命中其中一个 pod,其余的不加载特定规则。

是否有程序或设计更改可以帮助我们实现这一目标,或者是否有任何其他方式构建我们的应用程序以实现在所有为执行微服务提供服务的 Pod 上加载特定版本规则的能力。

4

1 回答 1

0

第二个场景是我们想要手动触发在每个运行执行应用程序的 pod 上加载特定版本的规则,最好是通过一个 rest 调用。

使用滚动更新怎么样?当您想更改要在所有执行 pod 中获取的规则版本时,请告诉 OpenShift 执行滚动更新,这会一个一个地杀死/启动所有 pod,直到所有 pod 都在新版本上,因此,它们会获取特定版本的启动时的规则。滚动更新的触发器和定义版本分辨率的方式取决于您。例如:在 pod 中有一个 ENV var,它定义将从 db 获取的规则版本,然后将 ENV var 更改为新值并执行滚动更新。最后,您应该得到一组新的 pod,它们都根据您设置的 ENV var 的新值获取版本规则。

于 2017-03-13T14:51:43.900 回答