2009-02-12 6 views
13

J'ai lu des solutions dites de «grille de données» pour la plate-forme Java, notamment Terracotta, GigaSpaces et Coherence. Je me demandais si quelqu'un avait une expérience concrète de ces outils et pouvait partager son expérience. Je suis également très curieux de savoir à quelle échelle de déploiement les gens ont travaillé: parlons-nous de 2 à 4 groupes de nœuds ou avez-vous travaillé avec quelque chose de beaucoup plus grand que cela? Je suis attiré par Terracotta en raison de son soutien "drop in" pour Hibernate et Spring, que nous utilisons intensivement. J'aime aussi l'idée de décorer le bytecode en fonction de la configuration et ne nécessite pas de programmation par rapport à une "API de grille". Je ne suis pas au courant des avantages pour les outils qui utilisent l'approche d'une API explicite mais qui aimeraient en entendre parler s'ils existent réellement. :)Que recommanderiez-vous pour une technologie de grille de données Java à grande échelle: Terracotta, GigaSpaces, Coherence, etc?

J'ai aussi passé du temps à lire sur memcached, mais je suis plus intéressé à entendre des commentaires sur ces trois solutions spécifiques. Je serais curieux d'entendre comment ils se mesurent à memcached dans le cas où quelqu'un a utilisé les deux.

+0

J'ai réalisé une grande JVM (6 à 8 Go actuellement) sur un seul serveur, en utilisant Prevayler et Memcached pour certaines tâches déchargées. Je suis très intéressé de voir quelles réponses vous obtenez. De quelle taille parlez-vous? –

+0

La plupart des déploiements que nous examinons ne sont pas énormes (4 nœuds ou moins), mais je suis vraiment curieux d'entendre parler de déploiements beaucoup plus importants, principalement pour voir si ces solutions évoluent linéairement comme le prétendent une grande partie de leur documentation. –

+1

I * toujours * upvote une bonne question de recommandation-un-chose - * surtout * si elles ont été fermées. – mtyson

Répondre

7

Nous avions 50 serveurs exécutant une application webservice et tous ces serveurs étaient équilibrés en utilisant bigIP. L'exigence était de mettre en cache chaque état de l'utilisateur de sorte que les états suivants ne fassent pas le même traitement et récupèrent les données de l'état précédent. De cette façon, le client du service web n'a pas besoin de maintenir l'état.

Nous avons utilisé Terracotta pour mettre en cache les états et n'avons jamais rencontré de problème de performance. Aux heures de pointe, le nombre d'applications demandées est de 100 par seconde.

+7

100 requêtes par secondes réparties sur 50 serveurs est une charge très très faible, sauf si les requêtes sont lourdes en termes de calculs. – stivlo

2

Je n'ai pas assez d'expérience avec ces technologies, mais je pense que Apache Hadoop s'est avéré être évolutif et fiable. Yahoo l'a couru sur 10,000 core Linux cluster.

Il est basé sur l'algorithme Google MapReduce.

This article décrit MapReduce et pourquoi vous devriez en tenir compte.

+0

Ne pensez-vous pas que Hadoop est BigData et cette question a été posée pour Big-Memory (Terracotta, GigaSpaces, Coherence). Juste une pensée. – deadpool

3

La bibliothèque que vous choisissez dépend vraiment de votre application et de ce que vous essayez d'obtenir.

J'ai travaillé pour un magasin qui utilisait Coherence pour fournir une évolutivité (et une redondance, en quelque sorte) pour ses applications Web. Nous avons trouvé que vous devez avoir environ 4-5 nœuds pour commencer à tirer profit de Coherence (2 ou 3 nœuds peuvent potentiellement réduire les performances). Je crois que les docs d'Oracle disent que vous avez besoin de beaucoup (30+) nœuds pour vraiment obtenir un avantage avec Coherence. Si vous utilisez Coherence, assurez-vous que votre matériel est configuré correctement: il est très sensible à la latence. Personnellement, je resterais loin d'un "drop-in" des choses. Ils pourraient vous donner quelque chose pour commencer, mais vous finirez par rencontrer des problèmes de synchronisation ou de performance et devrez commencer à écrire du code spécifique à votre couche de grille de toute façon. Fondamentalement, vous connaissez mieux votre application que la bibliothèque, et serez en mesure de déterminer quels éléments doivent être en cache, combien de temps ils ont besoin de vivre, comment votre application sera utilisée, etc

8

Vous voudrez peut-être Découvrez également Hazelcast. Hazelcast est une implémentation transactionnelle, distribuée/partitionnée open source de services de file d'attente, de sujet, de carte, de jeu, de liste, de verrouillage et d'exécution. C'est super facile de travailler avec; ajoutez hazelcast.jar dans votre classpath et commencez à coder. Presque aucune configuration n'est requise.

Hazelcast est disponible sous licence Apache et un support de niveau entreprise est également disponible. Le code est hébergé à Google Code.

Questions connexes