Question

Je ne pouvais pas sembler trouver une question similaire à ce sujet.

Je suis actuellement à la meilleure solution pour résoudre un problème de calcul du réseau.

La configuration:

  • J'ai un serveur / client situation où il y a des clients [généralement muets de la plupart logique] et recevoir des instructions du serveur
  • Avoir une demande d'autorisation
  • Les clients font rapport des informations sur la vitesse de terminer la tâche (est jugée de la tâche difficile par le type de tâche)
  • Les clients recieve la meilleure tâche adaptés à leur performance antérieure (les meilleurs clients reçoivent les pires problèmes)

Finalement, les exigences seraient:

  • L'empreinte du client doit être petit et autonome - je ne peux pas avoir un client qui nécessite beaucoup à installer et à configurer
  • Le client doit être en mesure de saisir de nouveaux emplois et runtimes d'emploi à partir du serveur (il serait agréable d'avoir l'échelle du réseau à de nouveaux problèmes [et les nouveaux problèmes seraient distribués par le serveur] qui sont introduites)
  • Je dois avoir une couche d'authentification (ne doit pas être complexe ou se conformer à un ldap existant) [plus facile exigence: les clients peuvent inscrire pour une nouvelle « adhésion » et obtenir l'accès] (Je ne suis pas sûr que RMI de points forts se trouvent ici)
  • Les clients seraient en mesure d'exécuter à partir de l'Internet plutôt dans un environement en réseau
    • Ce qui signifie que le chiffrement des résultats demandés

Je suis actuellement à l'aide webservices pour communiquer entre les clients et et le serveur. Toutes les informations et les résultats va au serveur d'hébergement (J2EE).

Ma question est là une configuration du système de grille qui correspond à tous / la plupart de ces exigences, et est open source?

Je ne suis pas intéressé à faire un nuage parce que la plupart de ces tâches sont de petite taille, mais très souvent (une fois par jour, mais la tâche peut être facile, mais assure la maintenance).

Tout le code de ce système est en Java.

Était-ce utile?

La solution

Vous pouvez enquêter sur architectures spatiales , et en particulier Jini et JavaSpaces . Qu'est-ce Jini? Il est essentiellement RMI avec un mécanisme de découverte configurable. Vous demandez un implémenteur d'une interface Java, et le sous-système Jini trouve les services actuels de mise en œuvre de cette interface et informe dynamiquement votre service de ceux-ci.

En bref, vous écririez les éléments de travail dans un espace. Les nœuds du réseau seraient mis en place pour lire les données transactionnellement de l'espace. Chaque noeud du réseau prendrait un élément de travail, de traiter et d'écrire un résultat dans cet espace (ou autre espace). Le noeud de distribution peut surveiller les résultats étant réécrites (and.or pour vos horaires de résultats prévus, comme vous l'avez demandé).

Il est tout Java, et l'échelle linéaire. Parce qu'il est Jini, les noeuds du réseau peuvent charger dynamiquement leurs classes à partir d'un serveur HTTP et donc vous pouvez propager des mises à jour de code trivialement.

Autres conseils

Jetez un coup d'oeil sur haricots Grille

BOINC semble que cela fonctionnerait pour votre problème, mais vous devez envelopper java pour vos clients. Cela, et il peut être surpuissant pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top