我需要存储一个必须由多个模块访问和更新的条件变量。
该系统有一个 Web 前端(servlet 容器),它接受 http 调用并将它们转换为发布到消息队列的请求消息。
消息由具有相同功能的多个处理模块使用,每个处理模块在单独的 JVM 实例中运行。
处理模块可能需要调用一些外部 Web 服务来检索新信息。有 4 种备选 Web 服务,需要根据过去 10 分钟内 Web 服务的平均响应时间来决定调用哪个服务。
我的问题是如何存储有关 Web 服务响应时间的信息?
我的想法不是为此使用共享数据库,而是尝试存储共享变量(在队列上的专用主题中?),只要处理模块需要决定调用哪个 Web 服务,就可以读取和更新这些变量。更新非常简单,因为我们谈论的是平均响应时间(之前的平均值、第一次和最后一次更新 TS 以及当前的响应时间应该足够了)。
并发不是问题,因为只有 20-30 个处理模块,平均请求率为每几秒 1 个。即使有一些冲突,我们对过时的值也有一定的容忍度。