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/

相关推荐
lang201509282 小时前
Kafka元数据缓存机制深度解析
分布式·缓存·kafka
暴躁的菜鸡3 小时前
postgresql16.8二进制包编译
ubuntu·postgresql
qq_343247033 小时前
单机版认证kafka
数据库·分布式·kafka
武子康3 小时前
Java-199 JMS Queue/Topic 集群下如何避免重复消费:ActiveMQ 虚拟主题与交付语义梳理
java·分布式·消息队列·rabbitmq·activemq·mq·java-activemq
2301_800256113 小时前
第十一章 PostgreSQL 服务器编程知识点梳理(1)
服务器·数据库·postgresql
源代码•宸4 小时前
分布式缓存-GO(简历写法、常见面试题)
服务器·开发语言·经验分享·分布式·后端·缓存·golang
A尘埃4 小时前
Java业务场景(高并发+高可用+分布式)
java·开发语言·分布式
他是龙5514 小时前
41-ASP应用与IIS中间件漏洞实战
中间件
暴躁的菜鸡4 小时前
Ubuntu22.04安装postgresql16.8
ubuntu·postgresql
苦学编程的谢5 小时前
RabbitMQ_7_高级特性(4)
分布式·rabbitmq