由于负载平衡,全局变量未更新

Global Variables not updated due to load balancing

有两台服务器 运行 一个 Web 服务,这些服务器使用 HAProxy 进行负载平衡。

Web 服务执行 post 并使用特定值更新全局变量,同一服务器上的另一个应用程序 运行 将读取该全局值并进行一些处理。

我的问题是当我使用网络服务将值设置为 gloabl 变量时;由于负载均衡器,只有一台服务器得到更新。因此,应用程序有时会读取全局值,当请求到达第二个服务器时,它不会读取它,因为该服务器中的全局变量未更新。

谁能告诉我如何处理这种情况。 Web 服务和应用程序都是基于 Java。

首先,依赖全球数据可能不是一个好主意。更好的解决方案是将数据保存在一些公共存储中,例如数据库或(共享)Redis 缓存。其次,如有必要,您可以在负载均衡器上使用粘性会话,以便后续请求始终 return 到同一 Web 服务器,只要它可用。后一种资格是共享缓存或数据库解决方案应该是首选的原因之一——服务器可能会在用户会话期间因维护或其他问题而停机。