【前言】
最近项目要部署PostgreSQL集群,在网上了解了一些分布式方案的资料,本来想写一篇不同集群方案的对比,看到网上有个叫石勇虎的大佬有类似文章了,并且连性能对比都做了,转来给大家地铁上刷手机的时候看看。原文地址附在文章末尾。
【正文】
随着postgresql数据库越来越受到国内企业的青睐,其相关的一些产品也逐渐得到更多的关注和完善。那么当单节点实例不能满足性能或者高并发要求的情况下,不论分布式集群或者负载均衡方案都可以作为企业的首选。然而面对品类众多数据库集群方案(例如greenplum,postgresql-xl/xc/x2/xz,citusdb,pgpool等),DB架构师需要针对自己公司的具体业务场景,结合软硬件成本、技术成熟度、后期维护投入等维度进行架构选型,选择最适合自己业务要求的产品和架构。本文就比较热门的GP(greenplum简称)和PG-XL(Postgresql-XL简称)进行简单的测试对比,以期抛砖引玉。
这二者都是作为可以水平扩展的开源分布式数据库集群方案,可以有效的提升系统的横向扩展能力,且相对比较成熟。
一、Greenplum架构:
GP组件简单介绍:
- Master node:
接收客户端的连接、SQL语句,并将工作分配给数据节点。存放global system catalog信息。全局系统目录是一系列系统表,存放了关于GP的一些元数据。Master node不存放任何用户的数据,用户的数据只存在segment node。Master node认证客户端连接,分析用户发过来的sql语句,将这些工作分配给对应的segment 节点,协调segment节点返回的结果,并将最终结果反馈给客户端程序。
- Segment node:
相互独立的多组PostgreSQL数据库,用户的表和索引分布式地存放在不同的Segment节点中,这些segment节点负责SQL的最终执行。
- Interconnect:
GP的segment node之间通过Interconnect进行内部通讯和数据传输,10GB交换机,虽然使用UDP协议,但GP软件层面实施数据包的校验,也能达到TCP的可靠性。如果Interconnect是使用TCP,GP会有1000个数据节点的上限,UDP则无限制。For information about the types of interconnect supported by Greeplum Database, see server configuration parametergp_interconnect_type in the Greenplum Database Reference Guide.
更多内容参考官方文档:
http://gpdb.docs.pivotal.io/4390/admin_guide/intro/arch_overview.html
二、Postgresql-xl架构:
XL组件简单介绍:
· Global Transaction Monitor(GTM)
GTM确保群集范围内的事务一致性。 GTM负责发放事务ID和快照作为其多版本并发控制的一部分。
集群可选地配置GTM proxy,以改进可用性。此外,可以在coordinator间配置代理GTM,可用于改善可扩展性,减少GTM的通信量。
· Coordinator
coordinator管理用户会话,并与GTM和数据节点进行交互。coordinator解析,并计划查询,并给语句中的每一个组件发送下一个序列化的全局性计划。
· Data Node
数据节点是数据实际存储的地方。数据的分布可以由DBA来配置。为了提高可用性,可以配置数据节点的热备以便进行故障转移准备。
更多内容参考官方文档:
http://www.postgres-xl.org/overview/
三、我们的POC测试结果:
维度 | Greenplum(4.3.7.1) | postgresql-xl(9.5r1.1) |
硬件 | CPU:2*4core 2.4GHZ | CPU:2*4core 2.4GHZ |
MEM: 64G | MEM: 64G | |
存储:本地存储 | 存储:本地存储 | |
三台服务器: master*1、segment*6 | 三台服务器:gtm*1、gtm-proxy*2、coordinator*2、datanode*6 | |
测试对象 | 实际应用场景:某批量模型包中第一个存储过程。 基础数据400G | 实际应用场景:某批量模型包中第一个存储过程。 基础数据400G |
模型跑批时长 | 55s | 58s |
资源消耗:
GP CPU消耗:
XL CPU消耗:
二者的对比项:
四、简单总结:
- greenplum和postgresql-xl同样作为mpp、share nothing的架构,在我们测试模型中的整体性能表现差别不大。
- XL在多coordinator节点的情况下,其中一个coordinator宕掉,可以通过其他coordinator正常访问,修复后启动coordinator,集群恢复正常。其他节点(GTM和datanode)宕掉集群不可用(查询报错Failed to get pooled connections)。
- pgbench压测过程中正常停止XL从库,造成主从数据延迟,切换datanode为从库,集群可以正常访问,数据有丢失,丢失的数据为主从延迟造成的那部分,恢复后正常。
- pgbench压测过程强杀XL复制进程,从库宕机,主从延迟,替换时从库无法启动,集群不可访问。
- GP作为分布式架构的关系型数据库产品,在其开源之前曾做为多年商用的成熟产品,已经在很多公司的企业级应用中积累了丰富的实践经验,在日常管理维护上面也较为便捷,而XL在这点上相对比较匮乏。
- GP目前是基于postgresql8.x的版本开发的,很多PG新特性都无法使用,而且GP后续的roadmap还不是很明确,这一点在某种程度上给GP的选用带来一些不确定性。
原文地址:http://mp.weixin.qq.com/s?__biz=MzIxNTI5NjE0Mg==&mid=2247483713&idx=1&sn=8dec98fe411e7e3a3f119b0ce23ecdf8&chksm=979b30a0a0ecb9b6293ba46b3d53fbb0f618f0314e6e8ee70eac7cf32d5ea1cce1b3a70d4e72&mpshare=1&scene=2&srcid=1007g2cvoj3HqeI7fzDIq3Hn&from=timeline&isappinstalled=0#wechat_redirect
本文暂时没有评论,来添加一个吧(●'◡'●)