Derzeit haben wir zwei App-Server, jeder hat einen Cache auf Anwendungsebene und einen zentralisierten Datenbankserver. Um den Cache beider Server im Cache zu halten, haben wir einen JMS-Broker eingerichtet. Bei Cache-Löschen auf einem Server, der eine Nachricht an JMS sendet, da andere registriert ist, wird die Nachricht empfangen und der entsprechende Eintrag basierend auf dem Nachrichteninhalt gelöscht.
Da dieses Messaging-System beim Löschen des Cache-Eintrags Latenz hinzufügt, wird es für eine gewisse Zeit zu Inkonsistenzen zwischen Cache-Speichern auf Anwendungsebene kommen.
Wir dachten also, einen zentralisierten Cacheserver zu haben, um all diese zusätzlichen Arbeiten zu vermeiden, um alle Caches synchron zu halten.
Wir denken daran, Ehcache / Terracotta strong> oder Hazelcast , diese Cache-Hold-Ergebnismengen, Sperrinformationen und einige systemspezifische Optionen zu verwenden.
Bitte schlagen Sie die beste Cache-Lösung für uns vor.
Ich kann wahrscheinlich nicht die beste Lösung für Sie vorschlagen, aber ich werde versuchen, einige Ideen zu geben:
Hazelcast : bietet eine sehr einfach zu verwendende verteilte Map (und viele andere Dinge, die einen Blick wert sind - die verteilte SQL-Abfrage ist sehr ordentlich):
%Vor%und du bist fertig. Arbeiten Sie mit Standard-APIs auf der Karte. Hazelcast Config / Setup ist relativ einfach (im Vergleich zu Ehcache / TC). Die Überwachungs-Webapp ist auch einfach zu bedienen und hilfreich, aber es fehlen Dinge. Die Leistung sollte für einen kleinen Cluster (wie Ihre 2 Server) mehr als ausreichend sein.
Ehcache / Terracotta strong>: würde eine neue Infrastrukturkomponente in Ihr Setup einführen (Terracotta Server) - könnte ein Nachteil sein. Die Verwendung dieses Setups ist meiner Erfahrung nach sehr intensiv in Sachen Dinge, die man lernen und ausprobieren kann. Das Versprechen ist Leistung und Überwachung Einrichtungen der Unternehmensklasse.
Wenn Sie keine extrem hohen Leistungsanforderungen haben, würde ich persönlich auf Hazelcast setzen und die Komplexität von Ehcache / TC vermeiden.
Wir verwenden zentralisierte Memcached Server (wie Hibernate 2. Level-Cache und andere Caching-Anforderung) und seiner Arbeits gut für uns. Wir verwenden Memcached mit XMemcached Client und so weit seine Arbeits ohne Probleme.
Tags und Links java caching ehcache hazelcast centralized