Как спиратить планету
Две недели назад появился новый способ скачать огромные (от полусотни гигабайт) файлы планеты: через торренты. Все файлы в каталогах planet и pbf — выгрузки в bzip2 и pbf, полная история и пакеты правок — сопровождаются ссылками на файлы torrent, которые легко открыть в µTorrent или Transmission. Советую забыть про прямые ссылки и качать планету только так.
Хотя торренты ассоциируются с пиратством, их используют ещё и для распространения крупных файлов: например, дистрибутивов Linux. В отличие от обычного скачивания с сайта, через торренты вы загружаете файл сразу с нескольких источников — среди них зачастую даже нет исходного. То есть, ваш файл планеты будет скачиваться с компьютеров тех, кто уже его скачал, а серверы OSM освободятся. Учитывая пропускную способность серверных каналов и нередкие ограничения трафика, скачивать через торренты обычно быстрее, чем напрямую.
Сайт planet.osm.org встречает предупреждением, что скорость ограничена четырьмя мегабайтами в секунду: скачивание планеты в pbf должно занять четыре часа. На практике — дольше: запросы на крупные файлы отправляются на вспомогательный сервер gwdg.de. В эксперименте он отдавал файл на 100-300 килобайтах в секунду, так что расчётное время скачивания превышало двое суток. Впору поискать пиратку.
Кристиан Квест из французского OSM занялся торрентизацией планеты в январе этого года. Как он объяснил в анонсе, файл торрента создаётся через пару часов после публикации планеты, и затем данные раскладываются по нескольким серверам. Также подключается функция web seed, доступная в некоторых клиентах, с помощью которой исходные файлы тоже становятся частью сети. Всё это позволяет скачать планету за полчаса — а через пару дней, когда скачавших прибывает, можно управиться и за 15 минут.
Ограничение скорости на нашем сервере ввели в том же январе. Причиной была узость канала: всего гигабит в секунду. Обычные 30-60 одновременных скачиваний планеты забивали его так, что начинали сыпаться другие сервисы, включая DNS и API. Тогда скорость порезали до 400 кБ/с, а в феврале, когда канал расширили до десяти гигабит, ограничение ослабили. Но проблема с тысячью скачивавших каждый файл планеты сразу после его публикации (четверть из них — в формате bz2) осталась: зачем, когда есть диффы? И как ослабить нагрузку на сервер, чтобы не мешать нормальным людям?
Чтобы не зависеть от французского сервера и ускорить создание торрента, весь процесс нужно было перенести на сервер OSMF. Этим Грант Слейтер занимался с августа. Оказалось, что торренты делал ещё и Матия Налис из Хорватии: его скрипты легли в основу официальных. 23 ноября торренты появились в списке файлов сервера, и несколько дней спустя они охватили и дампы с полной историей. Теперь пора и нам переключиться на скачивание торрентов вместо прямых ссылок.
Как видно, инфраструктура OSM не стоит на месте: новые технологии, пусть и с десятилетней задержкой, приходят на наши серверы. Что дальше? Репликация. Диффы сейчас создаются программой Osmosis. Два года назад её автор Бретт заявил, что хватит с него, программе 11 лет и есть другие варианты. Обновлять базу теперь можно с PyOsmium (пример для тайлов), а вот создавать диффы из живой базы — увы. Osmosis использовал какую-то устаревшую магию, заменить которую безуспешно пытаются с 2017 года. Но решение, кажется, появилось: Йохен Топф летом написал замену, и две недели назад началось тестирование новых диффов. Когда основные ошибки отловят, Osmosis окончательно выкинут с серверов. Пока же Майк Мигурски подхватил его поддержку и время от времени выпускает заплатки.