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/

相关推荐
幼儿园老大*3 小时前
什么是分布式数据库?有什么优势?
数据库·分布式
武子康4 小时前
大数据-135 ClickHouse 集群连通性自检 + 数据类型避坑实战|10 分钟跑通 ON CLUSTER
大数据·分布式·后端
有谁看见我的剑了?8 小时前
Rocky 9 安装 Elasticsearch分布式集群
分布式·elasticsearch·jenkins
你总是一副不开心的样子(´ . .̫ .16 小时前
消息队列Kafka
分布式·kafka
沐浴露z16 小时前
Kafka入门:基础架构讲解,安装与使用
java·分布式·kafka
摇滚侠16 小时前
全面掌握PostgreSQL关系型数据库,备份和恢复,笔记46和笔记47
java·数据库·笔记·postgresql·1024程序员节
auspicious航18 小时前
PostgreSQL数据库关于pg_rewind的认识
数据库·postgresql·oracle
wu~97019 小时前
Kafka底层解析:可靠性与高性能原理
分布式·kafka·操作系统
兜兜风d'19 小时前
RabbitMQ 发送方确认机制详解
spring boot·分布式·rabbitmq·java-rabbitmq·1024程序员节
摇滚侠19 小时前
全面掌握PostgreSQL关系型数据库,设置远程连接,笔记05,笔记06
java·数据库·笔记·postgresql