天天看點

雲原生分布式 PostgreSQL+Citus 叢集在 Sentry 後端的實踐

雲原生分布式 PostgreSQL+Citus 叢集在 Sentry 後端的實踐

優化一個分布式系統的吞吐能力,除了應用本身代碼外,很大程度上是在優化它所依賴的中間件叢集處理能力。如:​

​kafka​

​​/​

​redis​

​​/​

​rabbitmq​

​​/​

​postgresql​

​​/分布式存儲(​

​CephFS​

​​,​

​JuiceFS​

​​,​

​C urve​

​​,​

​Longhorn​

​)等叢集的處理能力。

分布式存儲叢集(Longhorn)

這裡主要用于 ​

​Citus​

​​ 叢集的​

​協調器(coordinator)​

​​和​

​工作器(worker)​

​ 節點的資料持久化。

具體文檔,請參閱:

  • ​​https://longhorn.io/​​
雲原生分布式 PostgreSQL+Citus 叢集在 Sentry 後端的實踐
雲原生分布式 PostgreSQL+Citus 叢集在 Sentry 後端的實踐

分布式 PostgreSQL 叢集(Citus)

這裡主要用于對 ​

​Sentry​

​​ 事件源資料大表 ​

​nodestore_node​

​ 的分片。

具體文檔,請參閱:

  • ​​https://docs.citusdata.com/en/v11.1/​​
雲原生分布式 PostgreSQL+Citus 叢集在 Sentry 後端的實踐

讀寫分離和高可用(PgPool+Repmgr)

這裡主要用于對 ​

​Citus​

​​ 節點(​

​協調器​

​​/​

​工作器​

​)進行讀寫分離和主備高可用。

具體文檔,請參閱:

  • ​​https://www.pgpool.net/docs/pgpool-II-4.2.3/en/html/example-kubernetes.html​​
  • ​​https://repmgr.org/​​
雲原生分布式 PostgreSQL+Citus 叢集在 Sentry 後端的實踐
雲原生分布式 PostgreSQL+Citus 叢集在 Sentry 後端的實踐

管理叢集節點(PgAdmin)

具體文檔,請參閱:

  • ​​https://www.pgadmin.org/​​
雲原生分布式 PostgreSQL+Citus 叢集在 Sentry 後端的實踐

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 後端的實踐

總結

中間件叢集基礎設施建設,本身涉及細節較多,可以說是另一個領域。

繼續閱讀