Встраивание кэширующего TMS-сервиса в собственное приложение
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Встраивание кэширующего TMS-сервиса в собственное приложение
Написал статью, приглашаю к критике.
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Гуру
- Сообщения: 977
- Зарегистрирован: 27 янв 2009, 22:57
- Репутация: 258
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
Нет ссылки на портал. Google нашел решение от компании 'Совзонд"Представленный вариант интеграции возможностей TileCache был использован компанией NextGIS при разработке картографической подсистемы портала системы государственного информационного обеспечения в сфере сельского хозяйства (СГИО СХ).
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
возможно и не будет ссылки, это к Ланиту вопрос, где он и работает ли вообще.
пристегивайтесь, турбулентность прямо по курсу
- vasnake
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 23 май 2013, 16:42
- Репутация: 6
- Откуда: Москва
- Контактная информация:
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
Отличная статья. На примере решения реальной задачи показаны способы использования толковых инструментов. Всё четко и ясно изложено.
Критика целиком положительная
Критика целиком положительная
It ain't easy. It just proves how great I am.
-
- Гуру
- Сообщения: 588
- Зарегистрирован: 30 мар 2009, 21:53
- Репутация: 55
- Откуда: Королев
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
Статья супер!
Как и проделанная работа. Нужно бы взять на вооружение постгрес хранилище тайлов
Денис, а как у тайл бэкенда с производительностью? Как постгресс ведет себя при многопоточной записи? Если запустить принудительное сидирование в несколько процессов, как быстро идет процесс? Какова производительность записи тайлов в БД?
Не совсем понял, как осуществляется создание и контроль лок фалов? Или в ТайлКэш они не используются?
Как и проделанная работа. Нужно бы взять на вооружение постгрес хранилище тайлов
Денис, а как у тайл бэкенда с производительностью? Как постгресс ведет себя при многопоточной записи? Если запустить принудительное сидирование в несколько процессов, как быстро идет процесс? Какова производительность записи тайлов в БД?
Не совсем понял, как осуществляется создание и контроль лок фалов? Или в ТайлКэш они не используются?
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
Денис, и введение хорошо бы переписать более четко, сейчас так много "если" и такая высокая вложенность, что приходится перечитывать раз 5, чтобы врубиться в чем же суть задачи.
Возможно стоит написать: Проблема, цель, задачи с краткими определениеми.
Я уверен, что они уже есть, но показалось, что малость тяжеловато изложено.
Возможно стоит написать: Проблема, цель, задачи с краткими определениеми.
Я уверен, что они уже есть, но показалось, что малость тяжеловато изложено.
пристегивайтесь, турбулентность прямо по курсу
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
2yellow-sky
Параметры производительности не тестировались, нужно будет попробовать как-нибудь. Поддержка лок файлов есть в Tilecache, но в случае с СУБД в роли бэкенда от них, в принципе, можно отказаться.
2Максим Дубинин
А можешь предложить свой вариант введения? я написал его как видится мне. Но если ты уловил его смысл, то, наверное, будет несложно переформулировать.
Параметры производительности не тестировались, нужно будет попробовать как-нибудь. Поддержка лок файлов есть в Tilecache, но в случае с СУБД в роли бэкенда от них, в принципе, можно отказаться.
2Максим Дубинин
А можешь предложить свой вариант введения? я написал его как видится мне. Но если ты уловил его смысл, то, наверное, будет несложно переформулировать.
Spatial is now, more than ever, just another column- The Geometry Column.
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
Денис, глянь ка, я довольно серьезно там подредактировал, не уверен, что не поломал местами логику. Но мне кажется стало понятнее)
пристегивайтесь, турбулентность прямо по курсу
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
Да, всё нормально, спасибо!
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 11 мар 2009, 10:03
- Репутация: 0
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
По поводу производительности, разработал такую схему:
OpenLayers делает запрос тайла с ТМС сервера, его встречает Nginx, проверяет, если такого файла на диске нет, то проксирует на TileCache. Далее тилекеш сконфигурирован обращаться на WMS (mapserver + apache2) за картинкой. В файл Service.py (из комплекта TileCache) вставляю вызов своей функции:
которой и передаю готовый обьект таил
if not image:
data = layer.render(tile, force=force)
if (data): image = self.cache.set(tile, data)
else: raise Exception("Zero length data returned from layer.")
+ pg_log.save_to_db(tile,(time.time() - start)) ##### добавленная строка
if layer.debug:
sys.stderr.write(
"Cache miss:layer %s, %s, Tile: x: %s, y: %s, z: %s, time: %s\n" % (
tile.layer.name, tile.bbox(), tile.x, tile.y, tile.z, (time.time() - start)) )
else:
вызываемая функция обрабатывает обьект, заносит в базу координаты бокса ссылку на обьект, xyz - координаты, имя слоя, четвертует для создания квадратичного дерева тайлов. Но сам файл в базу не попадает.
папка для кеша TileCache монтируется по сети с сервера с Nginx. И при повторном обращении к этому тайлу - он уже будет доступен для Nginx-а.
После генерации кеша - работает только специально заточенный для отдачи статики фронтэнд Nginx. База не нагружена. Питон не работает. Существенная экономия ресурсов)))
Если есть вопросы - в личку, обязательно помогу.
OpenLayers делает запрос тайла с ТМС сервера, его встречает Nginx, проверяет, если такого файла на диске нет, то проксирует на TileCache. Далее тилекеш сконфигурирован обращаться на WMS (mapserver + apache2) за картинкой. В файл Service.py (из комплекта TileCache) вставляю вызов своей функции:
которой и передаю готовый обьект таил
if not image:
data = layer.render(tile, force=force)
if (data): image = self.cache.set(tile, data)
else: raise Exception("Zero length data returned from layer.")
+ pg_log.save_to_db(tile,(time.time() - start)) ##### добавленная строка
if layer.debug:
sys.stderr.write(
"Cache miss:layer %s, %s, Tile: x: %s, y: %s, z: %s, time: %s\n" % (
tile.layer.name, tile.bbox(), tile.x, tile.y, tile.z, (time.time() - start)) )
else:
вызываемая функция обрабатывает обьект, заносит в базу координаты бокса ссылку на обьект, xyz - координаты, имя слоя, четвертует для создания квадратичного дерева тайлов. Но сам файл в базу не попадает.
папка для кеша TileCache монтируется по сети с сервера с Nginx. И при повторном обращении к этому тайлу - он уже будет доступен для Nginx-а.
После генерации кеша - работает только специально заточенный для отдачи статики фронтэнд Nginx. База не нагружена. Питон не работает. Существенная экономия ресурсов)))
Если есть вопросы - в личку, обязательно помогу.
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 11 мар 2009, 10:03
- Репутация: 0
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
А вообще статья мне понравилась. пишите еще, очень интересно!
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
Вы наступаете на больную мозоль и нарушаете правила (3.2.4). Здесь форум для открытого общения.Olax писал(а):Если есть вопросы - в личку, обязательно помогу.
Здесь мы обсуждаем статью автора и технологию, которую он открыто написал и открыто предоставил для редакции и обсуждения. Он не написал: "Я сделал крутой тайловый кэш на питоне. Обращайтесь за подробностями в личку".
Если вы хотите играть по правилам, которые здесь уважают - напишите статью, мы будем благодарны.
пристегивайтесь, турбулентность прямо по курсу
-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 11 мар 2009, 10:03
- Репутация: 0
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
Прошу прощения, за свое поведение, дело в том что мне пришлось до всего доходить самому, без чей либо подсказки, или тычка в верном направлении. Поэтому мои наработки выглядят, так сказать "непрофессионально". Вставил там строчку, там функцию и т.д. Исходя из этого, не чувствую за собой готовности выкладывать свои аматорские решения на весь мир и тем более писать статью о своих костылях.
Наверно единственное, чем я могу поделиться в виде статьи - это скрипт генерации кеша тайлов всех зумов и только определенного района. Дайте знать.
Наверно единственное, чем я могу поделиться в виде статьи - это скрипт генерации кеша тайлов всех зумов и только определенного района. Дайте знать.
-
- Гуру
- Сообщения: 3321
- Зарегистрирован: 27 июл 2009, 19:26
- Репутация: 748
- Ваше звание: Вредитель полей
Re: Встраивание кэширующего TMS-сервиса в собственное прилож
Olax, вы в своем сообщении выше описали архитектурный принцип построения сервиса, упомянули конкретные средства реализации такой архитектуры и даже привели пример скрипта.
Это достаточно ценное описание, потому что о функциях отдельных инструментов всегда можно прочесть в документации, а вот совместное использование даже поверхностно бывает описано редко, тогда как любой серьезный проект требует как раз этого.
Это достаточно ценное описание, потому что о функциях отдельных инструментов всегда можно прочесть в документации, а вот совместное использование даже поверхностно бывает описано редко, тогда как любой серьезный проект требует как раз этого.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя