Insights / Технические материалы
Миграция Dynmap на тайлы 512px: проверка публикации и очистка R2
Проверка области рендеринга, обычных и масштабированных изображений и хранения R2. Пример восьми серверов и 89 карт показывает проверки до удаления и условия сравнения затрат.

Содержание
Мы изменили формат изображений Dynmap, который раздаёт карты через Cloudflare R2, и очистили старые данные. Работа охватила восемь серверов и 89 карт. Важнее всего был порядок действий: сначала проверить новые изображения на публичной карте, затем удалить старые.
Что сравнить перед миграцией тайлов Dynmap
Перед выбором тайлов 512px сравните обычные и масштабированные изображения в одинаковой области рендеринга. Отдельно учитывайте запросы просмотра и операции записи. Сначала составьте список старых префиксов; решение об удалении принимайте после проверки публичных изображений и возможности повторного рендеринга мира.
R2:Измерение объёма и операций
Поэтапный переход с ограниченной областью рендеринга
Рабочие карты привели к тайлам 512px. Для 21 карты, требовавшей дополнительной прорисовки, область ограничили радиусом 2 000 блоков вокруг публичного центра. Завершения рендеринга всего мира не ждали; обычные обновления продолжались во время перехода.
Мы также улучшили повторные попытки после ошибок связи с R2, сохранение ожидающих обновлений после ошибок записи и различение отсутствующего тайла масштаба и ошибки чтения. Исправление возобновления обновления масштабных тайлов после перезапуска описано в PR #9 форка Dynmap. Эти изменения не исключают сбоев на стороне Cloudflare.
- Ограничить область и создать новые тайлы Определить формат 512px и область рендеринга, создавая новые изображения поэтапно при обычном обновлении.
- Проверить публичные изображения и хранилище Отдельно проверить обычные и масштабные изображения, веб-ресурсы, оперативный JSON и заданные префиксы хранения.
- Удалить старые данные после аудита Удалять старые изображения и hash после аудита. Резервной копии нет; при необходимости их нужно заново построить из мира.
Проверять публичную карту и хранилище отдельно
После перехода мы проверили по одному обычному и масштабному изображению для каждой из 89 опубликованных карт — всего 178 изображений. Подтвердили размер 512px, проверили веб-ресурсы и обновление оперативного JSON. В R2 сверили пути хранения с 89 рабочими префиксами и убедились, что 192 старых префикса обычных и дневных изображений пусты.
Лишь затем удалили 11 707 356 старых объектов изображений и hash-файлов, около 51,71 ГБ. Содержимое старых изображений не сохранено: при необходимости их придётся заново построить из миров. Текущие изображения, миры и резервные копии конфигурации и JAR сохранены. Заключительная проверка подтвердила отсутствие старых изображений, переходных данных и hash-файлов; одного успешного завершения процесса удаления было недостаточно.
Не приравнивать изменение объёма к сумме счёта
В двух последовательных 24-часовых интервалах, включавших миграцию, число успешных PutObject снизилось с 240 835 до 90 423. Оба интервала включали работы по переходу, поэтому это не показатель снижения при обычной работе и не оценка месячных расходов. Сумма счёта не проверена.
При похожих переходах изучайте отдельно метрики операций и хранения R2, затем по порядку проверяйте публичную карту, текущие изображения и старые данные. Область удаления и способ восстановления нужно определить до очистки.