Инженеры OpenAI опубликовали статью о том, как PostgreSQL обслуживает ChatGPT — сервис с 800-900 миллионами активных пользователей в неделю.
Главная особенность: компания обходится без шардирования, используя архитектуру с одним основным сервером и примерно 50 репликами для чтения, поскольку в OpenAI решили, что для нагрузки ChatGPT с преобладанием чтения лучше использовать один кластер, чем создавать распределенную архитектуру.
Кластер обрабатывает более миллиона запросов в секунду, обеспечивая время отклика в низкие двузначные миллисекунды на 99-м перцентиле. Все это — на стандартном PostgreSQL без кастомных модификаций, только с грамотной настройкой пулинга соединений, оптимизацией запросов и продуманной индексацией.
Узкое место архитектуры — запись. Все операции записи идут в единственный основной сервер, поэтому команда жестко оптимизирует эту часть: выносят записи куда возможно, сглаживают пики через отложенную запись, контролируют скорость массовой загрузки данных. Изменения схемы тоже под строгим контролем — добавление колонок только с таймаутом 5 секунд, индексы исключительно через CONCURRENTLY, никаких операций с перезаписью таблицы.
Чтение масштабируется проще — реплики распределены по разным регионам, а трафик разделен по приоритетам: для критичных запросов выделены отдельные реплики, чтобы их не тормозили тяжелые аналитические выборки. Результат — за последние девять месяцев только один серьезный инцидент, связанный с PostgreSQL.
https://openai.com/index/scaling-postgresql/
Post #3275
3.26K