2010-06-02 231 views
0

我有一个监控应用程序,通过gui显示多个应用程序服务器的状态。它通过向应用服务器发送状态请求来工作。应用服务器轮流查询所有组件的状态,生成状态响应消息并将该消息发送到监视应用程序。监控应用程序将状态消息中的信息写入数据库,数据库又显示在GUI上。整个监控应用程序在JavaSE中完成。基于优先级的持久性?

我的问题是这个......数据库由于需要持续存在大量数据而难以跟上。

我认为我的解决方案是为状态消息的组件分配优先级,并根据优先级我将它坚持到数据库。

这有可能是更好的解决方案吗?

回答

0

我想知道如果你的数据库不能跟上存储数据,它可能也是一个沉重的负载在应用程序服务器上继续响应状态请求。

我不知道状态消息中的哪些信息以及需求是什么。一些选项有:

  • 状态消息可能是(几乎) 等同于以前的状态 消息。在这种情况下,您只能存储新消息 或仅存在 差异。
  • 保持更多的(最近)的消息在内存 只有每分钟/ 10 秒持续等
  • 在数据库中更高效 坚持。也许你可以减少 索引或约束。您也可以尝试批量处理大量状态 报告(并且可能会将这些内容保留在 内存中,直到批处理持续存在 )。
  • 减少状态报告消息的数量。 也许某些组件可能不太频繁地发送消息 。
+0

感谢您的回复。关于你的第一点,你是对的。发送的数据中的大部分都不会改变。为此,我在应用程序服务器上创建了一个方法,该方法会将其先前的状态信息与当前的状态信息进行比较,并向监视应用程序发送仅包含差异的状态信息。 关于你的第二点,是不是会造成瓶颈? 关于你的第三点,我目前正在研究,但由于其接收的大量状态响应(监视应用程序监视的数以千计的应用程序服务器),我对此表示怀疑。 最后一点,这不是一个选项。 – Vrot 2010-06-02 10:17:42