← Cloudflare Workers / workers / versions-and-deployments / gradual-deployments
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.
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:
- Pro dané nasazení budou požadavky na každý Durable Object vždy používat stejnou verzi Workeru.
- Pokud jednotlivé verze zadáte ve stejném pořadí jako v předchozím nasazení a zvýšíte procento některé verze, Durable Objects, kterým byla tato verze přiřazena už dříve, nezískají jinou verzi. V tomto příkladu by se Durable Object „foo“ nikdy nevrátil z verze „B“ na verzi „A“.
- Durable Object bude pouze reset když mu je přiřazena jiná verze, takže v tomto příkladu bude každý Durable Object resetován pouze jednou.
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 deployAby 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ě.