Распределенная система кэширования на уровне данных, которая удовлетворяет всем этим критериям? - PullRequest
3 голосов
/ 03 июля 2011

Мне нужно выбрать распределенную систему кэширования на уровне данных, которая может соответствовать следующим условиям.

Должен иметь

  1. Кэши должны выполняться в отдельном процессе и могут вызываться через TCP / UDP. Мы не хотим запускать кэш в том же пространстве памяти JVM, где в данный момент выполняется веб-приложение.
  2. Кэши должны быть распределены по нескольким серверам кеша, чтобы исключить любую единственную точку отказа.
  3. Сериализация должна быть прозрачной в большинстве случаев и не должна требовать от разработчиков реализации методов или интерфейсов для каждого отдельного класса, который должен кэшироваться.
  4. Единый API для всех типов кэша. Разработчикам не нужно изучать несколько API для чтения / записи различных объектных деревьев.
  5. В конце концов, в соответствии. Быть всегда непротиворечивым - это дорогое предложение, требующее фиксации фазы n для всех узлов кластера. Нам не нужна такая сложная система.
  6. Отказоустойчивый ака Изящная деградация. Если вся система кеширования выйдет из строя, приложение все равно может работать, хотя производительность при этих обстоятельствах понизится.
  7. Автоматическое удаление кэша на основе таких конфигураций, как LRU, FIFO и т. Д.
  8. с открытым исходным кодом и бесплатно. Наличие исходного кода определенно помогает, как показал наш опыт работы с Solr и Active MQ. Мы готовы приобрести коммерческую поддержку, как и в случае с Solr, но сам программный продукт должен быть бесплатным.
  9. Динамическое членство в кластере. Весь кластер распределенного кэша не должен требовать перезапусков при добавлении или удалении какого-либо узла.
  10. Высокая надежность. Решение для кэширования должно быть надежным перед лицом проблем с сервером и сетью и может обрабатывать проблемы согласованности данных, которые могут возникнуть из-за сбоев сервера или сети, состязаний при записи и т. Д.
  11. Высокоэффективный. Представьте, что кэш-память работает даже медленнее, чем Oracle!
  12. Дополнительные отметки, если сервер кэширования основан на Java, так как именно в этом команда разработчиков наиболее удобна.
  13. Высокая доступность данных кеша. Это означает, что репликация данных кэша на несколько узлов такова, что потеря одного узла не означает потерю всех кэшированных данных на этом узле. Мы планируем хранить Java Http Session Objects, чтобы мы также могли переносить сессию.

Приятно иметь

  1. Веб-консоль для мониторинга и управления всеми узлами сервера кэширования или, по крайней мере, API, с помощью которого мы можем создавать предупреждения и уведомления.

Ответы [ 3 ]

0 голосов
/ 03 июля 2011

Если это для веб-решения, почему бы не рассмотреть вместо этого кэширование на уровне веб-фрагментов и использовать Varnish - https://www.varnish -cache.org / - для обработки кэширования?

Причина этого проста, кэширование сложно, особенно для важных данных.

0 голосов
/ 02 января 2014

По состоянию на 1 января 2014 года я бы сказал, что следующие два выглядят наиболее перспективными

  1. Hazel Cast Open Source Edition
  2. Проект Волдерморт
0 голосов
/ 03 июля 2011

Помимо веб-консоли, вы сможете достичь этого с большинством доступных профессиональных кешей.

Я бы начал с терракоты, эхэша или фундука.

Вот список лучших кешей

http://www.java -sources.net / с открытым исходным кодом / кэш-решения

...