在本章中,我们希望将我们的注意力集中在写可扩展,多主,同步,对称和PostgreSQL的称为Postgres-XC(PostgreSQL eXtensible Cluster)的透明复制方案。该项目的目标是为终端用户提供透明的复制解决方案,通过水平扩展到多台服务器,这允许更高水平的负载。
在运行Postgres-XC的服务器阵列中,您可以连接到集群中的任何节点。该系统将完全确保您能够准确的获得和每个节点上数据的相同的视图。这是非常重要的,因为它解决了一些客户端的问题。没有必要为只写到一个节点上的应用程序添加逻辑。您可以简单轻松地平衡您的负载;在一个事务提交之后,数据总是在所有的节点上了即时可见。
当考虑Postgres-XC时,要记住的最重要的事情是,它不是附加到PostgreSQL的,它是代码分配出来的。因此,它不使用普通的PostgreSQL版本号,代码库通常会滞后官方的PostgreSQL代码树。
本章将为您提供 有关Postgres-XC相关的信息。我们将在本章包括如下主题:
• Postgres-XC 架构
• 安装 Postgres-XC
• 配置一个集群
• 优化存储
• 性能管理
• 添加和删除节点
12.1 理解 Postgres-XC 架构architecture
在我们深入探索Postgres-XC的安装和最终的配置之前,我们必须深入地看看这个神奇的软件的基础架构:
一般情况下,一个 Postgres-XC 系统有如下必要的组件组成:
• 数据节点
• 全局事务管理(GTM)
• 协调节点
• 全局事务管理代理
让我们来看看每个组件的目的。
12.1.1数据节点(Data nodes)
数据节点是系统的实际存储骨干。它将持有集群内部数据的全部或者一部分。它被连接到Postgres-XC的基础设施并处理本地的SQL执行。
12.1.2全局事务管理(GTM)
GTM将为集群提供一个一致的数据视图。一个一致的数据视图是必须的,因为,否则的话,在一个对应用程序来说是一个完全透明的环境中,负载均衡将是不可能的。
一致的视图是通过集群范围的快照提供的。除此之外,GMT将创建全局事务ID(GXID)。这些GXIDs是必不可少的,因为事务必须在集群范围内被协调。
除了这个核心功能,GTM也将处理全局的东西,例如序列,等等。
12.1.3协调节点(Coordinators)
协调节点是一个为应用程序提供切入点服务的软件。一个应用程序将连接到其中一个协调节点。它将复制SQL分析,全局执行计划的创建,和全局SQL的执行。
12.1.4全局事务管理代理(GTM Proxy)
GTM Proxy 可以用于提高性能。鉴于Postgres-XC的架构,每个事务不得不给GTM发送一个请求。在许多情况下,这可能会导致延迟,以及随后的性能问题。GTM Proxy 将介入并收集发送到GTM的请求到请求块,并将它们一起发送出去。
这里的一个优点是,连接可以被缓存,以避免由于一直打开和关闭来接引起的大量的开销。
[您还记得我们关于光速的介绍的?这是这一切发生的地方;来来回回发送请求可能一起延迟问题,因此,开销必须尽可能多的降低,以确保保持高性能。]