我們的 @solana 存檔方法比市場上其他任何方法快多達 20 倍。我們將整個堆疊開源了。請將此標記為書籤 🔖 在 Solana 上的存檔查詢以緩慢和不可靠而聞名:缺失的區塊、延遲的回應、丟失的數據。 這是我們如何解決這個問題的 🧵
標準的 Solana 存檔堆疊(Bigtable + 驗證者 RPC 節點)易於部署,但難以擴展。 它對 CPU 的需求高,佔用內存多,並且在處理大量批量請求時表現不佳。歷史數據是延遲影響最嚴重的地方。
我們嘗試優化 Bigtable。添加了自定義表,調整了查詢,將其推向極限。但每次更改都需要完全重啟節點,每次需要 30 分鐘到幾個小時。 所以我們放棄了它,重建了一切:數據攝取、存儲和 RPC 伺服器。
新堆疊: → ArchivalRPC:幾秒鐘內啟動,而不是幾小時。可擴展至 200K RPS。 → 自訂資料擷取器:選擇性擷取以降低成本和故障點。 → HBase 取代 Bigtable:自我託管、共置、近乎零延遲。
速度毫無意義,如果數據是錯誤的。 我們建立了三重驗證的數據攝取:每條記錄都寫入兩次,通過程式驗證,並持續掃描。 如果檢測到缺口,自我修復的管道會自動重新攝取並修復它。
各地區的結果: • getTransaction 每秒 100,000 次 RPS • getSignaturesForAddress 每秒 50,000 次 RPS • getBlock 每秒 2,000 次 RPS 比市場上任何其他解決方案快多達 20 倍。
558