2009-03-16 2 views
24

Я никогда не использовал распределенные кэши/DHT, такие как memcached, jboss cache, ehcache и т. Д. Мне интересно, какая из них подходит для моего использования.java распределенный кеш для низкой латентности, высокая доступность

Во-первых, я не занимаюсь веб-приложениями (поскольку большинство этих проектов, похоже, ориентированы на веб-приложения). Я пишу серверы (системы управления заказами фактически) для финансовых торговых фирм. Сами серверы не слишком сложны. Они должны получать информацию (рыночные данные, заказы, казни и т. Д.), Маршрутизируя их к месту назначения, возможно, изменяя некоторые из этих сообщений.

Я смотрю на эти продукты, чтобы решить следующие задачи:

  • Safe хранилище состояния сервера. Я предпочел бы построить логику моего приложения в виде группы трансформаторов (аналогично Apache Camel) и сохранить состояние в «безопасном» месте

  • Этот репозиторий должен быть распространен: в случае сбоя одного из этих хранилищ данных , один или два должны быть подняты, и я должен был бы легко переключаться на них

  • Этот репозиторий должен быть fast. Однозначные миллисекунды рассчитываются здесь, другими словами, системы, которые потребляют/обрабатывают эти данные, являются автоматизированными системами, а не людьми, которые нажимают на ссылки. Эта система должна иметь высокую пропускную способность и с низкой задержкой. Отправляя свои данные вне процесса, я неизбежно замедляю производительность, но я стараюсь сбалансировать абсолютную необработанную скорость и абсолютную защиту данных.

  • Этот репозиторий должен быть безопасным. Как и в случае нескольких резервных копий в режиме онлайн, этой системе необходимо записать данные на диск (возможно, более одного диска).

Я бы очень хотел прекратить писать собственные «серверы транзакций». Правильно ли я смотрю на такие проекты, как кеш jboss, ehcache и т. Д.?

Благодаря

ответ

5

Много финансовых учреждений используют Oracle Coherence для этого.

Он не будет соответствовать всем пунктам в вашем списке.

4

Я считаю, JBoss Cache является достаточно хорошим для ваших целей:

  • быстро
  • распределенных
  • транзакционных с реализацией MVCC (без чтения запирающего)
  • поддерживает JTA,
  • поддерживает асинхронный режим
  • данные о выселении в постоянное хранилище (jd bc, bdb и т. д.)
9

Hazelcast является открытым, основанным на транзакциях распределенным кэшированием для Java. Хорошо подходит для финансовых приложений. Он выпущен под лицензией Apache.

Hazelcast на самом деле немного больше, чем распределенный кеш; это распределенная реализация очереди, темы, карты, multimap, lock, службы-исполнителя для Java.

4

У вас здесь есть бесплатные бесплатные решения. Однако, если вам нужно более быстрое решение, вы можете попробовать 29 West или Solace, у которых есть надежные/гарантированные решения для обмена мгновенными сообщениями в секунду.

+1

Но ему нужен кеш – HaveAGuess

+1

@HaveAGuess. Это хороший момент, однако реализация распределенного кеша относительно проста, когда у вас есть низкая латентность. –

-2

Я предлагаю NCache из-за следующих причин,

  • Поддержка .NET и Java
  • Широкий диапазон топологий
  • Никаких изменений кода не требуется
  • высоко распределенную и масштабируемую
  • Абсолютно бесплатно (NCache Express)
+1

Я собираюсь идти дальше и догадываться, что @Timmy работает на Alachisoft. – mjaggard

+0

Это решение .NET –

3

Посмотрите на Gemfire Это высокопроизводительная сетка данных памяти. Он обеспечивает распределенный кеш, объект querieng и уведомления о событиях.

+0

Оно также может сохраняться в кеше, если это то, что вы хотите. –

2

Посмотрите на Cacheonix Distributed Cache and Data Grid. Он удовлетворяет вашим требованиям к низкой латентности и надежности, предоставляя когерентный локальный кеш и распределяя кэшированные данные на несколько серверов и реплицируя кэшированные данные. Полное раскрытие: я работаю в Cacheonix.

Смежные вопросы