Upload
ontico
View
645
Download
4
Embed Size (px)
DESCRIPTION
Доклад Максима Дементьева на HighLoad++ 2014.
Citation preview
Архитектура бэкенда карт sputnik.ruМаксим Дементьев[email protected]
Структура доклада• Как устроен кластер генерации карт?
• Почему мы используем язык Go?
• Как мы тестируем нашу систему?
• Какие у нас планы на будущее?
Как устроен кластер генерации карт
OpenStreetMap• Открытая база геоданных
• Более миллиона участников по всему миру
• Участвовать может каждый
OpenStreetMap
http://wiki.openstreetmap.org/wiki/Component_overview
OpenStreetMap
Тайлы
© Спутник © OpenStreetMap contributors
Откуда берутся тайлы
© Спутник © OpenStreetMap contributors
Основные технологии
Challenge
Challenge accepted• Сложный стиль (~7500 правил)
• Большое время генерации тайлов (~5 дней)
• Большой объем тайлового кэша (~2 Тб)
• Модель периодического обновления (1 месяц)
Challenge acceptedOpenStreetMap.org Sputnik.ru
74 слоя 187 слоев
~3000 правил ~7500 правил
~19000 строк в Mapnik XML ~48000 строк в Mapnik XML
Классический подход
Проблемы классического подхода
• Ориентированность на файловую систему
• Плохая масштабируемость
Go + Mapnik = Gopnik
© Renee French © Diamond00744
Gopnik• Ориентированность на файловую систему
• Плохая масштабируемость
• Гибкая модульная архитектура
• Пользователь получает результат генерации сразу
• Простая конфигурация
• Набор дополнительных утилит
Gopnik
Gopnik
Gopnik
Метатайлы
© Mapbox
Gopnik
Заполнение кэша• Гибкий конфигуратор заданий
• Кластерная генерация
• Распределенная очередь
• CLI и web интерфейсы
Заполнение кэша
Заполнение кэша
Заполнение кэша
Заполнение кэша
Почему мы выбрали язык Go
Что было до Go• С++
• Perl
• Python
• Scala
Плюсы Go• Очень простой
• Компилируемый
• Строгая типизация
• Сборка мусора
• Простая и понятная модель многопоточности
• Быстрая компиляция
• Хорошая стандартная библиотека
• Большой набор полезных утилит
Как мы тестируем нашу систему
Unit-тесты• go test
• gtest для C++
© Renee French
Интеграционные и системные тесты• Docker
• Netem
• Yandex.Tank
Планы на будущее
Что уже сделано• Гибкая модульная платформа
• Поддержка тайловых кэшей с eventual consistency
• Дополнительные утилиты
• Удобный кластерный рендеринг
• Простая конфигурация
Что еще хотим сделать• Gossip
• SPDY
• QUIC
• Data-tiles
Open source
Вопросы?