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

  • 1,074 views
Uploaded on

 

More in: Internet
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,074
On Slideshare
0
From Embeds
0
Number of Embeds
8

Actions

Shares
Downloads
4
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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