Tin tức

PgDog: Một Trình Gộp Kết Nối Postgres Không Bắt Bạn Viết Lại Ứng Dụng

PgDog là một trình gộp kết nối Postgres mới, bảo toàn SET và LISTEN/NOTIFY, giúp bạn không phải thay đổi mã ứng dụng để mở rộng.

July 7, 2026· 3 min read· Nguồn: PgDog
PgDog: Một Trình Gộp Kết Nối Postgres Không Bắt Bạn Viết Lại Ứng Dụng

PgDog là một proxy Postgres thực hiện gộp kết nối — nhưng không giống PgBouncer, RDS Proxy hay Pgpool-II, nó không buộc bạn từ bỏ các tính năng cốt lõi của Postgres. Nhóm phát triển cho rằng các trình gộp hiện tại tạo ra những lớp trừu tượng rò rỉ, đòi hỏi thay đổi mã ứng dụng, thường là khi mở rộng quy mô. PgDog nhằm khắc phục điều đó.

Trạng thái phiên không bị rò rỉ

Các trình gộp truyền thống tái sử dụng kết nối giữa các client, dẫn đến trạng thái cấp phiên — như lệnh SET — bị rò rỉ giữa các client. Đó là vấn đề nếu bạn dựa vào SET cho Bảo mật Cấp Hàng (RLS) hoặc thời gian chờ truy vấn. PgDog giải quyết bằng cách phân tích câu lệnh SET với trình phân tích SQL tích hợp, lưu trạng thái theo từng client và khôi phục trước mỗi truy vấn. Nó sử dụng đường ống truy vấn để gộp nhiều lần khôi phục SET thành một lượt duy nhất, giữ tác động hiệu suất ở mức tối thiểu.

LISTEN/NOTIFY hoạt động thực sự với gộp kết nối

LISTENNOTIFY là một nạn nhân khác của các trình gộp truyền thống trong chế độ giao dịch. PgDog xử lý chúng nội bộ: nó dùng kênh broadcast của Tokio để di chuyển thông điệp giữa các client trong cùng tiến trình, và một kết nối Postgres chuyên dụng để đồng bộ qua nhiều tiến trình PgDog. Kết quả là ngữ nghĩa pub/sub hoạt động minh bạch, bảo toàn các đảm bảo giao dịch.

Đa luồng theo mặc định

Được xây dựng trên Tokio, PgDog sử dụng Rust bất đồng bộ với các worker đa luồng. Mỗi client có tác vụ bất đồng bộ riêng, mở rộng tuyến tính theo số kết nối. Điều này tránh vấn đề phân mảnh của PgBouncer (yêu cầu SO_REUSEPORT và các nhóm kết nối theo tiến trình) và độ trễ khởi động nguội của các proxy tự động mở rộng. Một tiến trình PgDog duy nhất có thể xử lý nhiều client và truy vấn hơn, đơn giản hóa vận hành — một điểm đo lường, một kiểm tra sức khỏe, không cần thủ thuật cấp kernel.

Đã kiểm chứng trong sản xuất

PgDog đã hoạt động trong sản xuất hơn một năm, gộp kết nối ở 2 triệu truy vấn mỗi giây. Nó là mã nguồn mở (MIT) và có thể triển khai ở bất kỳ đâu. Nếu bạn từng tránh gộp kết nối vì không thể từ bỏ SET hay LISTEN/NOTIFY, đây có thể là trình gộp bạn đang chờ đợi.