工程架构◆ AI 生成 · 已溯源
支撑8亿ChatGPT用户的PostgreSQL规模化实践

结论前置 / TL;DR
OpenAI通过读写分离副本、多层缓存(Redis + 应用级缓存)、精细化速率限制(per-user/per-token)及工作负载隔离(按功能域拆分数据库集群),将PostgreSQL扩展至每秒数百万查询,稳定支撑ChatGPT核心状态存储与会话元数据服务。
架构演进:从单体到高可用分片集群
OpenAI未采用分库分表或迁移到NewSQL,而是以PostgreSQL为核心构建可水平扩展的状态存储层。其关键路径(如用户会话状态、对话历史元数据、API密钥管理、使用配额跟踪)全部基于PostgreSQL 15+,并严格规避长事务与复杂JOIN,确保OLTP吞吐。
四大核心扩展策略
- 副本分级调度:部署地理分布的只读副本集群(包括跨AZ/跨Region replica),按地域延迟与负载动态路由读请求;主库仅承担写入与强一致性事务(如配额扣减)。
- 多级缓存协同:第一层为Redis Cluster(带LRU+TTL策略)缓存高频会话元数据;第二层为应用进程内Guava Cache,缓存用户级配置与token绑定关系;第三层为数据库连接池(PgBouncer)的事务级连接复用。
- 细粒度速率限制:基于PostgreSQL内置
pg_stat_statements与自研指标管道,在应用层实现per-user、per-API-key、per-model、per-token维度的实时限流,阈值动态更新至共享内存(避免每次查询DB)。 - 工作负载物理隔离:将不同SLA要求的服务拆分为独立PostgreSQL集群——例如
chat_sessions集群(低延迟、高QPS)、billing集群(强一致性、低QPS)、audit_logs集群(写密集、只追加)——各集群使用不同硬件规格与WAL配置。
关键指标与约束
- 峰值写入吞吐:>120,000 TPS(事务/秒)于主库;
- 只读副本P99延迟:<12ms(跨Region副本<45ms);
- 缓存命中率:Redis层>92%,应用层缓存>87%;
- 单集群最大连接数:由PgBouncer硬限为32,000,避免连接风暴击穿DB。
未采用的技术路径
- 拒绝将对话历史主体存入PostgreSQL(改用专用时序数据库TimescaleDB + 对象存储归档);
- 未使用逻辑复制替代物理复制(因WAL解析开销与一致性风险);
- 未引入外部分布式事务协调器(如CockroachDB或Vitess),坚持单集群ACID语义边界。