来源:数据库架构之美

PostgreSQL由于强大的功能和良好的扩展性,基于PostgreSQL来做的分布式架构也比较多,大部分用于分析类场景,下面比较几种常见的架构特点。

Citus

Citus以插件的方式扩展到PostgreSQL中,独立于PostgreSQL内核,所以能很快的跟上PostgreSQL主版本的更新,部署也比较简单,是现在非常流行的分布式方案。Citus在苏宁有大规模应用,微软也提供citus的商业支持。下面是citus的架构:

Citus节点主要分为协调节点和工作节点,协调节点不存储真实数据,只存储数据分布的元信息,实际的数据被分成若干分片,打散到不同worker节点中,应用连接协调节点,协调节点进行sql解析,生成分布式执行计划,下发到worker节点执行,cn将结果汇总返回客户端。

Citus的主要架构特点如下:

①有两种表类型:参考表和分布表,参考表每个协调节点和worker节点都有一份完整的副本,分布表则会打散分布到不同worker中。

②可以进行读写分离,如上图cn1为写节点,可以通过再增加多个cn读节点增加集群读的能力,写cn和读cn之间使用流复制进行元数据同步。

③支持MX模式,可以将元数据也存在某些worker节点中,这样使得该worker节点能够直接提供写的能力,以此增加集群写的能力。

④底层worker节点可以通过流复制搭建副本,保证数据高可用。

⑤做join时最好的结果是能够将计算下推到worker节点,但是只有在参考表和其他表做join以及两个表的分布方式相同的情况下才能下推到worker计算,否则需要将数据拉到协调节点进行计算。

⑥整体架构类似mycat的中间件,因为没有全局事务管理,故不能保证数据的实时读一致性,但是性能上相比要好。数据写一致性使用2pc来保证。

pgxc && pgxl

Pgxc是经典的分布式数据库架构,是真正的企业级HTAP,我们看到市面上很多分布式数据库产品都是基于pgxc架构扩展而来。pgxc是和pg内核紧耦合的,是嵌入到pg内核中,最初pgxc的核心开发者将pgxc商业化,创建了stormdb,进行了一些并行算子优化,后来TransLattice公司将stormdb收购,并且将项目开源,就是现在的pgxl,所以pgxc和pgxl是一脉相承的,大部分代码是直接移植过来的。下面是pgxc的架构:

其实这个架构和citus优点类似,也是分为协调节点和数据节点,数据也是通过hash分布到不同数据节点上,只是在集群中增添了全局事务管理组件,保证全局事务的一致性。

pgxc的架构特点如下:

①gtm保证全局读一致性,两阶段提交保证全局写一致性。

②gtm是整个系统的瓶颈点,在超过150并发的情况下,gtm的瓶颈就会显现,每一个事务开启都会去gtm取事务号和快照信息,造成gtm在网络压力和分配事务号速度上存在瓶颈。

③多个协调节点间需要同步元数据信息,如果协调节点失败,不仅会造成ddl hang住,也可能造成两阶段事务的阻塞。

④pgxc的出现主要是在pg在oltp应用场景上的优化,不管是新增gtm,还是数据一致性的保证上面都做得更加精细化。

⑤和citus类似,数据表也可以分为分布表和复制表,复制表在每一个数据节点都有一份全量数据。

Greenplum

Greenplum是pivotal公司推出的一款开源olap的mpp数据库,greenplum的用户在某种程度上甚至超越了pg,很多人可能是通过greenplum才认识的pg,可见greenplum的风靡。下面是greenplum架构:

Master节点存储全局系统元数据信息,不存储真实数据。数据通过hash分布到不同的segment中,master作为sql的全局入口,负责在segment中分配工作负载,整合处理结果,返回客户端。

Greenplum架构特点如下:

①master节点可以做主备,segment节点也有镜像保证高可用,segment主备尽量混布到不同服务器上。

②支持行列混合存储引擎,同时支持外部表。

③在join时也涉及到数据跨节点重分布的问题,这也是share nothing数据库不可避免的问题。

④高速内部interconnect网络,实现数据join时的高速移动和汇总。

⑤高效的数据并行加载。

PostgreSQL的几种分布式架构对比相关推荐

  1. SSM分布式项目01-技术点介绍项目介绍分布式架构对比SOA架构

    1. 技术特点 技术新,如redis 技术范围广 分布式(一件事拆分成多个部分完成) 高并发(并发量:同时访问,tomcat+Oracle 400~500).集群(多个人做同一件事).负载均衡.高可用 ...

  2. ZK和Redis两种分布式锁对比

    一.Redis分布式锁 1.setnx + lua脚本 优点:redis基于内存,读写性能很高,因此基于redis的分布式锁效率比较高 缺点:分布式环境下可能会有节点数据同步问题,可靠性有一定的影响. ...

  3. 七点讲透分布式架构的前世今生,面试官都不知道的概念来了

    一.前言 以前我们聊过分布式架构的演进过程,那本文我们就来聊一聊目前主流的分布式架构和分布式架构中常见理论以及如何才能设计出高可用的分布式架构好了,基本上就是它的前世今生了. 分布式架构中,SOA和微 ...

  4. 分布式架构中常见理论以及如何才能设计出高可用的分布式架构?

    分布式架构中常见理论以及如何才能设计出高可用的分布式架构? 一.前言 我们就来聊一聊目前主流的分布式架构以及分布式架构中常见理论以及如何才能设计出高可用的分布式架构好了.分布式架构中,SOA和微服务架 ...

  5. 【分布式】分布式架构-ESB SOA

    一.前言 1.前言 转载:添加链接描述 上篇文章,我们聊到了分布式架构的演进过程,那本文我们就来聊一聊目前主流的分布式架构以及分布式架构中常见理论以及如何才能设计出高可用的分布式架构好了.分布式架构中 ...

  6. 主流分布式架构的风流韵事...

    一.前言 上篇文章,我们聊到了分布式架构的演进过程,那本文我们就来聊一聊目前主流的分布式架构以及分布式架构中常见理论以及如何才能设计出高可用的分布式架构好了.分布式架构中,SOA和微服务架构是最常见两 ...

  7. redis set 超时_redis分布式锁3种实现方式对比分析总结

    我在这篇文章提到了分布式锁,但没有展开来讲,抛砖引玉,今天就来说说高并发服务编程中的redis分布式锁. 这里罗列出3种redis实现的分布式锁,并分别对比说明各自特点. Redis单实例分布式锁 实 ...

  8. 一文了解四种软件架构:Serverless架构、微服务架构、分布式架构、单体架构

    如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存.晋升空间.这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面. 一.单体架构 单体架构 ...

  9. 对比 5 种分布式事务方案,还是宠幸了阿里的 Seata(原理 + 实战)

    本来不知道写点啥,正好手头有个新项目试着用阿里的 Seata 中间件做分布式事务,那就做一个实践分享吧! 介绍 Seata 之前在简单回顾一下分布式事务的基本概念. 分布式事务的产生 我们先看看百度上 ...

最新文章

  1. Python爬虫学到什么程度就可以去找工作了?
  2. 美国25大最具价值博客网站出炉
  3. Struts1 处理接收参数插入到数据库之后呈乱码的问题解决
  4. mysql getcolumnname_jdbc-mysql基础 ResultSetMetaData getColumnName getColumnLabel 得到列的名字和别名...
  5. union的作用 c语言,C语言(union类型及应用)
  6. python 主函数 输入
  7. 混凝土静力受压弹性模量试验计算公式_【小马建考干货】天天送检,你知道混凝土试块检测哪些性能标指吗?...
  8. SQLi LABS Less-12 联合注入+报错注入
  9. go mockweb接口_GitHub - duxiaoman/AnyMock: 通用接口Mock平台
  10. 【渝粤教育】国家开放大学2018年春季 3781-21T燃气燃烧技术与设备 参考试题
  11. 软中断SOFTIRQ
  12. pandas读取xls文件
  13. 软件测试分类、分级与软件缺陷管理
  14. Python 命令行cmd指定颜色设置
  15. 数据结构实验——哈夫曼编码
  16. 神一样的美国高中作文比喻集锦
  17. 北京PM2.5浓度回归分析
  18. python虚拟环境的安装_Python虚拟环境搭建学习笔记
  19. 华为的OD,值得去吗?
  20. 你不知道Python多能干,小伙子骨骼惊奇不来学习吗?

热门文章

  1. 分布式 开源_3个开源分布式跟踪工具
  2. tcp并发服务器_在Go中构建并发TCP服务器
  3. 不使用机器学习的机器视觉_使用机器学习为卡通着色
  4. 区块链和区块链联盟_区块链是安全主题吗?
  5. 比特币怎么比特币钱包_5分钟内获得比特币
  6. grass gis怎么使用_使用GRASS GIS返回学校
  7. (11)vue.js 指令(3)
  8. goland创建一个不限长度的字节切片_Go语言3 : 切片
  9. 运行Gazebo出现cmd /opt/ros/melodic/lib/gazebo_ros/gzserver类似错误
  10. html 拖放实现拼图游戏,Canvas drag 实现拖拽拼图小游戏