文章摘要
pgdog是一个PostgreSQL连接池工具,具备负载均衡和数据库分片功能,可帮助优化数据库连接管理和性能。
文章总结
PgDog 项目概览
PgDog 是一个基于 Rust 开发的 PostgreSQL 代理工具,主要提供以下核心功能:
核心能力
连接池管理
- 支持事务级/会话级连接池
- 智能处理
SET语句和会话状态 - 自动恢复异常连接(如事务回滚)
负载均衡
- 支持多副本读写分离
- 提供三种路由策略:轮询/随机/最少连接
- 实时健康检查自动剔除故障节点
- 自动故障转移(配合 Patroni 等工具)
数据库分片
- 支持哈希/列表/范围分片算法
- 自动路由含分片键的查询
- 跨分片查询聚合(支持常见聚合函数)
- 在线重分片(无停机数据迁移)
技术亮点
- 使用 PostgreSQL 原生解析器(
pg_query)实现精准 SQL 分析 - 支持两阶段提交保证跨分片事务一致性
- 内置分布式唯一 ID 生成器
- 通过逻辑复制实现在线分片扩容
部署方式
- Kubernetes:提供 Helm Chart
- AWS:支持 EKS 和 ECS 部署
- Docker:开箱即用的演示环境
- 裸机运行:Rust 编译的独立二进制
性能表现
- 基于 Tokio 异步运行时
- 零拷贝网络数据处理
- 单节点可管理数千连接
许可协议
AGPLv3(允许内部自由使用和修改,云服务商需开源修改内容)
当前状态
已投入生产环境使用,分片功能持续迭代中
项目官网:pgdog.dev | 文档地址:docs.pgdog.dev
GitHub 数据:★3.5k | 贡献者34人 | 版本v0.1.30(2026年发布)
评论总结
以下是评论内容的总结:
正面评价与推荐
- 用户推荐PgDog作为连接池工具,并对其分片功能表示期待但尚未在生产环境验证
- "Happy pgdog user here, I can recommend it from a user perspective as a connection pooler" (mijoharas)
- "Looks great - I'd love to include it in postgresisenough.dev" (cpursley)
- 用户推荐PgDog作为连接池工具,并对其分片功能表示期待但尚未在生产环境验证
技术功能讨论
- 对跨分片聚合重写功能表示赞赏,同时关注延迟问题
- "The cross-shard aggregate rewriting is really nice...Curious about latency overhead" (octoclaw)
- 询问读写分离的可靠性及是否需要同步复制
- "how the read write splitting is reliable in practice due to replication lag" (jackfischer)
- 对跨分片聚合重写功能表示赞赏,同时关注延迟问题
使用场景与行业应用
- 关注高流量应用(特别是金融科技)的使用情况
- "what kinds of high-traffic apps have been most interested in using PgDog? I see you guys have Coinbase and Ramp logos" (noleary)
- 关注高流量应用(特别是金融科技)的使用情况
功能实现细节
- 询问分片是自动还是手动配置
- "does this shard the database as well or do we shard manually" (codegeek)
- 询问连接失败重试机制
- "Can PgDog...do something similar -- if there's a 'database server shutting down' error...retry it on another backend?" (cuu508)
- 询问分片是自动还是手动配置
赞赏与期待
- 对产品进展表示赞赏,特别是与Citus对比的开发速度
- "Great progress, guys! It's impressive to see all the enhancements...Kudos to the shipping velocity" (saisrirampur)
- 表达对分片功能的期待
- "I really hope to use the sharding feature one day" (Iamtiberius)
- 对产品进展表示赞赏,特别是与Citus对比的开发速度