2012-04-03 2 views
8

J'essaie de trouver comment implémenter la mise en cache distribuée pour les applications. Ehcache déjà utilisé pour la mise en cache dans mon projet, c'est pourquoi je cherche comment résoudre ce problème en l'utilisant. Mais, malheureusement, il semble que Terracotta Enterprise Suite est nécessaire pour cela et il est commercial. N'est-ce pas? Existe-t-il une autre solution pour utiliser Ehcache pour la mise en cache distribuée (RMI ou autre)?Est-il possible d'implémenter la mise en cache distribuée en utilisant Ehcache sans Terracotta Enterprise Suite?

Répondre

2

Vous n'avez pas besoin de la suite d'entreprise Terracotta pour regrouper vos instances Ehcache. Vous pouvez donc utiliser en cluster avec Ehcache & terre cuite aujourd'hui, avec pur OSS:

http://www.ehcache.org/documentation/configuration/distributed-cache-configuration

Edit: Ce lien a expiré. Ci-dessous le nouveau lien en rapport avec cache en cluster http://www.ehcache.org/documentation/3.4/clustered-cache.html

Maintenant, si vous avez besoin de réplication, vous pouvez utiliser d'autres mécanismes comme RMI en effet:

http://www.ehcache.org/documentation/replication/index

Bien que, seul le regroupement en terre cuite vous apporterait HA et caractéristiques comme les garanties de cohérence et similaires ...

+1

J'ai essayé d'utiliser Ehcache avec Terracotta OSS, mais j'ai échoué :( J'ai deux nœuds sur des serveurs séparés (A, B) .Chaque nœud a son propre ehcache.xml (CM) .Chaque CM contient et avoir un cache, nommé TestCache, avec à l'intérieur. Ok, l'application 'A' met l'objet dans le cache Maintenant, si 'A' sera à nouveau demandé - il retournera l'élément en cache avec succès, mais 'B' manquera Comme je le vois dans dev-console - Terracotta comprendre qu'il est commun Cache Manager et le cache est également commun pour les deux applications (parce qu'il montre hits et misses) Dois-je partager des caches manuellement? – Gadget

+0

Je veux dire, dois-je définir des configurations supplémentaires pour tc-config.xml ou à ehcache.xml? Dans tous les exemples, élément 'root' utilisé pour le "partage" des gestionnaires de cache. Mais je n'ai aucun champ cacheManager dans le code. Tout est décrit uniquement dans ehcache.xml. De plus, il existe un paramètre 'instrumented-classes' dans tc-config.xml. Dois-je répertorier toutes les classes d'objets mis en cache manuellement? Cela semble étrange si c'est le cas, car j'espère que ehcache.xml devrait suffire. – Gadget

+0

L'ajout d'un élément TerracottaConfig dans le fichier ehcache, pointant vers le serveur Terracotta, et l'ajout d'un élément Terracotta à chaque cache que vous voulez mettre en cluster devraient suffire pour vous aider à démarrer.Etes-vous sûr que le bon fichier xml est récupéré? –

0

Vous pouvez également essayer Hazelcast. C'est open source, cache distribué et est super facile à utiliser.

PS: Je travaille pour Hazelcast

+0

Hazelcast Enterprise (non libre, pour l'argent) est requis pour la réplication WAN. – AlexS

1

il existe différentes façons de mettre en œuvre cache distribué en utilisant le mécanisme de ehcache. On peut utiliser RMI ou Jgroups.

Dans l'un des projets, j'ai vécu la même situation et après quelques recherches, j'ai compris que l'utilisation du serveur Redis pour la gestion du cache est une solution simple et efficace. Je suggère cela comme une réponse parce que si vous essayez d'utiliser ehcache cela prendra du temps et augmentera la complexité et vous pouvez avoir plusieurs gestionnaires de cache dans votre espace de travail.

Questions connexes