Распределенный кеш с контролем срока действия в Java - PullRequest
3 голосов
/ 18 сентября 2009

Требуется кэшировать большое количество (от 100 000 до 1 000 000) мелких объектов и контролировать срок действия отдельных объектов на основе будущих событий. Не существует временной составляющей до истечения срока действия.

Кэш должен быть доступен ряду серверов приложений (SpringSource dm Server) и в идеале должен быть распространяемым и устойчивым к ошибкам.

Я смотрел на терракоту как на возможное решение. Это хороший путь, чтобы пойти вниз? Есть ли лучший?

Ответы [ 4 ]

4 голосов
/ 10 июля 2010

Я думаю, что лучшим вариантом для вас является JBoss Infinispan (http://www.jboss.org/infinispan).. Кеш глуп, прост в настройке, поддерживает репликацию, выселение, сохранение, среди многих других вещей. Более того, кеш работает на вашем сервере приложений. Вы также можете получить доступ к кешу, используя REST, и есть абстракции для подключения к нему Hibernate.

1 голос
/ 19 сентября 2009

Мы использовали терракоту и очень довольны ею. Распределенные кеши с помощью Cic Evictors были отличным решением наших проблем.

1 голос
/ 21 сентября 2009

Рассматривали ли вы Memcached? Вы упомянули маленькие объекты конкретно: memcached отлично подходит для этого. Он распространяется и отказоустойчив, очень быстр, с открытым исходным кодом, активно используется и поддерживается везде, и имеет два великолепных клиентских API Java: Danga и Spy.

Единственное ваше требование, что memcached не соответствует, - это отсутствие компонента времени до истечения срока действия объекта. Я считаю, что максимальное количество времени, которое объект может проводить в кеше, составляет 30 дней. YMMV.

1 голос
/ 19 сентября 2009

Некоторые (более или менее) новички из мира ключевых ценностей могут стать альтернативой. Если я правильно понимаю ваши требования, Memcached швы естественной подгонки, с очень маленькими накладными расходами. Постоянное хеширование на стороне клиента даст вам достаточно хорошую отказоустойчивость.

Redis, Voldemort или Tokyo Tyrant также могут иметь значение, даже если они больше относятся к хранению, чем кешированию. Redis, в частности, имеет некоторые очень сексуальные функции (список, множество, атомарные операции ...)

...