我们如何将请求路由到Openshift上kubernetes服务下的每个pod?

我们如何将请求路由到Openshift上kubernetes服务下的每个pod?,kubernetes,microservices,restful-architecture,application-design,openshift-enterprise,Kubernetes,Microservices,Restful Architecture,Application Design,Openshift Enterprise,我们正在构建一个Jboss BRMS应用程序,在spring boot中有两个微服务,一个用于规则生成(SRV1),另一个用于规则执行(SRV2)。 其思想是使用generation microservice(SRV1)生成规则,并使用版本控制将它们保存在数据库中。该过程的下一部分是让execution microservice通过查询共享数据库中的信息将这些持久化规则加载到每个pods内存中 发生这种情况时,有以下两种情况: 当规则执行服务pod/pods启动时,它向数据库查询最新版本,运行

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

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

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

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

这就是问题所在

每当我们尝试向api发出rest请求时,因为它在kubernetes服务下是负载平衡的,所以请求只命中一个POD,其余的POD不加载特定规则

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

第二个问题是,我们希望手动触发在运行执行应用程序的每个pod上加载特定版本的规则,最好是通过rest调用


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

我会选择一个基于扇出消息队列的拉式系统,而不是您想要的基于推式的方法。我们曾想过将redis用作消息代理,所有pod都订阅了该方法。这是你建议的类似方法吗?对,RabbitMQ或Redis w。发布/订阅