7 июня 2019-го

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Быстрее загружай

Возможно, вы заметили, что правки передаются на сервер быстрее. Или не заметили, потому что это не особенно тормозило и раньше. На прошлой неделе код сайта osm.org, Rails Port, отстранили от ещё одной части API: загрузки пакетов правок. Ваши пакеты теперь обрабатывает Cgimap.

Cgimap — это программа на C++, которая обрабатывает часть запросов к OSM API. Сайт написан на Ruby on Rails, поэтому каждый запрос к нему проходит через длинную цепочку обработчиков, не всегда оптимальную. Кроме того, передача данных от базы к клиенту в Rails требует много памяти и задействует сборщик мусора, который напрягает систему. Поэтому запрос /map на скачивание данных был переписан на C++ ещё в 2009 году.

Предполагается, что если появится API 0.7, то он целиком будет сделан внутри Cgimap. Мы давно хотим отвязать API от кода сайта, чтобы дневнички и интерактивная карта остались в Rails Port, а запросы к базе были отдельно. Но работа не кипит, скрипт обрабатывает лишь малую часть запросов. Сложным барьером была поддержка авторизации OAuth, но в 2016 году Мэтт Эймос, главный разработчик Cgimap, её сделал. В мае 2018 Mmd приступил и написал обработчик второго по количеству перекачиваемых данных запроса: /upload для отправки пакетов правок на сервер. Только в начале этого года у разработчиков дошли руки подчистить концы, отрефакторить и приступить к тестированию.

Второго марта бета-версию Cgimap 0.7.0 (это версия программы, не API) подключили к dev.osm.org, 28 марта тестирование закончилось и версию отправили в репозитории. Но у Тома, как водится, руки дошли подключить только после третьего напоминания. Пара дней ушла на настройку доступа к базе данных, и с 28 мая пакеты правок обрабатываются сервером быстрее, особенно большие. Поскольку это первый запрос, на котором Cgimap требует аутентификации, в ней нашлись несколько проблем, которые поправили в трёх версиях Cgimap за три дня.

7 июня   osm.org
30 мая 2019   · · ·
Ctrl
· · ·   18 июля 2019