文章插图
优化一个分布式系统的吞吐能力,除了应用本身代码外,很大程度上是在优化它所依赖的中间件集群处理能力 。如:
kafka
/redis
/rabbitmq
/postgresql
/分布式存储(CephFS
,JuiceFS
,C urve
,Longhorn
)等集群的处理能力 。分布式存储集群(Longhorn)这里主要用于
Citus
集群的协调器(coordinator)
和工作器(worker)
节点的数据持久化 。具体文档,请参阅:
- https://longhorn.io/
文章插图
文章插图
分布式 PostgreSQL 集群(Citus)这里主要用于对
Sentry
事件源数据大表 nodestore_node
的分片 。具体文档,请参阅:
- https://docs.citusdata.com/en/v11.1/
文章插图
读写分离和高可用(PgPool+Repmgr)这里主要用于对
Citus
节点(协调器
/工作器
)进行读写分离和主备高可用 。具体文档,请参阅:
- https://www.pgpool.net/docs/pgpool-II-4.2.3/en/html/example-kubernetes.html
- https://repmgr.org/
文章插图
文章插图
管理集群节点(PgAdmin)具体文档,请参阅:
- https://www.pgadmin.org/
文章插图
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;
文章插图
总结中间件集群基础设施建设,本身涉及细节较多,可以说是另一个领域 。
本文提供了一种笔者的实践思路,抛砖引玉 。
【云原生分布式 PostgreSQL+Citus 集群在 Sentry 后端的实践】
经验总结扩展阅读
- 微服务系列之分布式日志 ELK
- 云南之“滇”是什么梗
- 五虎上将赵云是怎样死的(五虎上将为什么就出了一个赵云)
- 历史上真实的赵云是怎么死的(真实赵云有多厉害)
- 三国里赵云是怎么死的,又是谁杀的(三国第一猛将赵云)
- 赵云什么时候死的(赵云死于妻子之手)
- 三国演义中赵云是怎么死的(老三国赵云哪一集死的)
- 三国演义马超赵云咋死的(马超打不过赵云的原因)
- 七飘飘划拳怎么玩(云南七飘飘划拳手势图解)
- 云计算_OpenStack