Quelle est la meilleure bibliothèque Java au réseau / cluster activer votre application? [fermé]

StackOverflow https://stackoverflow.com/questions/383920

Question

Ceci est la possibilité d'exécuter votre application sur un cluster de serveurs avec l'intention de répartir la charge et de fournir également une redondance supplémentaire.

Je l'ai vu une présentation pour GridGain et j'ai été très impressionné.

connaissez des autres?

Était-ce utile?

La solution

Il existe plusieurs:

Maintenant, je ne l'ai pas utilisé tous ces mais je l'ai utilisé ou étudié la majorité d'entre eux.

GridGain et GigaSpaces sont plus centrées sur les grilles de calcul que la mise en cache et (imho) qui convient le mieux à grilles de calcul que les réseaux de données (voir cette explication de calcul vs grilles de données ). Je trouve GigaSpaces être une technologie très intéressante et il a plusieurs options de licence, y compris une version gratuite et une version complète gratuite pour les startups.

Cohérence et en terre cuite essaient de traiter des caches comme cartes , qui est une abstraction assez naturelle. Je l'ai utilisé beaucoup de cohérence et il est un excellent produit de haute performance mais pas pas cher. Terre cuite Je suis moins familiers. La documentation de cohérence je trouve un peu défaut à certains moments, mais il est vraiment un produit puissant.

OSCache J'ai principalement utilisé comme un moyen de réduire l'utilisation de la mémoire et de la fragmentation dans les applications Java Web comme il a une balise JSP assez propre. Si vous avez déjà regardé les pages JSP compilés, vous verrez qu'ils font beaucoup de cordes concaténations. Cette balise permet de mettre en cache efficacement les résultats d'un segment de code JSP et HTML en une seule chaîne, ce qui peut améliorer grandement les performances dans certains cas.

EHCache est une solution de mise en cache facile que je l'ai aussi utilisé dans les applications Web. Jamais un cache distribué bien, mais il peut le faire. Je tends à considérer comme une solution rapide et sale, mais c'est peut-être mon parti pris.

memcached est particulièrement prevelent dans le monde PHP (et utilisé par des sites tels que Facebook). Il est une solution très léger et facile et a l'avantage qu'il ne fonctionne pas dans le même processus et vous aurez sans doute de meilleures options d'interopérabilité avec d'autres piles technologiques, si cela est important pour vous.

Autres conseils

Vous pouvez consulter Hazelcast aussi. Hazelcast est une transaction open source, distribué / mise en œuvre partitionné de file d'attente, sujet, carte, ensemble, liste, verrouillage et exécuteur testamentaire un service. Il est très facile de travailler avec; il suffit d'ajouter hazelcast.jar dans votre classpath et commencer à coder. Presque aucune configuration est nécessaire.

Si vous êtes intéressé par l'exécution de vos tâches exécutables, appelables de manière distribuée, alors s'il vous plaît consulter la documentation distribuée Exécuteur service à http://code.google.com/docreader/#p=hazelcast

Hazelcast est disponible sous la licence Apache et le soutien de qualité de l'entreprise est également disponible.

Avez-vous envisagé Infinispan ? Il est une plate-forme de réseau de données open source, à partir de JBoss.org. Pour plus de détails, je vous recommande de lire ce (vieux) blog annonçant le projet, ainsi que des messages de blog les plus intéressants de la note, dont un sur en utilisant Infinispan avec Hibernate et comme cache autonome . Plus récemment encore, sur Enterprise Data Grid Red Hat . Il est un rapide "Preparations" Guide , et DZone refcard aussi, même vidéo YouTube:)

Je pense @ résumé de Cletus est assez bonne. Je ne voulais mentionner que Terracotta offre beaucoup plus qu'un simple cache distribué sous la forme d'une carte. Il tas Java et pôles de primitives de synchronisation, transformant un programme Java en même temps dans un programme Java distribué. Vous pouvez faire la mise en cache avec elle (y compris en utilisant des versions distribuées de libs de cache open source) ou un tas d'autres choses.

Pour la distribution de travail, il y a quelques libs supplémentaires écrites sur le dessus de la terre cuite, en particulier les tuyaux tim (pour les messages) et tim-masterworker (pour la distribution de style maître-ouvrier) sont grandes abstractions sur le dessus de la terre cuite. Cette bibliothèque est sur la Forge terre cuite:

Cette page récemment ajouté peut ajouter un peu d'informations supplémentaires par rapport à d'autres technologies de données potentielles:

JPPF est aussi agréable.

Si vous voulez aller un peu plus bas niveau, il est JGroups , qui vous offre la bases du regroupement des processus java.

Et vérifiez également ProActive

Un autre que vous pouvez ajouter à la liste est Appistry CloudIQ . Il est un environnement informatique distribué. Il est disponible en téléchargement gratuit jusqu'à 5 machines. Il comprend la répartition des charges, ainsi que automatique fail over de travail dans le cas d'une défaillance matérielle, entre autres.

Pour le calcul de la grille, vous pouvez aussi envisager Ice Grille ou DataSynapse GridServer . Ces deux des mécanismes très efficaces pour la répartition des tâches et assurer la redondance et basculent.

Je pense que votre question a été interprétée de différentes manières, vous posez des questions sur une bibliothèque que vous pouvez utiliser pour « activer cluster » votre application.

Alors que certains des libs nommés peuvent aider à fournir des fonctionnalités ci-dessus de cluster spécifiques telles que la mise en cache distribuée, la manière plus conventionnelle de permettre la gestion de la charge de travail est par l'utilisation d'un conteneur J2EE.

En mettant en place une instance de conteneur en cluster ce qui vous permet d'utiliser les fonctionnalités HA et gestion de la charge de travail, le regroupement est presque transparent au niveau de l'application. Je dis presque parce que lors de l'écriture des applications qui vont être regroupés, vous devez être prudent lorsque vous gérez l'état, par exemple, si vous avez implémenté une sorte de cache vous devez répliquer l'état du cache sur chaque machine.

Un bon point de départ serait de télécharger GlassFish et essayer de configurer une instance GlassFish en cluster.

L'espoir qui aide.

Karl

Consultez également Fura

Une réponse très tard - mais cela dépend en partie de la façon dont votre application est configurée. Vous pouvez exécuter un fichier exécutable à distance au lieu d'utiliser l'une des approches ci-dessus.

Toutes mes excuses pour le manque de liens - mais jusqu'à ce que mes représentants jusqu'à je ne peux pas poster plus d'un. Les produits en italique doivent être faciles à Google.

Si vous voulez lancer un exécutable dans une recherche paramétrique - dites que vous voulez faire tourner le même exécutable avec une gamme d'options pour chaque instance - puis une approche par lots traditionnelle fonctionne bien. Ceci est une approche très traditionnelle de calcul haute performance qui est encore largement utilisée - infrastructures appropriées pour la manipulation de ce à l'échelle de l'entreprise sont Platform LSF , DataSynapse GridServer , PBS ou il arrive à maturité Windows HPC Server . Vous pouvez également jeter un oeil à des produits open source comme Globus et Condor . Selon que la taille de votre application est, vous pourriez aussi chercher à gLite , qui est utilisé pour des projets scientifiques à très grande échelle comme le LHC.

Les avantages de l'approche HPC Trad d'avoir votre code d'application isolé des processus comprenant l'infrastructure de calcul, mais il peut prendre un coup de performance, tandis que d'autres montrent un débit plus rapide, mais être sujettes à des fuites de mémoire et d'autres problèmes pour les systèmes de temps de disponibilité à long.

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