在本章中,我们希望将我们的注意力集中在写可扩展,多主,同步,对称和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的请求到请求块,并将它们一起发送出去。

这里的一个优点是,连接可以被缓存,以避免由于一直打开和关闭来接引起的大量的开销。

[您还记得我们关于光速的介绍的?这是这一切发生的地方;来来回回发送请求可能一起延迟问题,因此,开销必须尽可能多的降低,以确保保持高性能。]

PostgreSQL Replication之第十二章 与Postgres-XC一起工作(1)的更多相关文章

  1. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(7)

    12.7 处理故障转移和删除节点 在本节中,我们将看看故障切换如何处理.我们还将看看如何使用安全可靠的方法添加节点到Postgres-XC设置以及如何从Postgres-XC设置删除节点. 12.7. ...

  2. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(4)

    12.4 性能优化 Postgres-XC不是一个奇特的PostgreSQL版本,而是一个真正的分布式系统.这意味这,您不能只存储数据,希望事情超出服务器之外的快速,高效.如果您想优化速度,思考数据是 ...

  3. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(3)

    12.3 配置一个简单的集群 在本章中,我们要建立一个由三个数据节点组成的集群.一个协调节点,以及管理集群的全局事务管理节点.对于每个组件,我们必须创建一个目录: hs@vm:~/data$ ls - ...

  4. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(5)

    12.5 创建表和发送查询 介绍了Postgres-XC以及其底层的思想之后,是时候创建我们的第一个表,看看集群将如何表现.下面的例子演示了一个简单的表.将使用id列的哈希键来分布它: test=# ...

  5. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(2)

    12.2安装 Postgres-XC 可以从 http://postgres-xc.sourceforge.net/下载Postgres-XC.对于本书,我们使用1.0.3版本的Postgres-XC ...

  6. PostgreSQL Replication之第十二章 与Postgres-XC一起工作(6)

    12.6 添加节点 Postgres-XC允许您在那个过程中的任何一个时间点添加新的服务器到计划中.所有您需要做的是按照我们之前演示的设置一个节点,并在 控制器上调用CREATE NODE.然后,该系 ...

  7. PostgreSQL Replication之第十四章 扩展与BDR

    在这一章中,将向您介绍一个全新的技术,成为BDR.双向复制(BDR),在PostgreSQL的世界里,它绝对是一颗冉冉升起的新星.在不久的将来,许多新的东西将会被看到,并且人们可以期待一个蓬勃发展的项 ...

  8. PostgreSQL Replication之第十五章 与Walbouncer 一起工作

    与Walbouncer 一起工作 在本书的最后一章,将引导您通向2014年发布的一个工具,称为walbouncer.本书中的大多数技巧说明了如何复制整个数据库实例,如何分片,等等.在最后一章,是关于w ...

  9. PRML读书会第十二章 Continuous Latent Variables(PCA,Principal Component Analysis,PPCA,核PCA,Autoencoder,非线性流形)

    主讲人 戴玮 (新浪微博: @戴玮_CASIA) Wilbur_中博(1954123) 20:00:49 我今天讲PRML的第十二章,连续隐变量.既然有连续隐变量,一定也有离散隐变量,那么离散隐变量是 ...

随机推荐

  1. Bootstrap页面布局21 - BS对话框设计

    设计弹出层对话框: 设计一个点击登录按钮,再弹出一个登陆对话框的实例,且带有动画效果 <div class='container-fluid'> <h2 class='page-he ...

  2. 迷宫dfs

    #include<stdio.h>int mov1[4]={0,0,1,-1};int mov2[4]={1,-1,0,0};int map[5][5]={0,1,0,0,1,      ...

  3. Dom4j

    Dom4j http://baike.baidu.com/link?url=2XOnr06saKUd-9By1GyPxIolXMQhf_C-CnMFll_yhtR4m00i27zphbkI5-dGpw ...

  4. qTip2 精致的jQuery提示信息插件

    qTip2 精致的jQuery提示信息插件    出处:http://www.cnblogs.com/lwme/archive/2012/02/16/qtip2-jquery-plugin.html ...

  5. 关于FireMonkey TGrid赋值的一点小研究

    FireMoneky的TStringGrid用法和VCL里面的差不多, 但是另一个TGrid实在是奇葩, 几乎找不到给单元格赋值的方法(除了使用LiveBind) 看了其源码, 发现只要给某个Colu ...

  6. FTS抓包看L2CAP Connection的建立(二)

    1.概述     前面一篇博文已经介绍到远端设备对本地的Connection request进行了response,目前L2CAP的连接处于pending状态.这篇将继续抓取下面的一些packets, ...

  7. SHELL 八大扩展

    最近在梳理bash知识的的过程中,有幸阅读了man bash文档,一时间犹如醍醐灌顶一般,很多当初不明白的地方都豁然开朗,现在就其中的一点做一分享,同时也为man bash做一下广告,当你面对bash ...

  8. mysql-zabbix-agent

    使用Zabbix监控MySQL服务器方法 01/27/2014 从Zabbix 2.2开始,Zabbix官方已经支持了MySQL监控,但是MySQL监控默认是不可用的,需要经过额外的设置才可以使用.K ...

  9. MyBatis-Generator 最佳实践

    为数据库中的表A生成A.java, A.java, A.xml 由于该插件生成的A.java, A.xml会带有example, 不希望生成example 数据库中的字段写有注释, 希望注释能自动生成 ...

  10. Ubuntu 设置Vim tab为四个空格

    使用root权限打开 /etc/vim/vimrc 添加下列配置 set tabstop= set softtabstop= set shiftwidth= set noexpandtab set n ...