Как стать автором
Обновить

Хостинг майнкрафт серверов — и зачем такая сложная архитектура?

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров13K
Всего голосов 16: ↑16 и ↓0+21
Комментарии22

Комментарии 22

По сути, данный хостинг - это ваш pet-проект, на котором вы внедряете новые технологии и прокачиваете свои профессиональные навыки. А небольшой, но стабильный источник дохода позволяет дополнительно гордиться этим проектом. Поздравляю, у вас получилось сделать хобби, которое приносит деньги. Многие люди об этом мечтают, а вам удалось это реализовать на самом деле.

P.S. Предыдущая статья с кучей фоток (https://habr.com/ru/articles/788204/) была просто огонь! До сих пор вспоминаю её с теплотой в душе.

спасибо большое за приятные слова

А можно повторю свой тупой детский вопрос в другой формулировке?

Какой в принципе самый простой домашне-любительский способ «раскластеризовать» что-нибудь джавовое, типа сабжа, на несколько слабых компов?

честно говоря, я не знаю/не подскажу - таким мы не занимаемся

А как работают серваки, где один огромный мир на дофигиллион пользователей, и каждый роет свой уголок, требуя обсчитывать свои чанки? Там вроде в сервере нативной кластеризации нет, то есть один мир — один демон, так?

Или там железо типа «восьмипроцессорная 64-ядерная по терабайту памяти на каждый проц»?

Не существует серваков с дофигилионом игроков в одном мире. Сам сервер майнкрафта не способен такое выдержать из за плохой оптимизации, там даже в железо особо не упрешься. Все крупные сервера это на самом деле много серверов, между которыми автоматически распределяются игроки. Потолок одного сервера это 100 человек онлайн в один момент времени

То есть способ синхронизации общего мира для кучи запущенных одновременно демонов в Мине таки существует? А как, если там, допустим, один игрок лепит домик из грязи, а другой в том же чанке — из камня, и оба заприватили, а серверные процессы про это могут узнать только в тот момент, когда чанки выгрузили из рамы в общий, скажем, Цеф и увидели, что у них там конфликт (ну или как вообще в принципе можно несколько демонов для одного мира запустить, мне казалось, что в Мине это технически невозможно, они за файлы передерутся)?

Не, ну если по сто человек на мир, а у сервера свой мир — тут всё просто. Но вроде бы как-то собирали и больше народу на мир, или я путаю?

Короче, я, наверное, всё-таки путаю. Сейчас погуглил — на 2b2t не просто так очередь по тысяче человек стояла.

Но сделать это всё-таки можно, если в Цефе хранить чанки и слегка допилить напильником серверные демоны. Кто первый встал — того и тапки, остальные получают ридонли-чанк и любые попытки в нём чего-то делать вызывают ошибку а-ля «запривачено».

Улучшайзер 1: при попытке копать выкидываем игрока и автологиним его на тот сервер, который занял чанк. Пара секунд на релогин — и всё работает. Заодно распределяем нагрузку чисто географически.

Улучшайзер 2: «Медведь пришёл!» Если впёрся юзер, запривативший себе больше половины области — все демоны добровольно-принудительно скидывают чанки и переходят в ридонли, а его сервер получает полный доступ.

Минус: мобы могут на разных серверах видеться по-разному, но, конечно, поймать кластер за руку на этом будет непросто :)

В целом - никакого способа распилить цельную софтину на несколько слабых компов не существует.

Даже джавовую с кучей потоков? Просто ну как бы задача «раскидать потоки по разным машинам, общее пространство памяти реализовать на манер свопа» — на первый взгляд вполне ОК…

Просто надо это всё постоянно профилировать, и если два потока каждый байт друг другу через атомарки посылают, их волей-неволей придётся на одной машине держать. Но ведь такую инфу тоже можно извлечь из статистики свопа, не так ли?

Да, в худшем случае они все соберутся на самой мощной материнке, а остальные будут просто своп-девайсами работать по гигабитной сетке. Ну, если такая архитектура у ПО, то так тому и быть — лаги обмена перевесили темпы вычислений, профилировщик выбрал меньшее зло, все живы.

Но, как правило, в реальной жизни данным всё-таки свойственно «кучковаться», не так ли? Один игрок на севере мир копает, другой — на юге, для каждого загружены свои чанки, связность данных между ними околонулевая…

Я даже для нативного кода вижу это более-менее возможным (если все системы как две капли воды), а уж для джавы…

Молодцы ребята

А можно кратко о (не)возможности действующей модели хостинга в локалке? Штучки четыре 2-4-ядерных проца на древних однопроцовых материнках, убунта с образа (LAN boot), один хард на всех… Игрушечная версия, так сказать :)

А то я споткнулся ещё на стадии тестового запуска Forge Server (именно форж, обычный ОК) на одной убунтовой машине: одной жавы ему мало, другой — много (что в теории вроде невозможно) О_о

У джавовского майнкрафта (каноничного, потому что после покупки МС появились фирменные не-java версии) с модами вообще всё сложно. Майнкрафт, он типа-как-бы закрытый в плане кода, но защита там (намеренно?) никакая. И, если сильно обобщить процесс, то установщик Форджа декомпилирует майн на лету, патчит получившиеся сорцы, цепляясь своими хуками и обёртками в нужные места, а потом собирает всё это обратно. Получившийся франкенштейн собирается под конкретную версию джавы, потому так к ней требователен. И все делают вид что всё норм. Модеры получают возможность писать моды, а МС делает вид что их код защищён и интеллектуальная собственность не пострадала, и нет поводов усиливать безопасность. Может конечно сейчас что-то поменялось, но когда я писал свои моды лет 5 назад, всё так и было.

А, вот оно что :) Спасибо :)

А где там указана версия а требованиях? Если что, версия 1.19.4-45.0.24, простыня ошибок огромная, но в ней бросается в глаза caused by: java.lang.BootstrapMethodError: java.lang.IllegalArgumentException: Unsupported class file major version 65.

Ну там где качаешь там обычно и указывают. Я не парился с установкой, брал уже пропатченую.

Возьмите всё-таки версию forge посовременнее, вашей уже почти полтора года. Плюс первый запуск - делайте без модов, а потом добавляйте их небольшими партиями. Просто потому что моды могут быть собраны под конкретную версию java и вызывать такую проблему совместимости.

первый запуск - делайте без модов

Ооо, ща попробую, спасибо. Может, дело действительно в модах, не в самой Кузне…

Увы :(

У вас бекап прямо вот всей папки сервера? У самого дома сервер майна со сборкой GTNH, и встроенные моды-бекаперы, например AromaBackup, давали по ~500мб бекапа. Это прямо больно как-то даже, особенно если бекап раз в час. Переехал на инкриментальную бекапилку restic и получил 30-40мб за снапшот, с гибкой настройкой сколько снапшотов за какой период хранить и работой с S3 на том же minio из коробки.

мы делаем бекап всей папки и затем инкрементальные бекапы

статья огонь, жму руку.

не переродились еще балконные хостеры)

топ!!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории