Як працюють наші розміщені світи
Твій власний світ в інтернеті, до якого друзі можуть долучитися будь-коли — і нікому не треба налаштовувати сервер. Така ідея наших розміщених світів, і в цій статті я покажу тобі, що насправді відбувається за кнопкою «Грати» на порталі.
Серце всього — WorldHost: невеликий сервіс на нашому сервері, що керує світами. Кожен світ працює у власному Docker-контейнері — повністю ізольованому, з власним файлом збереження, власним обмеженням пам’яті та власним лімітом процесора. Коли ніхто не грає, нічого не працює: світ спить, контейнер зупинено, і він не споживає ресурсів.
Коли хтось натискає «Грати» на порталі, відбувається таке: WorldHost спершу перевіряє, чи тобі взагалі можна долучатися — для світів, захищених паролем, пароль перевіряється до пробудження світу, тож ніхто не може запустити чужий світ просто спробою приєднатися. Лише тоді запускається контейнер, світ завантажує файл збереження, а ти отримуєш короткочасний токен приєднання саме до цього світу. Тим часом портал показує тобі статус «Світ прокидається…».
Коли всі гравці залишають світ, за якийсь час він знову засинає — збереження записується, контейнер зупиняється. А якщо ти волієш далі грати у свій світ локально, можеш завантажити збереження й пізніше знову його вивантажити: збереження розміщеного світу таке саме, як і в локальній грі.
Усе це свідомо збудовано невеликим: ніякого Kubernetes, ніякої хмарної магії — один сервер, Docker і сервіс, що запускає та зупиняє контейнери. Для сімейного проєкту цього вистачає на напрочуд багато. Наскільки саме багато і скільки коштує такий сервер — це історія для статті про наш VPS.
Коментарі