2010-06-02 12 views
0

J'ai une application de surveillance qui via gui affiche l'état d'un certain nombre de serveurs d'applications. Cela fonctionne en envoyant une demande d'état au serveur de l'application. Le serveur d'applications interroge à tour de rôle l'état de tous ses composants, génère un message de réponse d'état et envoie ce message à l'application de surveillance. L'application de surveillance écrit des informations dans le message d'état de la base de données, qui à son tour est affiché sur l'interface graphique. L'application de surveillance entière est effectuée dans JavaSE.Persistance basée sur la priorité?

Mon problème est le suivant ... la base de données a du mal à suivre en raison de la quantité de données dont elle a besoin pour persister.

Ma solution que j'ai imaginée est d'assigner des priorités aux composants du message d'état et en fonction de la priorité je vais le persister dans la base de données.

Existe-t-il une meilleure solution à ce problème?

Répondre

0

Je me demande si votre base de données ne peut pas suivre le stockage des données, car cela peut également être une lourde charge pour les serveurs d'applications de continuer à répondre aux demandes d'état.

Je ne sais pas quelles informations figurent dans les messages d'état et quelles sont les exigences. Certaines des options sont:

  • Les messages d'état peut-être (presque) identique à l'état message précédent . Dans ce cas, vous ne pouvez stocker que les nouveaux messages ou seulement les différences .
  • Conserver plus de messages (récents) en mémoire et seulement persistent chaque minute/10 secondes etc.
  • Faire persister dans la base de données plus efficace . Peut-être que vous pouvez réduire indices ou des contraintes. Vous pouvez également essayer de traiter une grande quantité de rapports de statut (et peut-être les conserver dans la mémoire pour l'interface utilisateur jusqu'à ce que le lot soit persistant).
  • Réduire le nombre de messages de rapport d'état. Peut-être que certains composants peuvent être envoyés moins fréquemment.
+0

Merci pour votre réponse. Sur votre premier point, vous avez raison. Beaucoup de données envoyées ne changent jamais. Pour cela, j'ai créé une méthode sur le serveur de l'application qui va comparer son état précédent msg à son actuel et envoyer à l'application de surveillance un message d'état qui contient seulement la différence. Sur votre deuxième point, cela ne causerait-il pas un goulot d'étranglement? Sur votre troisième point, je suis actuellement en train de regarder, mais je suis sceptique en raison du nombre massif de réponses d'état qu'il reçoit (il y a des milliers de serveurs d'application que l'application de surveillance surveille). Sur votre dernier point, ce n'est pas une option. – Vrot