云原生分布式 PostgreSQL+Citus 集群在 Sentry 后端的实践
优化一个分布式系统的吞吐能力,除了应用本身代码外,很大程度上是在优化它所依赖的中间件集群处理能力。如:kafka
/redis
/rabbitmq
/postgresql
/分布式存储(CephFS
,JuiceFS
,C urve
,Longhorn
)等集群的处理能力。
分布式存储集群(Longhorn)
这里主要用于 Citus
集群的协调器(coordinator)
和工作器(worker)
节点的数据持久化。
具体文档,请参阅:
分布式 PostgreSQL 集群(Citus)
这里主要用于对 Sentry
事件源数据大表 nodestore_node
的分片。
具体文档,请参阅:
读写分离和高可用(PgPool+Repmgr)
这里主要用于对 Citus
节点(协调器
/工作器
)进行读写分离和主备高可用。
具体文档,请参阅:
管理集群节点(PgAdmin)
具体文档,请参阅:
nodestore_node 大表分片
选择分布式 key,并将表转换分布式表,这里将表划分为 64
个分片,数据平均分配到 6
台 worker
节点:
# 创建分布式表
SELECT create_distributed_table('nodestore_node', 'id', colocate_with => 'none', shard_count => 64);
# 平衡分片
SELECT rebalance_table_shards();
# 查询分片
SELECT * FROM citus_shards;
总结
中间件集群基础设施建设,本身涉及细节较多,可以说是另一个领域。
本文提供了一种笔者的实践思路,抛砖引玉。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示