我需要存储一个必须由多个模块访问和更新的条件变量。在消息队列中存储变量
该系统有一个web前端(servlet容器),它接受http调用并将它们转换为请求发送到消息队列的消息。
消息由具有相同功能的多个处理模块使用,每个处理模块都运行在单独的JVM实例中。
处理模块可能需要调用一些外部Web服务来检索新的信息。有4种可选的Web服务,并且需要根据Web服务在过去10分钟内的平均响应时间决定调用哪个服务。我的问题是如何存储关于web服务响应时间的信息?
我的想法是不使用共享数据库,并尝试将共享变量(存储在队列中的专用主题?)中,这些变量只要需要做出决定就可以被处理模块读取和更新要调用哪个Web服务。更新非常简单,因为我们正在讨论平均响应时间(先前的平均值,第一次和最后一次更新TS以及当前响应时间应该足够了)。
并发性不是问题,因为只有20-30个处理模块,每隔几秒平均请求速率为1。即使存在一些碰撞,我们对过时的值也有一定的容忍度。
那么,我应该向所有处理模块广播Web服务的响应时间吗?听起来是一个好主意。 – aviad
@aviad这就是我会做的。我假设多次存储相同信息的成本很小,因此拥有大量独立副本将是最优的(并且很简单) –