Odolnost a distribuovaná práce
Vytvořeno a udržováno pomocí AI agentů. Za posouzení a zveřejnění odpovídají lidé.
Návrh · vyžaduje lidské posouzení · r2
Určete, co musí přežít
Oddělte trvanlivost uložených dat, dostupnost služby a pokračování přerušené práce. Replika není záloha a úspěšné doručení zprávy nedokazuje právě jeden obchodní účinek. Pro každou schopnost dohodněte přijatelný časový rozsah ztráty dat (RPO), dobu obnovy (RTO) a pravidla porovnání vnějších účinků. Následující kontrakt vykonávání a testování je původní syntéza této knihovny; chování poskytovatele je nutné ověřit pro nasazenou verzi.
Každému účinku přiřaďte stavový model
Odolná operace potřebuje stabilní ID, autentizovaného vlastníka, ověřená vstupní data, aktuální stav a pozorovatelný výsledek. Klíče idempotence omezte na tenanta a obchodní akci. Určete chování při opakovaném použití stejného klíče s odlišnými daty, během stále běžícího požadavku a po vypršení záznamů. Informace pro deduplikaci uchovávejte nejméně po celou podporovanou dobu opakování a přehrávání; u starší práce případně vyžadujte samostatný autorizovaný postup porovnání a opravy stavu.
Výsledek místní obchodní změny a ochranu unikátnosti uložte atomicky. Pokud má publikovaná událost odrážet potvrzenou změnu, může transakční outbox uložit obchodní změnu i událost společně. Předávací proces může po ztrátě potvrzení publikovat dvakrát; deduplikace proto musí být součástí vlastního trvalého zápisu spotřebitele. Nesouvisející volání externích služeb se tím nestávají transakčními.
Před opakováním roztřiďte selhání. Neplatné vstupy a zamítnutá autorizace vyžadují konečnou odpověď; přechodná selhání mohou připouštět omezené opakování. Za celkový časový limit a rozpočet opakování musí odpovídat jedna vrstva a musí počítat i s opakováním uvnitř SDK. Prodlevy a jitter snižují synchronizovaný tlak opakovaných požadavků; neospravedlňují opakování nebezpečného účinku. Zrušení po odeslání externího požadavku může zanechat neznámý výsledek, který je nutné porovnat se skutečným stavem.
Příklad posloupnosti selhání
Uvažujte objednávku s poskytovatelem plateb a navazující událostí pro vyřízení:
| Přerušení | Požadované pozorovatelné chování |
|---|---|
| Před potvrzením transakce objednávky a outboxu | Ani jeden záznam není viditelný; opakování může bezpečně začít |
| Po potvrzení, před publikováním události | Předávací proces později najde čekající událost; žádná objednávka nezmizí |
| Po publikování, před potvrzením předávacímu procesu | Duplicitní doručení vyvolá jedinou zamýšlenou změnu u spotřebitele |
| Po úspěšné platbě, před přijetím odpovědi | Znovu použijte identitu operace podporovanou poskytovatelem nebo zjistěte a porovnejte jeho stav; nevytvářejte slepě další platbu |
| Během aktualizace workeru | Rozpracovaná práce pokračuje podle výslovně kompatibilního kontraktu stavu a verze nebo přejde k porovnání a nápravě |
Jde o požadavky přijetí, nikoli důkaz, že jimi prošel nějaký nasazený systém. Ve stagingu řízeně vyvolejte každé přerušení s kontrolovaným chováním poskytovatele, požadavek zopakujte a poté prohlédněte trvalý stav i záznamy poskytovatele. Ověřte úspěšnou obnovu i nevyřešené stavy vyžadující člověka. Při definici nezávislého očekávaného výsledku a balíčku důkazů se řiďte strategií testování.
Provozujte přehrávání a obnovu
Chybné zprávy umisťujte do karantény s vlastníkem a důvodem. Omezte objem opakování a přehrávání; oprávnění k přehrání oddělte od běžného čtení. Operátor musí vědět, které schéma, rozsah pořadí a deduplikační okno platí. Kompenzace je nová obchodní akce; vrácení plateb, oznámení a fyzické vyřízení nemusí být vratné.
Obnovujte do izolovaného prostředí, porovnejte obchodní součty a externí účinky a teprve poté záměrně obnovte práci. Podle plánu výkonnostních testů ověřte obnovu při nahromaděné frontě a pomalých závislostech. Durable workflow engine má smysl, když snižuje prokázanou složitost orchestrace; jednoduššímu procesu s přijatelnou ruční obnovou může stačit transakční tabulka úloh. Ani jedno neodstraňuje potřebu záloh, odpovědnosti nebo testů kompatibility.
Související rozhodnutí
Data a migrace · Zdraví a obnova · Volba architektury · Strategie testování
Primární zdroje
postgres-isolation · postgres-backup · durable-workflows · azure-retry · azure-cqrs · azure-outbox · azure-idempotent-consumer