pawsashatoy

Эксперт
Регистрация
2 Май 2023
Сообщения
15
Пролог
Сердцебиение сервера работает в одном "главном потоке" (aka Server main thread) с частотой 20 раз в секунду. Обновление позиций существ, работа интеллекта мобов, и многое другое зависит от этого (включая работу со всеми пакетами).

Проблема
С одним главным потоком работа крайне проста, эта система крайне практична для разработчиков плагинов, но не всё так однозначно. Тяжелые действия на одном острове могут задержать тик, и этот "лаг" заденет всех. Кроме того эта система уязвима к огромному онлайну в одном instance. Это как раз и причина разделения всех огромным гриферских серверов, где онлайн может быть свыше 10 тысяч, на 50~ разных серверов. Сейчас у Skyblock онлайн может доходить до 100, но сервер нацелен именно на этот режим, и активно пытается увеличить там онлайн. Однако при текущей системе 300 игроков уже будет держать очень сложно, а наличие 500-та игроков в онлайне будет катастрофой.

Решение
Эта проблема, конечно, не нова, и разработчики ядра Paper (его использует Mineland) создали ответвление, решающее эту проблему - ядро Folia. Это ядро создает отдельный поток на каждый регион, умно распределяя нагрузку. Лаг машина на острове не заденет ничего кроме самого острова, но главное тут то, что так можно держать огромный онлайн на одном instance.

FAQ
Q: "Но потоки не бесплатные!"
R: "И это правда, но эта проблема действительно актуальна на гриферских серверах с огромным количеством чанков в одном мире и частому появлению новых. На скайблоке это не сильная проблема".

Q: "Будут ли работать текущие плагины на Folia?"
R: "Не факт, и эта одна из реальных проблем. Конечно он так-же применяет Bukkit API, но привнесение многопоточности меняет всё, и с этой системой работать значительно сложнее".

Q: "Можно ли сразу перейти на Folia?"
R: "Нет, из-за проблемы выше".


Вывод
Это хорошее решение для возможных будущих проблем, но пока-что это не самое приоритетное. Однако приятно осознавать, что уже есть план действий на этот счёт. Реализация не прям простая, но это позволит использовать ресурсы более эффективно и экономно. Что думаете вы?
 
Последнее редактирование:
Сверху