Я создаю клиент-серверное приложение, которое будет иметь в своей основе довольно сложную (но не большую - скажем, 10,00 объектов) объектную модель. Несколько клиентов должны будут просматривать модель (через графический интерфейс Eclipse RCP), но сервер будет единственным узлом, который может напрямую редактировать модель. Я хочу, чтобы изменения в модели были опубликованы для клиентов. Новые клиенты смогут запрашивать модель и регистрироваться для получения обновлений.
Это довольно стандартный шаблон Model-View-Controller.
Кто-нибудь может предложить хорошие, реплицированные кеш-решения с открытым исходным кодом, которые будут обрабатывать распространение моей объектной модели, а также распространение изменений в модели. Я хочу, чтобы дельты отправлялись клиентам, а не отправляли полную модель каждый раз, когда изменяется одно поле.
Кроме того, мне нужно иметь возможность реплицировать граф объектов и поддерживать согласованность, например, если у меня есть объект «Персона»:
public class Person implements Serializable {
private Person manager;
private String name;
public Person (Person manager, String name) {
добавить трех человек в мой кеш:
Person boss = new Person(null,"TheBoss");
Person employee1 = new Person(boss,"employee 1");
Person employee2 = new Person(boss,"employee 2");
cache.put(new Element("boss",boss)
cache.put(new Element("employee1",employee1)
cache.put(new Element("employee2",employee2)
А затем обновите имя босса:
boss.setName("TheBossXX");
cache.put(new Element("boss",boss)
Я ожидаю, что следующий код вернет 'TheBossXX' на всех узлах:
Person e1 = (Person) cache.get("employee1").getValue()
Person b1 = e1.getManager()
LOG.info(b1.getName());
Другими словами, я хочу, чтобы мое решение знало, какие объекты ссылаются друг на друга, и поддерживаю эти взаимосвязи на всех узлах.
Интересно услышать ваши предложения.
Ник