PgDog:这款Rust驱动的PostgreSQL中间件,能否终结PgBouncer、HAProxy与分片方案的混搭时代?

GitHub June 2026
⭐ 4839📈 +442
来源:GitHub归档:June 2026
一款名为PgDog的Rust语言PostgreSQL中间件,集连接池、负载均衡与数据库分片于一身,单日GitHub星标数飙升至4,839。AINews深入剖析:这个“大一统”方案,究竟是颠覆PgBouncer+HAProxy+自定义分片这一复杂技术栈的利器,还是一场过早的整合尝试?

PgDog是一款用Rust编写的新兴开源PostgreSQL中间件,它将连接池、负载均衡、读写分离、自动故障转移和数据库分片功能整合进一个单一二进制文件中。其GitHub星标数在一天内激增442颗,达到4,839颗,引发了社区的强烈关注。该项目旨在简化通常需要将PgBouncer(用于连接池)、HAProxy(用于负载均衡)以及自定义应用层分片逻辑拼凑在一起的、以复杂著称的数据库代理层。PgDog的Rust基础保证了内存安全和高吞吐量,且无需垃圾回收器。早期基准测试表明,它能处理超过50,000个并发连接,且延迟开销低于毫秒级。然而,该项目问世不到一年,尚未发布稳定版本,且其分片功能仍处于早期阶段。

技术深度解析

PgDog完全使用Rust编写,利用`tokio`异步运行时实现非阻塞I/O,并使用`sqlx`库进行PostgreSQL协议解析。其架构是事件驱动的:每个客户端连接由一个轻量级任务处理,该任务将请求多路复用到后端连接池上。核心组件包括:

- 连接池:为每个PostgreSQL后端维护一个可配置数量的持久连接,并在客户端请求之间重用。与PgBouncer的会话/事务/多路复用模式不同,PgDog使用单一的多路复用模式,在客户端事务之间保持后端连接活跃,从而减少连接抖动。
- 负载均衡器:支持加权轮询、最少连接和随机策略。它还通过定期的`SELECT 1`查询集成健康检查,在达到可配置的故障阈值后将后端标记为宕机。
- 读写分离器:检查SQL语句中的写操作(INSERT、UPDATE、DELETE、DDL),并将其路由到主库,而SELECT查询则发送到副本库。它使用一个简单的基于正则表达式的解析器,这可能会被CTE或带有副作用的函数所迷惑。
- 分片器:使用基于哈希的分片方案,通过可配置的分片键(例如`user_id`)进行分片。分片映射存储在本地配置文件中,或者可以从外部键值存储(etcd、Consul)中获取——不过后者仍在开发中。不支持跨分片查询;客户端必须感知分片,或使用分散-收集模式。
- 故障转移:监控主库健康状态,并可以通过可配置的脚本(例如`pg_rewind`)将副本提升为主库。在节点仲裁检测到故障后触发自动故障转移,但没有内置的共识算法——它依赖于外部编排。

性能基准测试:维护者在配备32GB内存的16核机器上,使用`pgbench`针对单个PostgreSQL 16实例发布了初步基准测试结果。结果如下表所示:

| 中间件 | 连接数 | 吞吐量 (TPS) | 延迟 p99 (ms) | CPU 使用率 (%) |
|---|---|---|---|---|
| 直接连接 PostgreSQL | 100 | 12,000 | 2.1 | 60 |
| PgBouncer (事务模式) | 100 | 11,500 | 2.4 | 45 |
| PgDog | 100 | 11,800 | 2.3 | 50 |
| PgDog | 1,000 | 10,200 | 8.7 | 78 |
| PgBouncer | 1,000 | 9,500 | 11.2 | 82 |
| HAProxy + PgBouncer | 1,000 | 8,900 | 14.5 | 95 |

数据解读:在低并发下,PgDog与PgBouncer性能相当;在高并发(1,000个连接)下,其吞吐量高出7%,p99延迟低22%。HAProxy + PgBouncer组合增加了25%的延迟开销,这验证了“大一统”方法的优势。然而,这些是合成基准测试;在包含复杂查询和网络抖动的真实工作负载下,差距可能会缩小。

在GitHub上,仓库`pgdogdev/pgdog`拥有4,839颗星和120个复刻。代码库包含25,000行Rust代码,开发活跃(过去一个月有100多次提交)。`Cargo.toml`列出了对`tokio`、`sqlx`、`clap`和`serde`的依赖。一个值得注意的设计选择是仅在3处使用了`unsafe`代码(用于底层套接字操作),这对于一个网络工具来说是值得称赞的。

关键参与者与案例研究

PgDog进入了一个由成熟解决方案主导的市场:

- PgBouncer:用C语言编写,是PostgreSQL连接池的事实标准。被Heroku、GitLab和许多SaaS公司使用。它轻量级、久经考验,并支持会话/事务/多路复用模式。然而,它缺乏内置的负载均衡、分片或故障转移功能。
- HAProxy:一个高性能的TCP/HTTP负载均衡器,通常放置在PgBouncer前面,用于实现读写分离和故障转移。它增加了操作复杂性和延迟。
- pgpool-II:一个基于C语言的中间件,提供连接池、负载均衡和故障转移功能,但以其复杂的配置和在高负载下偶尔出现的稳定性问题而闻名。
- pgcat:一个基于Rust的连接池工具,仅专注于连接池,没有分片或负载均衡功能。它拥有约1,000颗星,被少数初创公司使用。
- Citus (微软):一个用于分片的PostgreSQL扩展,但需要更改模式,并且与Azure紧密耦合。

| 特性 | PgDog | PgBouncer + HAProxy | pgpool-II | pgcat |
|---|---|---|---|---|
| 连接池 | ✅ | ✅ | ✅ | ✅ |
| 负载均衡 | ✅ | ✅ (HAProxy) | ✅ | ❌ |
| 读写分离 | ✅ | ✅ (HAProxy) | ✅ | ❌ |
| 分片 | ✅ | ❌ | ❌ | ❌ |
| 故障转移 | ✅ (基于脚本) | ✅ (HAProxy) | ✅ | ❌ |
| 语言 | Rust | C + C | C | Rust |
| GitHub 星标 | 4,839 | 不适用 | ~500 | ~1,000 |
| 生产成熟度 | 低 | 非常高 | 中等 | 低 |

数据解读:PgDog的功能集是开源PostgreSQL中间件中最全面的。然而,PgBouncer + HAProxy仍然是生产可靠性的黄金标准。PgDog的分片能力是其独特的卖点,但与Citus或Vitess(用于MySQL)相比,它仍然很初级。

案例研究:一家中期金融科技公司

更多来自 GitHub

ChatGPT2API: The Underground Bridge Bypassing OpenAI's PaywallThe basketikun/chatgpt2api repository represents a significant escalation in the cat-and-mouse game between third-party Focalboard:开源项目管理工具,数据主权由你掌控Focalboard 由 Mattermost 社区开发,是一款开源、自托管的项目管理平台,旨在与 Trello、Notion 和 Asana 等商业工具正面竞争。其核心吸引力在于完全的数据控制权:用户自行托管实例,彻底摆脱对第三方服务器的Mattermost WebApp 归档:一款 Slack 杀手独立前端的终结mattermost/mattermost-webapp 仓库,曾作为这款开源 Slack 替代品前端的跳动心脏,现已归档,其代码被合并至主仓库 mattermost/mattermost 的单体仓库中。该仓库拥有 2287 颗星,曾作为高查看来源专题页GitHub 已收录 2599 篇文章

时间归档

June 20261209 篇已发布文章

延伸阅读

ChatGPT2API: The Underground Bridge Bypassing OpenAI's PaywallA new open-source project, basketikun/chatgpt2api, has exploded onto GitHub with 4,000 stars in days, offering a fully rFocalboard:开源项目管理工具,数据主权由你掌控Mattermost 旗下的开源项目管理工具 Focalboard,正以自托管替代方案的身份,在 Trello、Notion 和 Asana 的领地中迅速崛起。凭借超过 26,000 个 GitHub Star,它提供看板、表格和日历视图,Mattermost WebApp 归档:一款 Slack 杀手独立前端的终结Mattermost 正式归档其独立 Web 应用仓库,将所有前端开发整合至单一单体仓库。这一举措标志着项目工程策略的关键转变,预示着更紧密的集成与更快的迭代,但也引发了对其模块化架构未来的疑问。Mattermost:企业真正信赖的开源Slack杀手Mattermost悄然成为那些不愿在数据隐私上妥协的组织的首选协作平台。凭借37,638个GitHub星标和自托管模式,它不仅仅是Slack的克隆版——而是一个面向整个软件开发生命周期的安全优先生态系统。

常见问题

GitHub 热点“PgDog: Can This Rust-Powered PostgreSQL Middleware Replace PgBouncer, HAProxy, and Sharding?”主要讲了什么?

PgDog is a new open-source PostgreSQL middleware written in Rust that combines connection pooling, load balancing, read/write splitting, automatic failover, and database sharding i…

这个 GitHub 项目在“PgDog vs PgBouncer performance benchmark comparison”上为什么会引发关注?

PgDog is written entirely in Rust, leveraging the tokio async runtime for non-blocking I/O and the sqlx library for PostgreSQL protocol parsing. The architecture is event-driven: each client connection is handled by a li…

从“How to set up PostgreSQL sharding with PgDog”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 4839,近一日增长约为 442,这说明它在开源社区具有较强讨论度和扩散能力。