Ответ
При высоких нагрузках в первую очередь масштабируются:
- База данных - вертикально (увеличение ресурсов) или горизонтально (шардинг, репликация). Пример с репликацией в PostgreSQL:
// Подключение к мастеру для записи
masterDB, _ := sql.Open("postgres", "master_conn_string")
// Подключение к реплике для чтения
replicaDB, _ := sql.Open("postgres", "replica_conn_string")
- Кэш - Redis/Memcached для разгрузки БД. Добавляем кэширование:
func GetUser(id string) (User, error) {
if user, found := cache.Get(id); found {
return user, nil
}
// ...запрос к БД
cache.Set(id, user, ttl)
}
-
Статика - вынос на CDN (CloudFront, Cloudflare)
-
API/Микросервисы - горизонтальное масштабирование за балансировщиком (Nginx, Kubernetes)
-
Асинхронная обработка - очереди (RabbitMQ, Kafka) для долгих операций