Naše @solana archivační metody jsou až 20x rychlejší než cokoli jiného na trhu. Celý stack jsme otevřeli jako open source. Uložte si to 🔖 do záložek Archivní dotazy na Solaně jsou notoricky pomalé a nespolehlivé: chybějící bloky, zpožděné odpovědi, ztracená data. Takhle jsme to 🧵 opravili
Standardní archivní stack Solany (Bigtable + validator RPC uzly) je snadné nasadit, ale obtížně škálovatelný. Je náročný na CPU, vyžaduje paměť a má potíže s velkými dávkovými požadavky. Největší latence je historická data.
Zkoušeli jsme optimalizovat Bigtable. Přidal jsem vlastní tabulky, ladil dotazy, posunul to na maximum. Ale každá změna vyžadovala kompletní restart uzlu. 30 minut až několik hodin pokaždé. Tak jsme to zahodili a vše znovu postavili: ingest, úložiště a RPC server.
Nový stack: → ArchivalRPC: spustí se během pár sekund, ne hodin. Škáluje se až na 200K RPS. → Vlastní ingestor: selektivní odběr ke snížení nákladů a míst selhání. → HBase přes Bigtable: self-hostované, na společné lokaci, téměř nulová latence.
Rychlost nic neznamená, pokud jsou data špatná. Vytvořili jsme trojitě ověřený ingester: každý záznam je zapsán dvakrát, programově ověřen a průběžně skenován. Pokud je mezera detekována, samoopravné potrubí ji automaticky znovu načtou a opraví.
Výsledek podle regionů: • 100 000 RPS pro getTransaction • 50 000 RPS za getSignaturesForAddress • 2 000 RPS pro getBlock Až 20x rychlejší než jakékoli jiné řešení na trhu.
550