Я бы сказал, что синхронная связь с центром вводит связь, которую вы не хотите. Следовательно, ваша асинхронная идея кажется мне очень приятной. Вероятно, в записях есть определенный идентификатор, зависящий от местоположения, так что новые создания контрактов в разных местах не будут конфликтовать, и вы принимаете некоторую задержку в репликации в центр.
Таким образом, простой случай заключается в том, что просто используйте JMS-сообщения из каждого местоположения в центр.
Приятная вещь в этой оценке заключается в том, что спутникам даже не нужно знать о структуре базы данных в центре, ее можно полностью спроектировать.
Вещи становятся более интересными, если вам также необходимо скопировать изменения с центра на спутники. Большой вопрос: можем ли мы столкнуться между изменениями в центре и изменениями на спутнике.
Простой корпус: Любой элемент данных имеет один «домашний». Например, исходный спутник - это место, где сделаны изменения. Или после создания центр - это единственное место, где можно внести изменения. В этом случае мы можем рассматривать центр как «концентратор», он может распространять изменения на спутники. Простая JMS будет отлично подходит для этого.
Немного труднее: изменения могут быть сделаны в любом месте, но только в одном месте за раз. Следовательно, мы можем ввести somne вид, если схема блокировки. Я хотел бы иметь Центр в качестве владельца и использовать синхронные веб-службы для блокировки и обновления данных. Теперь мы связаны, но это необходимо, если мы хотим иметь окончательного владельца.
Достаточно сложный корпус: каждый может изменить что угодно, не блокируя. Это своего рода подход «Акт первым, извиниться позже». Мы придерживаемся оптимистического подхода, что изменения не будут конфликтовать. Мы можем отправить изменения для одобрения в центр, и центр может либо использовать оптимистичную блокировку, либо объединить безконфликтные изменения. Я хотел бы сделать это, изменив очереди в исходнике, но фактически обработав их синхронными вызовами. Таким образом, развязка спецификации изменения от доступности центра. Некоторые более сложные базы данных имеют возможности diff/merge, которые могут помочь в этом.
Большие вопросы - это степень, в которой вы хотите быть связанными с наличием центра и вероятностью возникновения противоречивых изменений. Довольно часто хитрый дизайн приложения может значительно уменьшить вероятность конфликта.
некоторые изменения обязательно должны быть воспроизведены от центра до спутников. что бы вы предложили для этого? – Attilah
Я обновлю ответ – djna