- Công cụ pooling giao dịch + sharding + cân bằng tải cho PostgreSQL được viết bằng Rust + Tokio, quản lý hiệu quả hàng trăm cơ sở dữ liệu và hàng trăm nghìn kết nối
- Hoạt động tương tự PgBouncer nhưng là proxy lớp ứng dụng (OSI L7) chuyên cho PostgreSQL, hỗ trợ cả phân tích truy vấn và sao chép
- Có thể triển khai dễ dàng bằng Kubernetes và Docker; từ cấu hình cụm, cân bằng tải, sao chép đến quản lý nhiều shard đều có thể xử lý bằng một cấu hình duy nhất
- Cùng với tính năng quản lý sao chép logic riêng, có thể mở rộng sharding cho cụm PostgreSQL hiện có mà không cần dừng dịch vụ
Tính năng chính
-
Cân bằng tải
- Phân tán lưu lượng ở OSI Layer 7 dựa trên truy vấn PostgreSQL
- Tự động định tuyến
SELECT tới bản sao, còn INSERT/UPDATE v.v. tới nút chính
- Hỗ trợ các chiến lược: round robin, random, least active connections, v.v.
- Health check thời gian thực và failover tự động khi xảy ra sự cố
-
Pooling giao dịch
- Tương tự PgBouncer, hỗ trợ pooling theo phiên/giao dịch
- Có thể phục vụ hàng trăm nghìn client chỉ với một số ít kết nối PostgreSQL
-
Sharding và sao chép
- Phân tích SQL để trích xuất shard key và tự động chuyển truy vấn tới shard tương ứng
- Với truy vấn liên shard, ghép kết quả trong bộ nhớ để trả về cho người dùng dưới dạng một phản hồi duy nhất
- Lệnh
COPY cũng được tách xử lý theo từng shard
- Hỗ trợ sao chép logic: có thể mở rộng sharding cho DB hiện có trong trạng thái không gián đoạn
-
Thay đổi cấu hình theo thời gian thực
- Sử dụng cấu hình
.toml kiểu PgBouncer, có thể thay đổi cấu hình mà không cần khởi động lại
- Có thể cấu hình xác thực theo người dùng, kết nối theo cơ sở dữ liệu và cả thông tin shard
-
Giám sát
- Hỗ trợ cổng quản trị PgBouncer tiêu chuẩn + OpenMetrics
- Bao gồm ví dụ tích hợp Datadog và dashboard
1 bình luận
Tôi đang dùng patroni cho cấu hình multi-master
Nếu là cấu hình có nhiều yêu cầu đọc thì có vẻ đáng để thử dùng như maxscale