CitusDB调研分享

CitusDB是什么

CitusDB 是基于 PostgreSQL 扩展(类似 PHP 扩展)实现的 PostgreSQL 集群。

CitusDB特点:

易维护

高可用

纵向扩展

并行分布式查询

CitusDB的架构

CitusDB 与 HDFS 的分布式非常相似,在 Master 上存储元数据,Work 节点存储分片,同时 1 个分片至少要存储在 2 个 Work 节点(可配置更多)上保障其可用性。

Master:

协调集群(分片、复制)

分发查询

只存储元数据

Work:

存储分片

用户对 Master 发起查询,Master 根据元数据下发查询至 Work 节点,最后查询汇总到 Master 节点,合并结果返回给用户。

CitusDB简单实用

编译 citus.so 模块至 PostgreSQL 的 lib 目录

在 PostgreSQL 的配置文件中添加 shared_preload_libraries = 'citus'

在所有节点上执行 psql -c "CREATE EXTENSION citus;"

在 Master 节点执行 psql -c "SELECT * from master_add_node(work-1', 9700);" 添加 Work 节点

至此集群搭建完成, 你可以执行  来查看现有的 Work 节点。

CitusDB的高可用

Master:

可通过 PostgreSQL 自身的主从机制实现高可用,元数据并不大,效率上没有太大问题。

Work:

在查询时 Work 节点如有失败, Master 节点会把失败的查询重新下发至其它存在该分片的节点。如 Work 节点永久损坏可以人工均衡,让其保持设置的复制数。

CitusDB的限制

虽然官方一直宣称 Master 需要的资源很少,但集群达到一定数量级后 Master 是最终性能瓶颈。

有些疑惑官方文档的分布式表,不清楚是不是需要研发特别适配

不支持

Window Functions

CTEs

Set operations

Transactional semantics for queries that span across multiple shards (跨分片事务?)

最后一些参考:

集群部署: https://docs.citusdata.com/en/v6.1/installation/production_rhel.html

集群管理: https://docs.citusdata.com/en/v6.1/admin_guide/cluster_management.html

分布式表: https://docs.citusdata.com/en/v6.1/dist_tables/ddl.html

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180709G0OG1200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券