План курса / Все задачи / System Design
Рекомендации по улучшению
- Оптимизация кеша для селебрити:
- Что изменить: Добавить отдельный кеш (Redis Cluster) с TTL=1 час для последних 100 постов селебрити.
- Почему: Снижение нагрузки при мерже ленты
- Альтернативы:
- Использовать Bloom Filter для быстрой проверки наличия селебрити в подписках.
- Pre-warming кеша при публикации постов селебрити.
- Устранение Single Point of Failure:
- Что изменить: Заменить мастер-ноду SQL DB на распределенную БД (CockroachDB, YDB).
- Почему: Риск потери данных при отказе мастера
- Альтернативы:
- Репликация PostgreSQL с автоматическим failover (Patroni).
- Пока что не углубляйся в Patroni. В одной из будущих систем будут примеры.
- https://github.com/patroni/patroni
- Шардирование по диапазонам user_id.
Риски:
- Race Condition при обновлении кеша: CAS-операции в Redis могут не хватить при высокой нагрузке.
- Задержки при мерже ленты: CPU-bound операция для пользователей с 10k подписок.