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
领取专属 10元无门槛券
私享最新 技术干货