← Cloudflare Waiting Room / waiting-room
O službě
Waiting Room zařazuje návštěvníky do fronty ve chvíli, kdy se váš provoz blíží dříve definované prahové hodnotě, která by jinak mohla aplikaci zahltit.
User flow
Jakmile máte vytvořili a aktivovali čekárnu pro konkrétní stránku aplikace:
-
Pokud stránka nezaznamenává velký provoz, návštěvník k ní přistupuje přímo.
-
Pokud se provoz stránky blíží uživatelem definovaná prahová hodnota, návštěvník vstoupí do virtuální čekárny, dokud na něj nepřijde řada na přístup ke stránce:
- Každý uživatel obdrží cookie ke správě dynamického odtoku požadavků z čekárny na webové stránky origin serveru v First In First Out (FIFO) pořadí.
- Zatímco je uživatel v čekárně, jeho prohlížeč se automaticky obnovuje každých 20 sekund, aby mu poskytoval aktuální informace o odhadované době čekání.
- Jakmile uživatel opustí čekárnu a dostane se k vaší aplikaci, může ji opustit a znovu se do ní vrátit, aniž by musel čekat po dobu určenou hodnotou doba trvání relace.
- Protože čekárny podporují dynamický přítok a odchod, nová místa se uvolňují rychleji a odhadovaná doba čekání je nižší a přesnější.
Architektura
Waiting Room je postavený na Workers která běží napříč globální sítí datových center Cloudflare.
Když požadavek přijde na hostitele nebo cestu chráněnou pomocí Waiting Room, je odeslán do Waiting Room Workeru v nejbližším geografickém datovém centru. Worker poté musí rozhodnout, zda uživatele odešle do fronty, nebo na web.
Toto rozhodnutí samo o sobě závisí na dvou faktorech: prahové hodnoty definované administrátorem a stav čekárny.
U prahových hodnot definovaných administrátorem jsou důležité tyto dvě hodnoty: total active users a new users per minute:
-
total active usersje cílová hranice počtu současných uživatelů, které chcete povolit na stránkách zahrnutých do vaší čekárny. -
new users per minuteurčuje cílovou prahovou hodnotu pro maximální rychlost přílivu uživatelů na váš web za minutu.
Prudký nárůst kterékoli z těchto hodnot může vést k řazení do fronty. Dalším nastavením, které ovlivňuje způsob výpočtu the total active users je session duration. Uživatel je považován za aktivního po dobu session duration minut od okamžiku, kdy byl odeslán požadavek na libovolnou stránku zahrnutou do čekárny.
Druhým faktorem je stav Waiting Room, který se udržuje na úrovni místního datacentra, ale zároveň se průběžně mění podle provozu z celého světa. Každé datacentrum pracuje s vlastním stavem Waiting Room. Tento stav představuje snímek vzorce provozu webu z celého světa dostupný v daném okamžiku. Výhodou tohoto přístupu, tedy rozhodování na úrovni Workeru, je to, že lze rozhodnutí dělat bez výrazného zpoždění přidaného k požadavku. Algoritmus Waiting Room dynamicky přiděluje každému Workeru určitý počet dostupných míst na základě stavu Waiting Room. Řazení do fronty začíná, jakmile v rámci Workeru dojdou volná místa. Absence dodatečného zpoždění umožňuje zákazníkům mít waiting room zapnutý neustále, aniž by se museli obávat dodatečné latence pro své uživatele.
Stav Waiting Room se aktualizuje globálními informacemi každých pár sekund. V Cloudflare máme nastavený kanál Durable Objects která zajišťuje, že se změny provozu šíří po celém světě. Tato architektura zaručuje, že nedochází k dodatečnému zpoždění a že rozhodnutí jsou přijímána s co nejmenším zpožděním od reálného času.
Další podrobnosti o architektuře a důvodech těchto rozhodnutí najdete v našem podrobný technický blog ↗.