Как работает MultiPaper
MultiPaper позволяет администратору сервера управлять одним миром на нескольких серверах Minecraft, что позволяет превысить печально известный лимит в 250 игроков на сервере Minecraft. Как это делается?
Архитектура MultiPaper
Начнем с того, что в MultiPaper есть различные компоненты, которые позволяют ему работать:- Главная база данных
- Серверы MultiPaper
- Дополнительный балансировщик нагрузки (BungeeCord, Velocity, TCPShield и т.д.)
- Игроки
1. Главная база данных
Главная база данных - это то, что позволяет серверам хранить данные в центральном месте, доступ к которому обеспечен всем серверам. Серверы хранят в этой базе данных чанки, данные об уровнях, данные об игроках, забаненных игроках и многое другое. Эта база данных также отслеживает, какой блок принадлежит какому серверу, и координирует обмен данными между серверами.
2. Серверы MultiPaper
Серверы MultiPaper заменяют ваш сервер Spigot или Paper. Они представляют собой форк Paper с оптимизациями как от Airplane, так и от Pufferfish, обеспечивающими наилучшую возможную производительность и при этом совместимыми с экосистемой плагинов Bukkit.
Главная база данных отлично подходит для хранения данных, но не так хороша при попытке синхронизировать данные между серверами в режиме реального времени. Вот тут-то и вступают в силу одноранговые коммуникации. Каждый сервер MultiPaper подключается друг к другу, что позволяет обновлять данные между ними в режиме реального времени. Если игрок на сервере A атакует другого игрока на сервере B, сервер A отправит эти данные прямо на сервер B, чтобы сервер B нанес игроку урон и применил любой ответный удар.
Серверы MultiPaper также помечают блоки и сущности в каждом загруженном чанке. Однако время ускорилось бы, если бы несколько серверов одновременно отметили один и тот же чанк. Таким образом, серверы координируют свои действия с главным сервером, чтобы гарантировать, что каждый чанк помечается только одним сервером.
3. Балансировщик нагрузки (опционально)
Вам нужно будет равномерно распределить своих игроков между серверами, в противном случае MultiPaper будет бесполезен и не сможет дать вам никакого прироста производительности. Вы могли бы предложить 50 игрокам присоединиться к серверу A, а еще 50 игрокам присоединиться к серверу B, но эта система плохо масштабируется, поскольку новые игроки постоянно хотят присоединиться к вашему серверу. Вместо этого должен быть установлен балансировщик нагрузки, который сделает это за вас.
Балансировщик нагрузки автоматически распределяет игроков между серверами, чтобы равномерно распределить нагрузку между каждым сервером. Ниже перечислено несколько вариантов того, как это сделать с серверами Minecraft. Крупные сервисы могут даже иметь свой собственный пользовательский балансировщик нагрузки, который также может быть применен к MultiPaper.
- Прокси-сервер BungeeCord с плагином - PlayerBalancer.
- Прокси-сервер Velocity с плагином VelocityLoadBalancer.
- TCPShield который включает в себя встроенный балансировщик нагрузки и защиту от ddos-атак.
4. Игроки
И, наконец, вам нужны игроки. Использование MultiPaper бессмысленно, если игроков недостаточно даже для заполнения обычного сервера Minecraft.