HighLoad++ 2017
Зал «Мумбай», 8 ноября, 11:00
Тезисы:
http://www.highload.ru/2017/abstracts/2936.html
Уже много было докладов про то, как разные компании переезжают на Prometheus, и мы не исключение. Мы в Lamoda тоже успешно применяем Prometheus для целей мониторинга, наверное, как и все, складываем в него миллионы различных метрик и чувствуем себя хорошо. Prometheus достаточно успешно справляется с очень большой write-нагрузкой, а что же с read? Мне так же хочется затронуть тему read-нагрузки и поделиться с вами в том числе и нашим не самым удачным опытом использования Prometheus.
...
3. IT в Lamoda
WE CODE THE FASHION
11 млн.
пользователей
60 внутренних
систем
4 000 сотрудников
Мы делаем один из самых крупных e-commerce проектов в России
7. Задача. Минимальные требования
• Хранить исторические данные (до месяца)
• Возможность посчитать агрегатную функцию за произвольный
интервал времени в произвольной точке
29. Prometheus. Chunk. Encoding (v2)
Timestamp (Varbinary)
• Если ΔΔ в [-32; 31]: 10 + 6bit
• Если ΔΔ в [-65536; 65535]: 110 + 17bit
• Если ΔΔ в [-4194304; 4194303]: 111 + 23bit
• Если ΔΔ = 0: 0 + 7bit (повторы)
30. Prometheus. Chunk. Encoding (v2)
Value
1.0 bytes для постоянных значений
2.ΔΔ целые с переменным числом бит
3. следующее XOR предыдущее
4. 64 bit если XOR тоже 64
https://prometheus.io/blog/2016/05/08/when-to-use-varbit-chunks/
31. Prometheus. Chunk. Encoding (v2)
Value
1.0 bytes для постоянных значений
2.ΔΔ целые с переменным числом бит
3. следующее XOR предыдущее
4. 64 bit если XOR тоже 64
https://prometheus.io/blog/2016/05/08/when-to-use-varbit-chunks/
1.28 bytes per sample
(в среднем)
37. • Задача выполнена. Бизнес доволен :)
• НО! Не устраивает производительность на чтение
• ~ 200rps с 150ms - среднее время ответа
• Пришлось написать маленький кэш
Prometheus. Результат