0
Pulsedb
для временных рядов
Макс Лапшин
max@erlyvideo.ru
Saturday, April 12, 14
Проблема
• Надо хранить статистику
• Ежесекундные замеры
• Много стримов, много серверов
• Потом рисовать графики по выбор...
NIH?
• Неизвестное количество метрик
• Необходимо встраивать в эрливидео
• Раздельное управление по аккаунтам
• Риалтайм г...
С чем сравнивали?
• rrdtool
• graphite (whisper/ceres)
• opentsdb (tempo-db, kairodb)
• influxdb
• прочее (librato, bluefloo...
С чем НЕ сравнивали
• statsd
• rienmann
• хранилища логов
Saturday, April 12, 14
Терминология
• Равномерный временной ряд
• statsd — агрегация потока в равномерный
ряд
• rrdtool — хранение равномерных ря...
Фатальные недостатки
Saturday, April 12, 14
rrdtool
• невообразимо медленный (fork на замер)
• нет возможности склейки метрик на лету
• плохое управление хранением
• ...
Graphite
• не умеет склеивать метрики на лету
• графики строит сам
• никакого риалтайм фида
Saturday, April 12, 14
OpenTSDB
• Hadoop (со всеми вытекающими)
• Сам рисует графики
• Свой язык: sum:avg-2m:metric{tag=value}
• Умеет склеивать ...
InfluxDB
• Очень развитое решение
• SQL-like язык запросов
• Агрегация рядов и операции над ними
• Умеет хранить и события
...
Прочие
• Пользуются Kassandra, Couch и прочей
инфернальщиной для хранения
• Или уже дорогущие промышленные
SCADA решения
S...
Pulsedb
• Метрика — имя + теги
• Замер — UTC + имя + теги
• Библиотека + демон
• Компактное неточное хранение
• OpenTSDB-l...
Pulsedb
• https://github.com/pulsedb/pulsedb
• http://pulsedb.io/
Saturday, April 12, 14
Структура
• HTTP Upgrade + текстовый протокол
• Собственный формат хранения
• Последняя минута в памяти
Saturday, April 12...
Хранение на диске
• 2 байта на замер
• хранение приблизительного значения
• 14 бит значения, 2 бита на порядок
• часовые б...
Транспорт по сети
• Statefull протокол
• Метрики кодируются номерами
• Время передается дельтой
• Значение неточное: 340K,...
Для сервиса
• Шардинг данных по аккаунтам
• Раздельная очистка секундных и
минутных данных
• Внешняя авторизация продюсеро...
Немного цифр
• 20-50 серверов
• 30-150 каналов на каждом
• по 3 метрики с канала (in,out,clients)
• 2000 - 10 000 замеров ...
Планы
• MySQL интерфейс
• GUI для данных
Saturday, April 12, 14
Вопросы?
Макс Лапшин
max@erlyvideo.ru
Saturday, April 12, 14
Upcoming SlideShare
Loading in...5
×

Максим Лапшин (Erlyvideo)

1,193

Published on

Published in: Internet
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,193
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Максим Лапшин (Erlyvideo)"

  1. 1. Pulsedb для временных рядов Макс Лапшин max@erlyvideo.ru Saturday, April 12, 14
  2. 2. Проблема • Надо хранить статистику • Ежесекундные замеры • Много стримов, много серверов • Потом рисовать графики по выборкам • Обновлять графики на лету • Сжимать и удалять ненужные данные Saturday, April 12, 14
  3. 3. NIH? • Неизвестное количество метрик • Необходимо встраивать в эрливидео • Раздельное управление по аккаунтам • Риалтайм графики Saturday, April 12, 14
  4. 4. С чем сравнивали? • rrdtool • graphite (whisper/ceres) • opentsdb (tempo-db, kairodb) • influxdb • прочее (librato, blueflood, seriesly, circonus) Saturday, April 12, 14
  5. 5. С чем НЕ сравнивали • statsd • rienmann • хранилища логов Saturday, April 12, 14
  6. 6. Терминология • Равномерный временной ряд • statsd — агрегация потока в равномерный ряд • rrdtool — хранение равномерных рядов • агрегация — склейка двух равномерных временных рядов • downsampling — разрежение временного ряда Saturday, April 12, 14
  7. 7. Фатальные недостатки Saturday, April 12, 14
  8. 8. rrdtool • невообразимо медленный (fork на замер) • нет возможности склейки метрик на лету • плохое управление хранением • слишком примитивный Saturday, April 12, 14
  9. 9. Graphite • не умеет склеивать метрики на лету • графики строит сам • никакого риалтайм фида Saturday, April 12, 14
  10. 10. OpenTSDB • Hadoop (со всеми вытекающими) • Сам рисует графики • Свой язык: sum:avg-2m:metric{tag=value} • Умеет склеивать ряды • Нет риалтайм фида • Огромный оверхед на хранение Saturday, April 12, 14
  11. 11. InfluxDB • Очень развитое решение • SQL-like язык запросов • Агрегация рядов и операции над ними • Умеет хранить и события • Никакой явы! • Появилось позже нашего кода • Большой объём хранения и передачи Saturday, April 12, 14
  12. 12. Прочие • Пользуются Kassandra, Couch и прочей инфернальщиной для хранения • Или уже дорогущие промышленные SCADA решения Saturday, April 12, 14
  13. 13. Pulsedb • Метрика — имя + теги • Замер — UTC + имя + теги • Библиотека + демон • Компактное неточное хранение • OpenTSDB-like язык запросов • Websocket подписка Saturday, April 12, 14
  14. 14. Pulsedb • https://github.com/pulsedb/pulsedb • http://pulsedb.io/ Saturday, April 12, 14
  15. 15. Структура • HTTP Upgrade + текстовый протокол • Собственный формат хранения • Последняя минута в памяти Saturday, April 12, 14
  16. 16. Хранение на диске • 2 байта на замер • хранение приблизительного значения • 14 бит значения, 2 бита на порядок • часовые блобы для каждой метрики • мердж баз простым апдейтом Saturday, April 12, 14
  17. 17. Транспорт по сети • Statefull протокол • Метрики кодируются номерами • Время передается дельтой • Значение неточное: 340K, 25G Saturday, April 12, 14
  18. 18. Для сервиса • Шардинг данных по аккаунтам • Раздельная очистка секундных и минутных данных • Внешняя авторизация продюсеров • Внешний резолвинг графиков • Репликация Saturday, April 12, 14
  19. 19. Немного цифр • 20-50 серверов • 30-150 каналов на каждом • по 3 метрики с канала (in,out,clients) • 2000 - 10 000 замеров в секунду • 25 GB в месяц (10 млрд замеров) • Одна холодная виртуалка в DigitalOcean Saturday, April 12, 14
  20. 20. Планы • MySQL интерфейс • GUI для данных Saturday, April 12, 14
  21. 21. Вопросы? Макс Лапшин max@erlyvideo.ru Saturday, April 12, 14
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×