postgresql分布式集群之citus简介(转载)

更新时间:2023-05-05 17:45:07 阅读: 评论:0

postgresql分布式集群之citus简介(转载)
⼀、Citus是什么
citus是PG的⼀个sharding插件,可以把PG变成⼀个分布式数据库。⽬前在苏宁有⼤量的⽣产应⽤跑在citus+pg的环境中。⼤家可以看it⼤咖视频。
citus是⼀款基于PostgreSQL的开源分布式数据库,⾃动继承了PostgreSQL强⼤的SQL⽀持能⼒和应⽤⽣态(不仅仅是客户端协议的兼容还包括服务端扩展和管理⼯具的完全兼容)。
和其他类似的基于PostgreSQL的分布式⽅案,⽐如GreenPlum,PostgreSQL-XL,PostgreSQL-XC相⽐,citus最⼤的不同在于citus是⼀个PostgreSQL扩展⽽不是⼀个独⽴的代码分⽀。
因此,citus可以⽤很⼩的代价和更快的速度紧跟PostgreSQL的版本演进;同时⼜能最⼤程度的保证数据库的稳定性和兼容性。
⼆、主要特性
● PostgreSQL兼容
●⽔平扩展
●实时并发查
●快速数据加载
●实时增删改查
●持分布式事务
●⽀持常⽤DDL
三、Citus架构节点
Container简称CN节点  worker节点
CN只存储和数据分布相关的元数据,实际的表数据被分成M个分⽚,打散到N个Worker上。这样的表被叫做“分⽚表”,可以为“分⽚表”的每⼀个分⽚创建多个副本,实现⾼可⽤和负载均衡。
分⽚表和参考表
分⽚表分布打散在多个worker节点,⽽参考表每⼀个container节点和worker都保留⼀模⼀样的副本。
下图是Citus处理客户端访问的⼀个简单的架构流程图,应⽤层直接连接CN节点,CN节点对客户端传⼊的sql语句进⾏解析,⽣成分布执⾏计划,并将各个⼦任务下发到相应的Worker节点,之后收集Worker的结果,经过处理后返回最终结果给客户端
四、Citus的三种集群
因为,citus本⾝不⽀持HA,不像mongodb⼀样故障⾃动修复,但是可以结合pg的流复制,以及应⽤层jdbc数据驱动实现读写分离,故障切换。
1、第⼀种集群,增加读的能⼒
多个container节点,多个container节点进⾏流复制,保持元数据⼀致,在应⽤层设置多个读写分离,保证了数据的⼀致性,也保证了业务的⾼可⽤。
2、第⼆种集群,citus的MX功能
此功能可以说是解决了读和写的瓶颈,苏宁的架构中也是采⽤同样的思想。
原理:Mx功能的原理就是让其他的worker节点携带元数据,相当于携带元数据的worker节点都⽀持读写的能⼒,很⼤程度解决了读写的问题。
3、第三种集群,流复制,异地容灾
使⽤不同的dns,解决两套集群IP不同的问题。扩展容灾能⼒。
这套集群是在mX的基础上解决异地容灾的⽅案,通过dns解析到不同的机房的数据库。
上⾯三种集群,最常⽤的最有效的⽅法还是MX集群,只要在应⽤层设置好读写规则就可以了,底层worker的HA可以⽤流复制,多个副本实现数据⾼可⽤。
五、worker节点⽹络问题
cn节点访问所有worker节点。oltp业务的访问⽐较频繁。
重分布数据时,worker节点相互访问,访问频率不⼤。olap业务场景,数据交换吞吐较⼤。
cn节点连worker有两种模式
1、事务级保持连接模式(每条sql发起建⽴连接,sql结束断开连接,(除⾮事务中)。跑OLAP类sql时,使⽤即时连接模式(olap场景并发不⾼,建⽴连接带来的额外开销不
⼤)
2、会话保持连接模式(会话发起建⽴连接,会话结束后释放连接)。跑OLTP类的SQl时,使⽤的是会话保持(oltp查询,并发性能⾼)
上⾯两种模式,基本上Citus能满⾜TP也能满⾜AP。
后⾯我会把搭建过程分享出来,⽐较简单。如果⼤家有什么好的pgsql的分布式⽅案,可以留⾔评论⼀起交流。
citus还有好多的特性,
⽐如:对于计算count处理时,如何进⾏优化。
对于数据统计,citus提供了topn插件,与HLL类似

本文发布于:2023-05-05 17:45:07,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/533705.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   节点   连接
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图