Citus集群拓扑架构介绍
作者:杨杰
简介
Citus是Postgres的开源扩展,将Postgres转换成一个分布式数据库,在集群的多个节点上分发数据和查询,具有像分片、分布式SQL引擎、复制表和分布式表等特性。
因为Citus是Postgres的扩展(而不是一个独立的代码分支),所以当你使用Citus时,你也在使用Postgres,可以利用最新的Postgres特性、工具和生态系统。
架构节点
每个集群都有一个称为协调节点(Coordinator Node,CN)的特殊节点,其他节点称为工作节点(Worker Node,WN/DN)。
CN只存储和数据分布相关的元数据,实际的表数据被分成M个分片,打散到N个DN上。
应用程序将它们的查询发送到协调器节点,该节点将查询转发给相关的数据节点并收集结果。
注:以上以分布式表为例
集群拓扑
首先介绍原生Citus支持的几种集群拓扑
statement-based replication
为了提高可用性,协调节点通过PG原生流复制实现多副本,数据节点通过基于语句复制实现表级别的副本,副本数由参数shard_replication_factor = 2控制。
基于语句复制存在的问题就是,如果子表非常多,SQL数量成比例增长,压力增加,同时,当子表出现问题时,会标记为非活跃状态,涉及与协调节点通信变更元数据,如果出问题的子表很多,性能自然不会好,相应还会带来副本修复的问题。
用Raft来做数据复制,每个数据变更都会落地为一条Raft日志,通过Raft的日志复制功能,将数据安全可靠地同步到复制组的每一个节点中。不过在实际写入中,根据Raft的协议,只需要同步复制到多数节点,即可安全地认为数据写入成功。
相比PG本身的主从副本,开发成本比较大,目前Citus已经建议从基于语句的复制切换到流式复制,参数replication_model = ‘streaming’
streaming replication
协调节点及数据节点都通过流复制实现多副本,保证可用性。
数据节点副本同步使用PG流复制,提高分片上的写入速度。
协调节点属于Master-Standby架构,仅CN节点支持数据写入,势必会有单点可入瓶颈。
另外,默认CN-Stanby的查询发往DN-Primary节点,协调节点虽然做了读写分离,但底层请求都发给了DN-Primary,DN-Standby仅仅充当了备份副本。
对此,Citus还提供了两个参数以支持写入能力扩展及数据节点读写分离。
use_secondary_node
开启use_secondary_node = always,读请求可以发往数据节点备节点。
writable_standby_coordinator
开启writable_standby_coordinator = on
Enables?simple?DML?via?a?streaming?replica?of?the?coordinator
这个参数的作用就是使CN-Standby也支持DML,比如Insert、Copy等操作。
除了通过writable_standby_coordinator参数支持多节点DML,Citus还提供了MX架构。
Citus MX
通过MX架构,数据节点同时存储用户数据及元数据,数据读写能力得到了水平扩展。
对于MX架构,数据节点支持存储元数据以支持读写请求,同时也增加了数据节点的压力,对此可以考虑计算存储分离架构。
Citus支持通过函数master_set_node_property设置节点的shouldhaveshards属性,控制DN节点不放分片,专门用于分担CN负载。
至此,便是目前Citus原生支持的几种集群拓扑。
计算存储分离+读写分离
原生Citus仅支持在CN-Master执行DDL操作,通过实现保障数据一致性的多点DDL方案,CN节点不在区分节点角色,可在任一CN节点执行DDL+RW。
除此之外,不再通过参数控制决定读写分离,直接根据Query类型做读写分离,将读请求发送到DN-Standby。
了解更多PostgreSQL热点资讯、新闻动态、精彩活动,请访问中国PostgreSQL官方网站:www.postgresqlchina.com
解决更多PostgreSQL相关知识、技术、工作问题,请访问中国PostgreSQL官方问答社区:www.pgfans.cn
下载更多PostgreSQL相关资料、工具、插件问题,请访问中国PostgreSQL官方下载网站:www.postgreshub.cn
Citus集群拓扑架构介绍相关推荐
- redis集群拓扑_Redis拓扑
redis集群拓扑 Redis - an open-source in-memory data structure store, is a very significant piece in mode ...
- Apache Durid (HDFS原理 特性 读写测试 集群部署 架构设计)
Apache Durid (HDFS 集群部署) Apache Durid (HDFS 集群部署) 1. 分布式文件HDFS 1.1 HDFS简介 1.1.1 HDFS发展历史 1.1.2 HDFS设 ...
- 数据中台Citus集群压测报告
作者简介: 迪颉科技是专注于企业数字化转型数据价值及数据治理,并在大数据.数据中台(零售.制造行业).dataops/数仓以及数据驱动的应用等,提供专业解决方案的团队.在以往外企的从业经验中,将原来的 ...
- 【冬瓜哥手绘雄文】集群文件系统架构演变终极深度梳理图解
上篇文章<IO时延你被骗了多久>,竟然没有人给瓜哥发红包!很不像话!冬瓜哥起早贪黑打把势卖艺,最终却连五毛党都赶不上,所以瓜哥决定这篇文章之后休息一段时间,玩玩游戏,看看电影,睡睡大觉了. ...
- 企业集群平台架构设计与实现(lvs/haproxy/keepalived)-高俊峰-专题视频课程
企业集群平台架构设计与实现(lvs/haproxy/keepalived)-4979人已学习 课程介绍 爱维Linux独家出品,集合目前热门的集群应用技术LVS/HAPROXY/Kee ...
- postgres 数据库 citus 集群分片
文档结构: 以下前言来自网络 前言 什么时候需要考虑做数据切分? 1.能不切分尽量不要切分 并不是所有表都需要进行切分,主要还是看数据的增长速度.切分后会在某种程度上提升业务的复杂度,数据库除了承载数 ...
- 在Citus集群中添加新节点
一.添加Citus新节点作为primary worker node 1.在新节点上安装PG和Citus,以及其他需要的组件(也可以在已有PG服务器上创建新的PG数据库实例): 2.初始化PG数据库实例 ...
- 云原生分布式 PostgreSQL+Citus 集群在 Sentry 后端的实践
优化一个分布式系统的吞吐能力,除了应用本身代码外,很大程度上是在优化它所依赖的中间件集群处理能力.如:kafka/redis/rabbitmq/postgresql/分布式存储(CephFS,Juic ...
- 【Kafka】第三篇-Kafka的集群及Canal介绍
[上一章 [Kafka]第二篇-Kafka的核心概念及分区消费规则] 学习路线 Kafka集群架构 Kafka集群环境 1.kafka是一个压缩包,直接解压即可使用,所以我们就解压三个kafka: 2 ...
最新文章
- 软件工程 speedsnail 冲刺3
- python异常值检测的方法_Python实现非正太分布的异常值检测方式
- java dh算法_dh密钥交换算法java
- 微软MSDN中文网络广播(Webcast)——Visual Studio 2010 ALM应用实践系列课程预告(2011)...
- CentOSserverMysql主从复制集群结构
- MySQL(二)InnoDB的内存结构和特性
- VS Code的Error: Running the contributed command: ‘_workbench.downloadResource‘ failed解决
- 【教程】Microsoft Wi-Fi Direct Virtual关闭方法
- 绑定gridview去掉标题文字粗体。
- Git ~ 添加远程仓库 ~Git
- Android 耳机插入过程分析 (AudioManager部分)
- 雄伟到惊世骇俗的黄羊山超级相控阵雷达
- 港口水域电子海图数据快速检索算法及应用
- cadence ~ PCB排版 必要流程
- java一键生成《数据库设计文档》
- 这五个数据分析师技巧你一定要知道!
- iOS编译cURL库并链接darwinssl,zlib,c-ares库操作步骤
- 电脑C盘满了怎么办?请放心删除这些文件夹
- cas mysql_使用CAS连接Mysql数据库
- mongoose http服务器对TCP流的接收处理
热门文章
- 四级——星火英语作文模板
- c语言 情书,用c语言写的情书
- MySQL查询报错Unknown column ‘new_edition‘ in ‘IN/ALL/ANY subquery‘
- OpenCV(4.0.0) Error: Assertion failed (dst.data == (uchar*)dst_ptr) in cvShowImage
- 从硬件配置开始 网吧的服务器设置全攻略(转)
- Allegro和Alitum Desiger PCB文件互转方法
- 美容门店信息化管理系统该如何搭建?不妨参考一下百数
- 助力移动物联网开启高质量发展新征程,芯讯通获“2022年移动物联网先进企业”奖
- 罗振宇、吴晓波都错了,知识是免费的
- 华为设备配置IS-IS命令