levkk/pgcat:Rust支持分片、负载平衡和故障转移的PostgreSQL池。

22-03-22 banq

类似PgBouncer支持分片、负载平衡和故障转移支持的 PostgreSQL 池程序。
特点:
  • 会话模式:在会话模式下,客户端在连接期间与一台服务器对话。
  • 事务模式:客户端在单个事务期间与一个服务器对话;一旦结束,服务器将返回到池中。
  • 读查询的负载均衡:所有查询都使用循环算法针对配置的服务器进行负载平衡。最直接的配置示例是将这个池放在几个副本前面,并让它对所有查询进行负载平衡。
  • 查询解析器:查询解析器将尽最大努力确定查询应该去哪里,但有时这是不可能的。在这种情况下,客户端可以使用以下自定义 SQL 语法选择它想要的服务器。
  • 故障转移:在将所有服务器SELECT 1提供给客户端之前,都会通过查询检查所有服务器。如果服务器无法访问,它将被禁止,并且在禁止期间不能再提供任何交易。查询被路由到剩余的服务器。如果所有服务器都被禁止,则禁止列表被清除:这是针对误报的安全预防措施。初级永远不能被禁止。
  • 分片:我们使用PARTITION BY HASH散列函数,与 Postgres 用于声明性分区的方法相同。这允许使用 Postgres 分区对数据库进行分片,并将分区放置在不同的服务器(分片)上。读取和写入查询都可以使用此池路由到分片。
  • 实时配置重新加载:可以通过向进程发送 akill -s SIGHUP或通过查询RELOAD管理数据库来重新加载配置。

点击标题