Репликация дерева объектов
От: Суслик Россия http://www.vkkb.ru
Дата: 10.06.05 13:01
Оценка:
Меня интересует алгоритм репликации древовидной структуры объектов.
Сначала я опишу задачу, внизу задам вопросы.

1. Есть деловая компьютерная игра — пошаговый экономический симулятор финансовой деятельности предприятия. Сразу скажу, дабы не вызвать упреков в неэффективности, данных мало. Максимум — 1000 объектов ~ 2 мб.

2. Есть собственноручно написанный многопоточный сервер на основе TCP/IP. Сервер сам по себе умеет все (коннект, дисконект, передача запроса обработчику запросов), кроме того, для чего он создавался — обслуживание игрового процесса. Т.е. есть как бы фреймворк для создания игрового процесса, который еще не спроектирован.

3. По ряду причин не была выбрана "чистая" архитектура "клиент-сервер", т.е. когда только сервер хранит данные, а клиенты спрашивают нужную порцию для отображения и изменения. Была выбрана следующая архитектура — клиент и сервер хранят полную информацию, которая переодически реплицируется. Такое решение было принято по той причине, что помимо сетевой игры, нужна еще и дискетная (да, у нас бывают бедные ВУЗы). А там не набегаешься на каждый запрос с дискетой.

4. Структура данных имеет вид (приведу схематично в виде XML, хотя это просто объекты в памяти)


<game>
  <firm number = "1">
     <month number = "1" ... и еще куча атрибутов>
        ... кое какие подиченные объекты
     </month>
     <month number = "2" ... и еще куча атрибутов>
        ... кое какие подиченные объекты
     </month>
  </firm>
  <firm number = "2">
     тоже самое, что и для фирмы 1
  </firm>
  и так далее - фирм может быть до 10
</game>


5. Обращаю внимание:
а) Каждый клиент (т.е. программа фирмы) меняет только свой кусочек (т.е. свою веточку тэга <firm>.
б) Конфликтов измененений нет. Т.е. ситуация, когда один и тот же объект был изменен на сервере и клиенте недопустим.
в) Удалений объектов нет
г) Создание объектов есть.

6. Типичный сценарий взаимодейтсвия клиента и сервера такой:
а) фирма принимает решения (жмет спец. клавишу). При этом соотв. тег <firm> меняет только фирма, сервер — нет.
б) программа фирмы посылает репликационные данные на сервер.
в) сервер их заносит в свое дерево объектов. После этого фирма менять тег <firm> не может.
г) когда все фирмы заявили о готовности к переходу к след. месяцу сервер производит пересчет модели. При этом меняются теги <firm> для каждой фирмы.
д) фирмы получают порцию репликационных данных. Заносят их у себя в дерево объектов и цикл продолжается.

Что я хочу
1. Я хочу написать обобщенный алгоритм репликации объектной структуры с учетом приведенных выше ограничений. Под обобщенным алгоритмом я понимаю следующее: есть суперкласс, способный быть хозяином объектам этогть же класса, класс имеет методы, которые при указанных выше ограничениях способны провести репликацию.
2. Получить ссылочку на обобщенную теорию репликации. Я порыл разную литературу, ничего найти не смог.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.