Java-распределенный кеш для низкой латентности, высокая доступность
Я никогда не использовал распределенные кеши /DHT, такие как memcached, jboss cache, ehcache и т.д. Мне интересно, какая из них подходит для моего использования.
Во-первых, я не занимаюсь веб-приложениями (поскольку большинство этих проектов, похоже, ориентированы на веб-приложения). Я пишу серверы (системы управления заказами фактически) для финансовых торговых фирм. Сами серверы не слишком сложны. Они должны получать информацию (рыночные данные, заказы, казни и т.д.), Маршрутизируя их к месту назначения, в то же время изменяя некоторые из этих сообщений.
Я рассматриваю эти продукты для решения следующих проблем:
-
Безопасный репозиторий состояния сервера. Я предпочел бы построить логику моего приложения в виде группы трансформаторов (похожей на Apache Camel) и сохранить состояние в безопасном месте.
-
Этот репозиторий должен быть распространен: в случае сбоя одного из этих хранилищ данных должно быть еще одно или два, и я должен иметь возможность легко переключаться на них
-
Этот репозиторий должен быть быстрым. Однозначные миллисекунды рассчитываются здесь, другими словами, системы, которые потребляют/обрабатывают эти данные, являются автоматизированными системами, а не людьми, которые нажимают на ссылки. Эта система должна иметь высокую пропускную способность и низкую задержку. Отправляя свои данные за пределы процесса, я обязательно замедляю производительность, но я стараюсь сбалансировать абсолютную необработанную скорость и абсолютную защиту данных.
-
Этот репозиторий должен быть безопасным. Как и в случае нескольких резервных копий в режиме онлайн, этой системе необходимо записать данные на диск (возможно, более одного диска).
Мне бы очень хотелось прекратить писать собственные "серверы транзакций". Правильно ли я смотрю на такие проекты, как кеш jboss, ehcache и т.д.?
Спасибо
Ответы
Ответ 1
Hazelcast - это открытое, транзакционное, распределенное кэширование для Java. Хорошо подходит для финансовых приложений. Он выпущен под лицензией Apache.
Hazelcast на самом деле немного больше, чем распределенный кеш; это распределенная реализация очереди, темы, карты, мультимапа, блокировки, службы-исполнителя для Java.
Ответ 2
Многие финансовые учреждения используют Oracle Coherence для этого.
Он не будет соответствовать всем пунктам в вашем списке.
Ответ 3
Я считаю, JBoss Cache достаточно хорош для ваших целей:
- быстро
- распределяется
- транзакция с реализацией MVCC (без блокировки чтения)
- поддерживает JTA
- поддерживает асинхронный режим
- данные о выселении в постоянное хранилище (jdbc, bdb и т.д.)
Ответ 4
Здесь у вас есть хорошие бесплатные решения. Однако, если вам нужно более быстрое решение, вы можете попробовать 29 West или Solace, которые имеют надежные/гарантированные решения для обмена сообщениями в течение 100 секунд.
Ответ 5
Посмотрите Gemfire его высокопроизводительную сетку данных памяти. Он обеспечивает распределенный кеш, объект querieng и уведомления о событиях.
Ответ 6
Посмотрите Распределенный кэш и сетку данных Cacheonix. Он удовлетворяет вашим требованиям к низкой латентности и надежности, предоставляя когерентный локальный кеш и распределяя кэшированные данные на несколько серверов и реплицируя кэшированные данные. Полное раскрытие: я работаю в Cacheonix.
Ответ 7
Я предлагаю NCache из-за следующих причин:
- Поддержка .NET и java
- Широкий диапазон топологий
- Не требуется изменение кода
- Высоко распределенный и масштабируемый
- Абсолютно бесплатно (NCache Express)