Идея по распределённому серверу.

 
+
-
edit
 

Balancer

администратор
★★★★★
Лог чата:

[11:12:28] <Diamond> кстати идейка у меня промелькнула, правда довольно сомнительная
[11:12:55] <Diamond> что если каким-то образом обьединить несколько серверов в один?
[11:13:30] <Diamond> это только идея, реализовать я уверен не получится )
...
[11:17:02] <Diamond> суть идеи в том, что кажды из серверов не говорит что обьединен с другими, и независимо от других раскручивается и развивается
...
[11:17:16] <Diamond> в итоге огромный онлайн
[11:17:23] <Balancer> Diamond, да, это совсем хорошо (на счёт раскрутки).
[11:17:29] <MorliDots> и огромная головная боль )
[11:18:00] <Balancer> При чём можно юзеров именно своих держать у себя (чтобы по именам не пересекаться и с БД проблем меньше).
[11:18:04] <Diamond> частая синхронизация баз - вот из за этого я думс\аю не выйдет
[11:18:20] <MorliDots> зачем частая ??
[11:18:53] <MorliDots> сделай так чтобы переходить было не выгодно
[11:19:02] <MorliDots> ну условно не выгодно
[11:19:12] <Balancer> Только систему надо делать с возможностью подмены сервера на лету. Вообще, чтобы каждый разные зоны мог сам обсчитывать или на других перекидывать. Скажем, рестартует чей-то сервер - его зоны не должны пропасть, просто на других перекидываются. Присоединяется новый - ему на обсчёт несколько зон.
[11:19:16] <Diamond> и еще одна проблема - каждый хозяин сервера должен подчинятся строгим правилам
[11:19:31] <MorliDots> это не проблема. это правила
[11:20:02] <MorliDots> АААААА. Стойте стойте. Может доработаем то что есть ??
[11:20:04] <Diamond> вот как они будут брать данные БД ?
[11:20:26] <Diamond> и переменные
[11:21:37] <Balancer> Самая простая реализация - юзер вешается на один сервер, без переключений между ними. Соответственно, БД и авторизация - родные. А вот весь обсчёт зоны (грубо говоря, события перемещений, видимости, активации AI) - передаются и принимаются с сервера текущей зоны.
[11:22:33] <Diamond> а если не так
[11:22:41] <Balancer> Делать подключение юзера к разным серверам в зависимости от зоны не факт, что вообще возможно. Клиент без релогина разве может поменять соединение на другой IP?
[11:22:58] <Diamond> прокси
[11:23:04] <Diamond> переключаемый
[11:23:22] <Balancer> так всё равно тогда вешаться клиент будет на один IP и трафик через него гнать.
[11:23:36] <Balancer> так почему бы это и не оставить обычным соединением?
[11:24:09] <Diamond> вот игрок находится в одной зоне, и берет данные с сервера этой зоны. переходит он во вторую зону, его данные целиком загружаются на сервер этой зоны
[11:24:47] <Diamond> нужен 1 прокси
[11:25:19] <Diamond> хотя не совсем так
[11:25:23] <Balancer> проблемы синхронизации полезут. нет, данные должны быть на одном сервере. а вот взаимодействие с другими объектами - это можно передавать на другой сервер.
[11:25:43] <Diamond> а как он по сети будет данные принимать?
[11:25:51] <Diamond> это же долго
[11:26:44] <Diamond> короче - суть в том что я вижу, что теоретически это осуществимо, но очень сложно
[11:27:02] <Diamond> а на практике если это и будет то далеко не сейчас
[11:27:08] <Diamond> так что надо пока забить )
[11:27:51] <Balancer> Diamond, нет, слаться будут команды, как и в случае работы с клиентом. Типа, moveTo(x,y,z), в ответ с сервера-обработчика на сервер-коннектор - возвращаются координаты игрока или команда на перемещение... Плюс обработчик шлёт коннекторы инфу addObject, deleteObject... В общем, это всё вполне реализуемо!
[11:28:26] <Diamond> много траффика я думаю
[11:28:29] <Diamond> или нет?
[11:29:22] <Diamond> хотя что это я, траффик от основного сервера к дополнительному для одного юзверя равен траффику от одного юзверя!
[11:29:34] <Diamond> )
[11:29:46] <Balancer> Фактически коннектор просто ретранслирует часть пакетов клиента обработчику. Обработчик возвращает часть серверных пакетов. У клиента трафик такой же. Межсерверный трафик будет меньше чисто клиентского, как если б клиент висел на нём. Общий трафик немного возрастёт, но менее, чем вдвое. А если серверов будет больше - то относительные потери меньше
[11:30:53] <Diamond> а если взяться за дело всерьез, и сделать какие-то универсальные методы, то даже проблем быть не должно
[11:31:08] <Balancer> Кстати, в самом простом случае - коннектор может, действительно, работать как голый прокси. Всё гнать обработчику, который он выберет и возвращать данные от обработчика клиенту. Тут, главное, чтобы проблем синхронизации данных персонажа не было.
[11:32:51] <Diamond> вот сервер 1 и сервер 2, и еще оносвной. юзверь с 1 подходит к юзверю со 2. Как он его увидит? Данные по ниму находятся в БД какого сервера?
[11:33:54] <Diamond> или все изменения БД тут же рассылаются по всем серверам?
[11:33:55] <Balancer> Каждый broadcast-метод рассылает не только по своим юзверям инфу, но и по тем серверам, которые могут видеть источник пакета.
[11:34:18] <Balancer> При чём можно даже не персонально слать пакеты, а один пакет "разошли этот броадкаст своим"
[11:34:19] <Diamond> хм а траффик
...
[11:43:10] <Balancer> Кстати, чаров, всё же, нужно держать на их родном сервере. А то прикинь, обработчик упал. Чары, которые крутились на нём перезаходят. Куда? - естественно, на свой. Обработчик же в это время вообще недоступен!
[11:43:52] <Diamond> а, ну дык так даже быстрее
[11:43:52] <Balancer> Фактически нужно делать распределённым только L2World.
[11:44:31] <Diamond> т.е. сервак практически неизменен будет
[11:44:43] <Balancer> Diamond, да, изменений будет минимум.
[11:44:43] <Diamond> он просто начнет транслировать и принимать
[11:45:01] <Balancer> Хотя лично я в межсетевом взаимодействии в Java не понимаю.
[11:45:19] <Balancer> Не работал.
[11:45:48] <Balancer> Можно, в принципе, на примере соединения геймсервера с логинсервером поковыряться.
[11:45:54] <Diamond> тогда не нужно разделать сервер на территории
[11:46:28] <Diamond> а с мобами как быть, тоже рассылать инфу?
[11:46:32] abaddon Ушел (Автостатус (неактивен))
[11:46:41] <Balancer> Diamond, с мобами - то же самое, что сейчас.
[11:46:49] <Balancer> Они на том же L2World живут.
[11:47:17] <Diamond> тогда можно все это реализовать, в отключаемом виде
[11:47:26] <Balancer> Diamond, да, можно.
[11:47:40] <Diamond> все сервера фортресс смогут по желанию транслировать
[11:48:18] <airman> всем привет
[11:48:20] <Diamond> а как с синхронизацией кланов и т п
[11:48:22] <Diamond> хай
[11:48:32] <Diamond> синхронизация 7 печатей
[11:49:16] <Balancer> Diamond тут надо думать. М.б. в лоб синхронизировать при изменениях инфу на всех серверах? Изменений не так много, наверное, будет.
[11:49:31] <Diamond> или все изменения в базе отправляются на все сервера
[11:49:46] <Diamond> периодическая синхронизация базы?
[11:49:50] <Balancer> airman, привет
[11:50:13] <Balancer> Diamond, да, и отсылка изменений и синхронизация при переконнектах серверов.
[11:50:35] <Diamond> а как с переменными
[11:50:44] <Diamond> они ж не в базе
[11:50:49] <Drac-mobile> MorliDots,с себя тикеты!
[11:51:13] <Balancer> Diamond, я не саму базу имею в виду при сонхронизации, классы.
[11:51:13] <Diamond> и еще - как с безопаснотью
[11:51:23] <Balancer> Засериализовать и слать так.
[11:51:40] <airman> Balancer: привет
[11:51:41] <Diamond> выдавать право на раздачу только проверенным серверам
[11:51:42] <Balancer> Вот безопасность - ИМХО, по принципу "пускать в сеть только своих"
[11:51:55] <Diamond> а то насоздают итемов
[11:52:14] <Diamond> и правила очень жесткие должны быть
[11:52:30] <Diamond> рейты одни
[11:52:37] <Balancer> Diamond, да. Или подумать - вдруг можно сделать как-то взаимодействие серверов с разными рейтами
[11:52:39] <Diamond> правила одни
[11:52:42] <Diamond> конфиг один
[11:53:20] <Diamond> АИ мобов придется обрабатывать на 1 сервере
[11:53:46] <Balancer> Diamond, почему на одном? Точно также, как сейчас. На L2World
...
[11:55:29] <Balancer> По рейтам - а почему бы не сделать их произвольными на разных серверах? Но при этом реализовать, наконец, механизм славы как единственный, позволяющий оценить уровень игрока. И тогда на высокорейтовых серверах игроки просто будут пропорционально меньше славы получать
[11:56:06] <Balancer> Подумаешь, кто-то на x50 быстро прокачается. Но в рейтингах всё равно народ с x1 будет
...
[11:56:31] <Balancer> Зато привлекать это сможет разные категории, как мы уже предполагали, что каждый раскручивается сам
[11:58:04] <Balancer> Блин, мне идея распределённых серверов всё больше нравится
[12:00:55] <Drac-mobile> Balancer: мне ваша идея понравилась,только сначала надо стабильность сборке вернуть
[12:01:22] <Diamond> Balancer: народу не рейтинг важен... а то что их убивают более сильные игроки
...
[12:06:38] <Balancer> Diamond, тогда делать две сети. ПвП и не ПвП
[12:06:54] <Diamond> Balancer: кстати, если ее дествительно реализовать, рейты большие отпадут
[12:07:07] <Diamond> Balancer: народу будет много, нужно будет х1
[12:07:11] <Diamond> Balancer: ну и пвп
[12:07:12] <Balancer> Diamond, хотя я этого мало понимаю, так как всё равно, даже при одинаковых рейтах, x70 убьёт x60
[12:08:05] <Diamond> Balancer: а вот у меня только развивается сервер, все х10-х40
[12:08:08] <Balancer> А вот при реализации славы - если это 70lvl, прокачанный на x50, то толку, что он убил lvl30, прокачанный на x5? Славы нет, экспы нет, дропа нет...
[12:08:29] <Diamond> Balancer: тем кто ниже нет перспектив что-либо достать это раз
[12:08:40] <Diamond> Balancer: экономика летит к чертям это два )
[12:08:58] <Balancer> Diamond, нужно ломать дурацкий стереотип уровней. Вон, в UO вообще никаикх уровней не было
[12:09:15] <Balancer> Экономика никуда не летит - экономика у нас делается замкнутая
[12:09:15] <Diamond> на х1 это важно
[12:09:33] <Balancer> За консультациями по экономике к Барме
[12:09:46] <Diamond> ну вот представь себя со стороны игрока
[12:09:48] <Diamond> глупого
[12:10:14] <Diamond> что он подумает о сервере где он х1 а большинство х100 ?
[12:10:24] <Diamond> он будет жаловаться
[12:10:38] <Diamond> мои игроки вообще просто уйдут
[12:10:51] <Balancer> Diamond, лечится элементарно (и, кстати, обкатать сперва локально идею можно) - вообще, сделать так, чтобы игрок мог выбирать свой рейт на сервере сам
[12:10:55] <Diamond> даже не выяснив подробностей )
[12:11:05] <Balancer> Точно, я это обдумаю и проверю у себя
[12:11:28] <Diamond> ну низя, вот они щас упорно качаются, думают что чего-то достигли, и потом я резко повышаю рейты
[12:11:35] <Balancer> Кто захочет - будет на x1 играть. Кто захочет - на x100. Но сделать так, чтобы были желающие играть и так, и эдак
[12:11:39] <Diamond> Balancer: тут же половина сваливает
[12:12:03] <Diamond> Balancer: нет, только 2 сервера, х1 и пвп
[12:12:09] <Balancer> Diamond, короче, я эту мысль сперва локально отработаю. Выгорит - не будет проблем с объединением разнорейтовых серверов.
[12:12:48] <Balancer> А мир надо делать один. Но придумать так, чтобы ПвП-игроки не мешали простым
 
+
-
edit
 

Diamond

втянувшийся

Мое мнение - а что думать, надо реализовывать. Только сначало привести сборку в более-менее нормальный вид.
Это даст приток разработчиков и игроков. Повысит качество кода, и решит проблему большого онлайна. Т.е. по сути решит все наши основные проблемы.
 
Это сообщение редактировалось 13.11.2006 в 04:15

stiff

разработчик l2j-сервера
Все упрется в деньги.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru