PgDog:一个PostgreSQL分布式集群中间件

PgDog 是一个实现了 PostgreSQL 分片、连接池以及负载均衡功能的中间。PgDog 使用 Rust 语言编写,支持跨平台(Linux、Mac OS、Windows),具有高性能和高可靠性,可以在不需要修改任何应用程序的前提下实现 PostgreSQL 数据库的水平扩展。

如果你使用过 PgCat 连接池,可以把 PgDog 看作它的新一代继承者。

以下是 PgDog 支持的主要功能特性。

分片功能

PgDog 分片(Sharding)可以将数据库和数据表等拆分到多个 PostgreSQL 服务器中,每个分片包含数据的一个子集,PgDog 负责解决查询路由、跨分片查询和数据移动。

每个分片可以包含多个数据库,其中一个是主节点(Primary),负责读写操作;其他节点是副本(Replica),只能执行查询操作。

负载均衡

PgDog 工作在 OSI 模型的应用层,支持多个 PostgreSQL 副本的负载均衡。

对于查询(SELECT)语句,PgDog 提供了三种可配置的策略:随机(默认)、最小连接、轮询。

对于修改(INSERT、UPDATE 等)操作,PgDog 指定了一个主节点(Primary),这类操作只会发送到主节点。

健康检查

PgDog 定期针对副本进行健康检查,确保数据库节点能够接受连接并执行查询。如果一个节点的健康检查失效,PgDog 会将其列入禁用主机列表,无法再接受客户端的请求。

主机禁用具有一定的时效性,如果被禁用的主机恢复了健康检查,可以自动加入负载均衡的目标中。

事务模式

事务模式使得 PgDog 通过共享少量 PostgreSQL 连接服务数千个客户端。这是默认的模式。

这种模式下 PgDog 提供了一个连接池,如果连接池建立的上百个 PostgreSQL 连接,那么它就可以支持数十万个客户端同时连接。

插件系统

PgDog 支持插件开发,用户可以开发自定义的插件,用于修改查询路由、重新查询或者返回定制结果。PgDog 插件可以使用任何语言进行开发,以共享代码库的形式提供,在应用启动时加载。

认证机制

PostgreSQL 支持各种认证方式,目前 PgDog 实现了其中一部分,例如常用的 SCRAM-SHA-256;PgDog 未来会实现全部认证方式。

会话模式

PgDog 会话模式为每一个客户端分配一个 PostgreSQL 连接,可以确保提供全部 PostgreSQL 功能,包括持久性会话变量、设置和基于进程的功能(例如 LISTEN/NOTIFY)。一些批处理的任务(例如导入大量数据)在会话模式下的性能会更好。

虽然会话模式不支持共享的服务器连接,但是 PgDog 连接池仍然可以保留一定数量的连接复用,可以减少 PostgreSQL 服务器的消耗。

官方网站:https://pgdog.dev/

相关推荐
BUG制造者:图图2 小时前
MiMo 模型 Tool Calls 400 报错终极解决方案——Reasoning Content 代理中间件
中间件·代理模式·mimo·小米模型
IvorySQL5 小时前
从 repack.c 深入理解 PostgreSQL REPACK 的底层实现
数据库·postgresql·开源
是垚不是土5 小时前
PostgreSQL 运维工程师 “一本通“ :安装、配置、备份与监控
linux·运维·数据库·postgresql·运维开发
逍遥德5 小时前
SpringBoot自带TaskScheduler 接口实现定时任务的动态增、删、启、停。
java·spring boot·后端·中间件
lifewange6 小时前
中间件细致控制原理 + 可编程实操
中间件
不会摸鱼的小鱼6 小时前
WSL 安装 Ubuntu 22.04 到指定磁盘
数据库·postgresql·php
qq_452396238 小时前
第十三篇:《分布式压测:JMeter Master-Slave集群》
分布式·jmeter
小英雄大肚腩丶9 小时前
RabbitMQ消息队列
java·数据结构·spring boot·分布式·rabbitmq·java-rabbitmq
MXsoft6189 小时前
**一套平台管全域****IT****:分布式一体化监控的实战演进**
分布式
古怪今人10 小时前
etcd分布式键值存储系统 Windows下搭建etcd集群
数据库·分布式·etcd