[Evaporation Project] Разработка

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
Аватара пользователя
kub3r
Нович0к
Нович0к
Сообщения: 3
Зарегистрирован: 26.07.2010
Контактная информация:

#331 Сообщение 11.08.2010, 14:01

MOZGIII
В личку написал.

All
Предлагаю такую схему: (состряпал на скорую руку)
1. Клиент подключается к мастер-серверу и запрашивает актуальный список контент-серверов.
2. Клиент выбирает ближайший к себе контент-сервер и подключается к нему.
3. Клиент обращается к диспетчеру контента и согласовывает версии и контрольные суммы необходимых ему файлов.
4. Клиент загружает необходимые ему файлы.

Условия:
1. На сервере все GCF находятся в распакованом виде.
2. Обновление файлов на сервере происходит инкрементально (initialVersion -> diff(newVersion) -> diff(newVersion)), тем самым сохраняя возможность обновления до любой версии файла.
3. Работа с GCF происходит на стороне клиента.

Обмен данными между контент-серверами можно реализовать с помощью того же rsync.

Любой желающий может стать контент-сервером, но не может быть мастер-сервером или корневым контент-сервером (для безопасности).

Т. е. звенья:

Код: Выделить всё

MasterServer[] ->
  -> ContentServer_1 -> [read all, write ContentCoordServer]
  -> ContentServer_2 -> [read all, write ContentCoordServer]
  ...
  -> ContentServer_n -> [read all, write ContentCoordServer]
  -> ContentCoordServer_1 -> [read ContentServer, sync]
  -> ContentCoordServer_2 -> [read ContentServer, sync]
  ...
  -> ContentCoordServer_n -> [read ContentServer, sync]
Где:
MasterServer = мастер-сервер (только чтение)
ContentServer = контент-сервер (только чтение, запись только для координаторов)
ContentCoordServer = координатор контент-серверов (только чтение, для клиентов может выполнять роль обычного контент-сервера, но имеет меньший приоритет чем обычный контент-сервер)

----
P. S. Надеюсь изложил более менее понятно, на работе завал, уже 2-ая бессонная ночь :(
Изображение

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#332 Сообщение 11.08.2010, 15:04

kub3r
Всё очень хорошо и понятно изложено, впринципе ты сейчас очень красиво описал всё то о чём когда-то думал я сам %)
На самом днлн такая схема нам бы подошла, если бы у нас было достаточно контент серверов. Но у нас их нет (и одного контент сервера при такой системе будет недостаточно, нагрузка будет очень большая, к тому-же будут пиковые часы, к примеру сразу после релиза нового обовления, и вся система будет висеть из-за огромного числа клиентов).
Именно поэтому я бы немного изменил схему в сторону p2p... Однако, если мы начнём писать клиентское приложение, и сразу создадим правильную внутреннюю архитектуру, мы сможем в дальнейшем легко перейти от мастер-конент-серверной системы до смешанной а потом и полностью p2p (мастер останется, контент сервера тоже, просто они станут пирами, а лучше супер-пирами или node-пирами)
И ещё, по моим планам отдельного сервера диспечера контента не будет - он будет встроен в мастер-сервер. Кстати мастер-сервер - название здесь не подходящее, хотя всё-же с какой-то стороны суть отражает - например, аналог мастер сервера в торентах называется трекером, хотя он тоже содержит список пиров... Надо бы нам тоже название придумать своё...

Аватара пользователя
andreil
Разработчик
Разработчик
Сообщения: 781
Зарегистрирован: 14.08.2006
Откуда: Светлогорск, Беларусь
Поблагодарили: 2 раза
Контактная информация:

#333 Сообщение 11.08.2010, 18:55

kub3r Я в свое время думал над такой же схемой, только с небольшим отличием: контент-серверов как таковых нет, вместо них выступают клиенты, раздающие контент (т.е. сиды - по трекерной терминологии). Сидом можно стать, только если файл последней версии и скачан на 100%.
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).

Аватара пользователя
kub3r
Нович0к
Нович0к
Сообщения: 3
Зарегистрирован: 26.07.2010
Контактная информация:

#334 Сообщение 11.08.2010, 21:15

В принципе делать ставку только лишь на контент-сервера нельзя, официальное письмо в ДЦ или провайдеру от Valve или каких-то еще неугодных может на какое-то время оставить контент-сервер недоступным для пользователей, по-этому возможность пирингового обмена все равно должна присутствовать. (как-то сразу законодательную сторону выпустил из виду)
Изображение

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#335 Сообщение 11.08.2010, 21:28

andreil
Мы с kub3r очень продуктивно поговорили по асе, обсудили множество вопросов...

Я думаю пока расконсервировать проект. Скоро будет вики сервер со спецификациями, по которым будут в дальнейшем написан проект.
Пока-что в команду разработчиков войдём я и kub3r.

kub3r
Зайди в асю %)

Ответить Вложения 5