INTEGRITY Dokumentace

S Durable Objects

Chcete-li poskytnout globální jedinečnost, pouze jedna verze každého Durable Object může běžet najednou. To znamená, že postupné nasazení funguje u Durable Objects mírně odlišně.

Když vytvoříte nové postupné nasazení Workeru s Durable Objects, každému Durable Object se přiřadí verze Workeru na základě procentuálních hodnot, které jste nakonfigurovali ve svém nasazení. Tato verze se nezmění, dokud nevytvoříte nový deployment.

Gradual Deployments Durable Objects

Příklad

Tento příklad předpokládá, že jste již dříve vytvořili tři instance Durable Object s názvy "foo", "bar" a "baz".

Váš Worker momentálně běží ve verzi, kterou budeme nazývat verze "A", a vy chcete postupně nasadit novou verzi "B" svého Workeru.

Takto se mohou měnit verze vašich Durable Objects v průběhu postupného nasazení:

Konfigurace nasazení "foo" "bar" "baz"
Verze A: 100 %
A A A
Verze B: 20 %
Verze A: 80%
B A A
Verze B: 50 %
Verze A: 50%
B B A
Verze B: 100 %
B B B

Jde pouze o příklad, verze přiřazené vašim Durable Objects se proto mohou lišit. Následující je však zaručeno:

Změny životního cyklu tříd Durable Object

Verze balíčků Workeru, které mění životní cyklus třídy Durable Object, nelze nahrát. Platí to jak pro deklarativní exports pole a starší migrations pole. Je to proto, že změny životního cyklu Durable Object jsou atomické operace. Jakmile je změna životního cyklu nasazena, není možné provést návrat k žádné verzi předcházející té, která tuto změnu obsahovala.

Změny životního cyklu Durable Object lze nasadit pomocí následujícího příkazu:

npx wrangler deploy

Aby se omezil dopad těchto nasazení, měly by být změny životního cyklu Durable Object nasazovány nezávisle na ostatních změnách kódu.

Chcete-li pochopit, proč jsou změny v životním cyklu Durable Object atomickými operacemi, představte si hypotetický příklad postupného nasazování smazání třídy. Pokud by bylo smazání použito na 50 % instancí Durable Object, pak by Workers požadující tyto instance Durable Object selhaly, protože by již byly smazány.

Aby při tom nedocházelo k chybám, musela by už být nasazena verze Workeru, která nezávisí na žádném z Durable Objects určených ke smazání. Teprve poté můžete nasadit smazání třídy, aniž by to ovlivnilo provoz, a není důvod postupovat postupně.