Чтобы предоставлять доступ к аналитическим данным по HTTP, часто достаточно просто подобрать аналитическую СУБД и сделать endpoint к ней. Но есть нюанс: OLAP-базы данных не держат большой RPS. Рассказываем, как отдаём большие аналитические данные через API (и не кладём сервис).
Привет, это Тимофей Пуриц из команды разработки микросервисов тарификации. Представим сценарий: каждый день примерно в 18:00 продавцы на Ozon получают отчёты по продажам и одновременно нажимают кнопку «Загрузить отчёт». Сейчас в Ozon более 750 000 активных продавцов, и даже если не все они захотят скачать отчёт одновременно, всплеск нагрузки всё равно может быть значительным.
⚙️ Чтобы посмотреть, какой RPS может держать система, я создал экспериментальный стенд и попробовал несколько подходов с ClickHouse. Сама по себе база начинает деградировать по времени ответа уже на 70 RPS. Но если применить стратегию hot/cold storage на PostgreSQL, система держит уже 240 RPS. Добавляем кеширование результатов запросов — и без особого тюнинга система выдерживает уже 800 RPS.
Конечно, двумя подходами я не ограничился и предложил ещё ряд улучшений. Всё это вы найдёте в моей статье: архитектура стенда, SQL-запросы, результаты нагрузочных тестов и ответ на вопрос, почему в высоконагруженной системе каждому компоненту лучше заниматься своей задачей.
#ozontech_habr
Post #2299
3.97K

- 👍 10
- ⚡ 4
- ❤ 3