Я оцениваю различные библиотеки распространения объектов Java (Terracotta, JCS, JBoss, Hazelcast ...) для сервера приложений, и у меня возникают проблемы с пониманием их поведения по различным осям.
Мои требования к распределенным объектам невелики - они сводятся к обмену сообщениями один-к-одному и один-ко-многим. Это еще не все, но в остальном мы просто используем JDBC, и я предполагаю, что я могу создать перед этим кеш, используя любую из доступных библиотек.
Я бы хотел систему, которая распределяет объекты и демонстрирует свойства локальности - иными словами, сервер, который захватывает объект, имеет тенденцию удерживать его без лишней связи с другими узлами. Hazelcast выглядит просто (и одноранговый это хорошо), но, похоже, требует равномерного распределения объектов по всем узлам.
Я бы хотел сохранить объекты, желательно прозрачно. Я планирую использовать EC2, поэтому у меня есть возможность временного, бесплатного, ограниченного локального хранилища (диска) и постоянного, несвободного, неограниченного хранилища (S3). Было бы здорово не беспокоиться об ошибках OutOfMemory.
Мне нравится простота и "магия" терракоты, но она пугает пчел из меня. Кроме того, чтобы по-настоящему масштабировать, вы должны тратить $$$$, в противном случае вы общаетесь с одним концентратором.
Я дешевый и хочу что-то не только бесплатное, но и зрелое, с большой базой пользователей.
Спасибо за любой вклад.