Structure de données efficace pour conserver les informations d’état de plusieurs serveurs

J’ai un petit projet qui nécessite une connaissance de l’état de tous les serveurs actifs dans le projet.

ANALOGIE: – Dès qu’une paire quitte la table dans un hôtel, les nouvelles sont toujours prêtes à les occuper.

Mais mon cas est un peu différent. Je veux garder une trace de tous les serveurs actifs. Dites, si les serveurs A, B, C, …, Z sont tous actifs et répondent à un serveur central. Maintenant, disons, si C, P, X et Z ont perdu leur puissance et sont éteints, alors ma structure de données devrait stocker A, B, D, O, Q, …, W, Y. Et, encore une fois, si la zone des serveurs threadés était restaurée en état de fonctionnement, il serait alors facile de mettre ces serveurs dans la même voie que leur vie, c’est-à-dire qu’ils sont restaurés.

Alors, dans quelle structure de données (Java) dois-je conserver cet enregistrement afin que l’insertion et la suppression de l’état périodique soient faciles, et que la complexité soit la plus faible possible. De même, si une bibliothèque / classe de Java (Oracle) est référencée, cela serait le bienvenu et apprécié.

Un Set fonctionnerait correctement pour cela, en supposant que la commande de vos serveurs n’a pas d’importance. Vous voulez voir si un serveur est en ligne? Set.contains() Vous voulez append un serveur en ligne? Set.add() Vous souhaitez supprimer un serveur hors connexion? Set.remove()

Pourquoi ne pas simplement utiliser un tableau, donner à chaque serveur un identifiant unique de 0 à compter – 1

 int NUM_OF_SERVERS = 32; Server[] servers = new Server[NUM_OF_SERVERS]; ... // server alive servers[aliveServer.Id] = aliveServer; ... // server dead servers[deadServer.Id] = null; ... // modify server servers[serverId].property = something;