Yelp 的 Apache Cassandra 集群重建解決方案

2023-08-17     InfoQ

原標題:Yelp 的 Apache Cassandra 集群重建解決方案

作者 | Rafal Gancarz

譯者 | 明知山

策劃 | 丁曉昀

Yelp 構建了一個解決方案,利用其數據流架構來清理來自已損壞的 Apache Cassandra 集群的數據。提供解決方案的團隊探索了許多可能的選項來解決數據損壞問題,但最終不得不將數據轉移到一個新的集群中,以便在轉移過程中移除損壞的記錄。

Yelp 將 Apache Cassandra 作為其平台許多組件的數據存儲系統,他們根據數據、流量和業務需求為特定的場景提供了許多較小的 Cassandra 集群。最初,Cassandra 集群直接託管在 EC2 上,但最近,他們通過一個專門的 Operator 將大多數集群轉移到 Kubernetes 上。

團隊發現,一個在 EC2 上運行的 Cassandra 集群受到了損壞的數據的影響,常規數據維護工具無法解決這個問題。隨著時間的推移,情況變得越來越糟,甚至進一步影響集群的運行。

Yelp 軟體工程師 Muhammad Junaid Muzammil 解釋了選擇重建損壞的 Cassandra 集群的原因:

由於數據損壞的情況很普遍,刪除 SSTable 並進行修復並不是一種好的選擇,因為它會導致數據丟失。此外,根據對損壞數據多少的估計和最近的數據值,我們選擇不將集群恢復到上次無損壞的備份狀態。

由於數據損壞的情況很普遍,刪除 SSTable 並進行修復並不是一種好的選擇,因為它會導致數據丟失。此外,根據對損壞數據多少的估計和最近的數據值,我們選擇不將集群恢復到上次無損壞的備份狀態。

團隊選擇的設計方案的靈感來自於製造業中使用的分揀系統,這種系統會逐步消除到達生產線末端的缺陷產品。他們使用他們的 PaaStorm 流式處理器和 Cassandra Source 連接器(該連接器基於變更數據捕獲(CDC)功能,該功能在 Cassandra 3.8 版本中可用)創建了一個數據管道。

受損數據遷移管道架構視圖(來源:https://engineeringblog.yelp.com/2023/01/rebuilding-a-cassandra-cluster-using-yelps-data-pipeline.html)

得益於硬體和軟體升級方面的好處,數據基礎設施團隊在 Kubernetes 上創建了一個新的 Cassandra 集群。數據管道使用 Stream SQL 處理器來定義數據衛生標準,將數據分割為有效的數據流和受損的數據流。管道使用 Cassandra Sink Connector 將經過處理的數據流送入新的 Cassandra 集群。受損的數據流被進一步分析,以便獲取數據損壞的嚴重程度。

團隊使用統計抽樣技術來驗證整個數據遷移過程,通過比較導入到新集群的數據和舊集群中的數據來檢查一小部分數據。

在將流量切換到新集群之前,團隊通過一個設置將讀取請求同時發送到兩個集群,並比較返回的數據。他們對記錄的結果進行分析,估計舊集群中有 0.009% 的數據損壞。最後,流量被無縫地切換到新集群,損壞的集群被拆除。

讀取請求的數據驗證(來源:https://engineeringblog.yelp.com/2023/01/rebuilding-a-cassandra-cluster-using-yelps-data-pipeline.html)

原文連結

https://www.infoq.com/news/2023/07/yelp-corrupted-cassandra-rebuild/

吵翻了!到底該選 Rust 還是 Go,成2023年最大技術分歧

我的20年職業生涯:全是技術債

中國最大公有雲服務商,如何從零開始構建一支雲效團隊

工信部要求所有 App、小程序備案;某國產電商被提名 Pwnie Awards 「最差廠商獎」;阿里財報超預期 | Q資訊

文章來源: https://twgreatdaily.com/zh-mo/b2a74265e9bc1bcafaba1123ca57df5e.html