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

1,273
-1

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,273
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Максим Лапшин (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.

×