Мерж ленты — это процесс объединения и сортировки постов от всех пользователей, на которых подписан текущий пользователь, чтобы сформировать его персонализированную ленту из последних 10 постов.
Что именно происходит при мерже:
- Сбор данных:
- Для каждой подписки пользователя система запрашивает последние N постов (например, 10).
- Если пользователь подписан на 1000 аккаунтов, на этом этапе собирается до 10 000 постов (1000 подписок × 10 постов).
- Сортировка:
- Все собранные посты объединяются в единый список.
- Сортируются по времени публикации (от новых к старым).
- Выбор топ-10:
- Из отсортированного списка выбираются 10 самых свежих постов.
Почему мерж ленты может стать узким местом?
| Проблема | Пример | Последствия |
| Высокий объем данных | 10k постов для пользователя с 1k подписок | Затраты CPU/RAM на сортировку |
| Конкуренция за ресурсы | Параллельные запросы от миллионов пользователей | Деградация производительности |
Как это связано с масштабируемостью?
Если система не оптимизирует мерж ленты:
- При росте числа подписок/пользователей время формирования ленты превысит 400 мс.
- CPU воркеров будет перегружен сортировкой больших списков.
- Балансировка нагрузки (API Gateway) не решит проблему, так как «бутылочное горло» находится на этапе обработки данных, а не распределения запросов.
Решения для оптимизации мержа:
- Кеширование ленты:
- Готовые топ-10 постов хранятся в Redis для активных пользователей
- Для селебрити — отдельный кеш с их последними 100 постами.
- Фоновая предобработка:
- Асинхронное обновление ленты при публикации нового поста (например, через Kafka).
- Шардирование данных:
- Распределение подписок по кластерам для параллельного сбора данных.