PostgreSQL 集群架构与硬件规划指南
1. 架构可扩展性与多主集群
1.1 集群扩展性问题
随着集群使用量的增加,必然需要更多的节点。一种常见的解决方法是对主节点进行区域化,同时遵循标准的复制概念。例如,若每个区域需要额外的两个节点来满足读流量,可采用“中心辐射(Hub + Spoke)”模型。该模型有助于确保每个区域能跟上需求,且不会因包含特定区域外的节点而增加延迟。
1.2 多主集群的通信拓扑
多主 PostgreSQL 集群通常要求所有参与节点之间有两条直接连接,即“网状(Mesh)”拓扑。然而,这种拓扑可能导致过多的通信开销,因为集群中的每个事务最终都必须得到其他每个主节点的确认。在非常活跃的系统中,这种影响可能会很显著。通信通道数量的计算公式为:$C = N * (N - 1)$,其中 $N$ 为节点数量。例如,3 个节点有 6 个通道,10 个节点则有 90 个通道。这也是“中心辐射”模型受欢迎的一个主要原因,因为本地副本节点不需要是主节点,从而减少了拓扑通信开销。
1.3 利用多主集群实现高可用性
使用支持多个主节点的软件可显著提高 PostgreSQL 集群的可用性。通过消除节点提升时间,若配置得当,可使所有数据后端上的应用程序栈完全活跃。为充分利用多主架构,可遵循以下准则:
1. 始终分配代理层。
2. 若跨数据中心延迟是个问题,每个位置至少分配两个节点。
3. 无需再专门为维护法定人数而添加节点。
4. 尽可能对数据进行地理分区。
1.3.1 代理层的作用
与标准的 PostgreSQL 节点不同,
超级会员免费看
订阅专栏 解锁全文
1201

被折叠的 条评论
为什么被折叠?



