Comments 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 из коробки.
Хостинг майнкрафт серверов — и зачем такая сложная архитектура?