1

我需要存储一个必须由多个模块访问和更新的条件变量。

该系统有一个 Web 前端(servlet 容器),它接受 http 调用并将它们转换为发布到消息队列的请求消息。

消息由具有相同功能的多个处理模块使用,每个处理模块在单独的 JVM 实例中运行。

处理模块可能需要调用一些外部 Web 服务来检索新信息。有 4 种备选 Web 服务,需要根据过去 10 分钟内 Web 服务的平均响应时间来决定调用哪个服务。

我的问题是如何存储有关 Web 服务响应时间的信息

我的想法不是为此使用共享数据库,而是尝试存储共享变量(在队列上的专用主题中?),只要处理模块需要决定调用哪个 Web 服务,就可以读取和更新这些变量。更新非常简单,因为我们谈论的是平均响应时间(之前的平均值、第一次和最后一次更新 TS 以及当前的响应时间应该足够了)。

并发不是问题,因为只有 20-30 个处理模块,平均请求率为每几秒 1 个。即使有一些冲突,我们对过时的值也有一定的容忍度。

4

1 回答 1

2

我会将您的响应时间消息发送到某个主题,并且需要此信息的每个节点都复制一份。当一个节点需要知道使用哪个服务时,它会查看它的本地副本。这样查找速度非常快,节点可以独立运行。

顺便说一句,您可能需要定期检查较慢系统的延迟。即,一旦系统出现缓慢,它就不会再被使用,因此您不会看到它不再缓慢。您可以定期检查所有服务器,看看它们的性能是否发生了变化。

于 2013-11-01T08:11:50.273 回答