Top Banner
Pulsedb для временных рядов Макс Лапшин [email protected] Saturday, April 12, 14
21

Pulsedb — система хранения временных рядов

Dec 10, 2014

Download

Technology

Max Lapshin

Pulsedb— база данных для хранения статистики.
Замена Graphite и rrdtool. Конкурент opentsdb и influxdb
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Pulsedb — система хранения временных рядов

Pulsedbдля временных рядов

Макс Лапшин[email protected]

Saturday, April 12, 14

Page 2: Pulsedb — система хранения временных рядов

Проблема

• Надо хранить статистику• Ежесекундные замеры• Много стримов, много серверов• Потом рисовать графики по выборкам

• Обновлять графики на лету• Сжимать и удалять ненужные данные

Saturday, April 12, 14

Page 3: Pulsedb — система хранения временных рядов

NIH?

• Неизвестное количество метрик• Необходимо встраивать в эрливидео• Раздельное управление по аккаунтам• Риалтайм графики

Saturday, April 12, 14

Page 4: Pulsedb — система хранения временных рядов

С чем сравнивали?

• rrdtool

• graphite (whisper/ceres)

• opentsdb (tempo-db, kairodb)

• influxdb

• прочее (librato, blueflood, seriesly, circonus)

Saturday, April 12, 14

Page 5: Pulsedb — система хранения временных рядов

С чем НЕ сравнивали

• statsd

• rienmann

• хранилища логов

Saturday, April 12, 14

Page 6: Pulsedb — система хранения временных рядов

Терминология

• Равномерный временной ряд• statsd — агрегация потока в равномерный ряд

• rrdtool — хранение равномерных рядов

• агрегация — склейка двух равномерных временных рядов

• downsampling — разрежение временного ряда

Saturday, April 12, 14

Page 7: Pulsedb — система хранения временных рядов

Фатальные недостатки

Saturday, April 12, 14

Page 8: Pulsedb — система хранения временных рядов

rrdtool

• невообразимо медленный (fork на замер)

• нет возможности склейки метрик на лету• плохое управление хранением• слишком примитивный

Saturday, April 12, 14

Page 9: Pulsedb — система хранения временных рядов

Graphite

• не умеет склеивать метрики на лету• графики строит сам• никакого риалтайм фида

Saturday, April 12, 14

Page 10: Pulsedb — система хранения временных рядов

OpenTSDB

• Hadoop (со всеми вытекающими)

• Сам рисует графики

• Свой язык: sum:avg-2m:metric{tag=value}

• Умеет склеивать ряды• Нет риалтайм фида

• Огромный оверхед на хранение

Saturday, April 12, 14

Page 11: Pulsedb — система хранения временных рядов

InfluxDB

• Очень развитое решение• SQL-like язык запросов

• Агрегация рядов и операции над ними• Умеет хранить и события• Никакой явы!

• Появилось позже нашего кода• Большой объём хранения и передачи

Saturday, April 12, 14

Page 12: Pulsedb — система хранения временных рядов

Прочие

• Пользуются Kassandra, Couch и прочей инфернальщиной для хранения

• Или уже дорогущие промышленные SCADA решения

Saturday, April 12, 14

Page 13: Pulsedb — система хранения временных рядов

Pulsedb

• Метрика — имя + теги

• Замер — UTC + имя + теги

• Библиотека + демон

• Компактное неточное хранение• OpenTSDB-like язык запросов

• Websocket подписка

Saturday, April 12, 14

Page 14: Pulsedb — система хранения временных рядов

Pulsedb

• https://github.com/pulsedb/pulsedb

• http://pulsedb.io/

Saturday, April 12, 14

Page 15: Pulsedb — система хранения временных рядов

Структура

• HTTP Upgrade + текстовый протокол

• Собственный формат хранения• Последняя минута в памяти

Saturday, April 12, 14

Page 16: Pulsedb — система хранения временных рядов

Хранение на диске

• 2 байта на замер

• хранение приблизительного значения• 14 бит значения, 2 бита на порядок

• часовые блобы для каждой метрики

• мердж баз простым апдейтом

Saturday, April 12, 14

Page 17: Pulsedb — система хранения временных рядов

Транспорт по сети

• Statefull протокол

• Метрики кодируются номерами• Время передается дельтой• Значение неточное: 340K, 25G

Saturday, April 12, 14

Page 18: Pulsedb — система хранения временных рядов

Для сервиса

• Шардинг данных по аккаунтам• Раздельная очистка секундных и минутных данных

• Внешняя авторизация продюсеров• Внешний резолвинг графиков• Репликация

Saturday, April 12, 14

Page 19: Pulsedb — система хранения временных рядов

Немного цифр

• 20-50 серверов

• 30-150 каналов на каждом

• по 3 метрики с канала (in,out,clients)

• 2000 - 10 000 замеров в секунду

• 25 GB в месяц (10 млрд замеров)

• Одна холодная виртуалка в DigitalOcean

Saturday, April 12, 14

Page 20: Pulsedb — система хранения временных рядов

Планы

• MySQL интерфейс

• GUI для данных

Saturday, April 12, 14

Page 21: Pulsedb — система хранения временных рядов

Вопросы?

Макс Лапшин

[email protected]

Saturday, April 12, 14