Operace omezování ve službě Azure Service Bus
Nativní cloudová řešení poskytují představu o neomezených prostředcích, které se můžou škálovat s vašimi úlohami. I když je tento pojem v cloudu pravdivější než u místních systémů, stále existují omezení v cloudu. Tato omezení můžou způsobit omezování požadavků klientských aplikací v úrovních Standard i Premium, jak je popsáno v tomto článku.
Omezování úrovně Standard
Úroveň Standard služby Service Bus funguje jako nastavení s více tenanty s cenovým modelem průběžných plateb. Tady několik oborů názvů ve stejném clusteru sdílí přidělené prostředky. Úroveň Standard je doporučenou volbou pro vývojová prostředí, prostředí pro kontrolu kvality a produkční systémy s nízkou propustností.
V minulosti služba Service Bus měla hrubé limity omezování, které jsou přísně závislé na využití prostředků. Existuje však příležitost upřesnit logiku omezování a zajistit předvídatelné chování omezování pro všechny obory názvů, které tyto prostředky sdílejí.
Při pokusu o spravedlivé využití a distribuci prostředků napříč všemi standardními obory názvů služby Service Bus, které používají stejné prostředky, používá standard Service Bus aktuálně logiku omezování na základě kreditů.
Poznámka:
Je důležité si uvědomit, že omezování není pro Službu Azure Service Bus ani žádná nativní cloudová služba novinkou .
Omezování založené na kreditech jednoduše zpřesňuje způsob, jakým různé obory názvů sdílejí prostředky v prostředí úrovně Standard s více tenanty a umožňují tak spravedlivé využití všemi obory názvů sdílejících prostředky.
Co je omezování založené na kreditech?
Omezování založené na kreditech omezuje počet operací, které je možné provést v daném oboru názvů v určitém časovém období. Tady je pracovní postup pro omezování založené na kreditech.
- Na začátku každého časového období poskytuje Service Bus určité kredity pro každý obor názvů.
- Všechny operace prováděné odesílatelem nebo přijímajícími klientskými aplikacemi se započítávají do těchto kreditů (a odečítají se od dostupných kreditů).
- Pokud jsou kredity vyčerpány, další operace se omezí až do začátku dalšího časového období.
- Kredity se doplní na začátku dalšího časového období.
Jaké jsou limity kreditů?
Limity kreditů jsou aktuálně nastavené na 1 000 kreditů každou sekundu (na obor názvů). Ne všechny operace se vytvářejí stejně. Tady jsou náklady na kredity jednotlivých operací.
Operace | Náklady na kredit |
---|---|
Operace s daty (Send , SendAsync , Receive , ReceiveAsync ) Peek |
1 kredit na zprávu |
Operace správy (Create , Read , , Update ve Delete frontách, témata, odběry, filtry) |
10 kreditů |
Poznámka:
Při odesílání do tématu se každá zpráva vyhodnocuje proti filtrům před zpřístupněním odběru. Každé vyhodnocení filtru se také počítá do limitu kreditu (to znamená 1 kredit na vyhodnocení filtru).
Návody vědět, že jsem omezován?
Při omezování požadavků klientské aplikace klientská aplikace obdrží klientská aplikace následující odpověď serveru.
The request was terminated because the entity is being throttled. Error code: 50009. Please wait 2 seconds and try again.
Jak se můžu vyhnout omezování?
U sdílených prostředků je důležité vynutit určité spravedlivé využití napříč různými obory názvů služby Service Bus, které tyto prostředky sdílejí. Omezování zajišťuje, že jakákoli špička v jedné úloze nezpůsobí omezování jiných úloh na stejných prostředcích. Jak je uvedeno dále v článku, není možné omezovat žádné riziko, protože sady SDK (Client Software Development Kit) a další nabídky Azure PaaS mají integrované výchozí zásady opakování. Všechny omezené žádosti se opakují s exponenciálním zpožďováním a nakonec projdou, když se kredity doplní.
Některé aplikace můžou být citlivé na omezování. V takovém případě doporučujeme migrovat aktuální obor názvů Standard služby Service Bus na premium. Při migraci můžete přidělovat vyhrazené prostředky k oboru názvů služby Service Bus a odpovídajícím způsobem vertikálně navýšit kapacitu prostředků, pokud ve vaší úloze dochází ke špičkám, a snížit tak pravděpodobnost omezování. Kromě toho, když se vaše úloha sníží na normální úrovně, můžete vertikálně snížit kapacitu prostředků přidělených vašemu oboru názvů.
Omezování na úrovni Premium
Úroveň Premium služby Service Bus přiděluje vyhrazené prostředky z hlediska jednotek zasílání zpráv každému oboru názvů nastavenému zákazníkem. Tyto vyhrazené prostředky poskytují předvídatelnou propustnost a latenci a doporučují se pro systémy vysoké propustnosti nebo citlivé produkční úrovně. Kromě toho úroveň Premium také umožňuje zákazníkům vertikálně navýšit kapacitu propustnosti, když v úloze dochází ke špičkám. Další informace najdete v tématu Automatické aktualizace jednotek zasílání zpráv oboru názvů služby Azure Service Bus.
Jak omezování funguje ve službě Service Bus Premium?
S výhradním přidělením prostředků pro úroveň Premium je omezování čistě řízeno omezeními prostředků přidělených k oboru názvů. Pokud je počet požadavků větší než aktuální prostředky, které můžou obsluhovat, jsou požadavky omezené.
Návody vědět, že jsem omezován?
Existují různé způsoby identifikace omezování na úrovni Premium služby Service Bus.
- Omezené požadavky se zobrazují v metrikách požadavků služby Azure Monitor, aby bylo možné zjistit, kolik požadavků bylo omezeno.
- Vysoké využití procesoru znamená, že aktuální přidělení prostředků je vysoké a požadavky se můžou omezit, pokud se aktuální úloha nezmenší.
- Vysoké využití paměti znamená, že aktuální přidělení prostředků je vysoké a požadavky se můžou omezit, pokud se aktuální úloha nezmenší.
Jak se můžu vyhnout omezování?
Vzhledem k tomu, že obor názvů Service Bus Premium už má vyhrazené prostředky, můžete snížit možnost omezování vertikálním navýšením počtu jednotek zasílání zpráv přidělených vašemu oboru názvů v případě (nebo předvídání) špičky v úloze. Další informace najdete v tématu Automatické aktualizace jednotek zasílání zpráv oboru názvů služby Azure Service Bus.
Nejčastější dotazy
Jaký vliv má omezování na aplikaci?
Když dojde k omezení požadavku, znamená to, že služba je zaneprázdněná, protože má více požadavků, než povoluje prostředky. Pokud se stejná operace po chvíli zkusí znovu, jakmile služba projde aktuální úlohou, je možné požadavek respektovat.
Vzhledem k tomu, že omezování představuje očekávané chování jakékoli nativní cloudové služby, logika opakování je integrovaná do samotné sady SDK služby Service Bus. Výchozí hodnota je nastavená na automatické opakování s exponenciálním back-off, aby se zajistilo, že pokaždé nebudeme mít stejný požadavek omezený. Výchozí logika opakování platí pro každou operaci.
Poznámka:
Kód pro zpracování zpráv, který volá jiné služby třetích stran, může být také omezen těmito dalšími službami. Další informace o tom, jak tyto scénáře zpracovat, najdete v dokumentaci k modelu omezování.
Vede omezování ke ztrátě dat?
Azure Service Bus je optimalizovaný pro trvalost. Před potvrzením úspěchu požadavku zajišťujeme, aby všechna data odeslaná do služby Service Bus byla potvrzena do úložiště.
Jakmile služba Service Bus úspěšně potvrdí požadavek, znamená to, že Service Bus žádost úspěšně zpracovala. Pokud Service Bus vrátí chybu, znamená to, že Služba Service Bus nemohla požadavek zpracovat a klientská aplikace musí požadavek zopakovat.
Pokud je však požadavek omezený, služba znamená, že nemůže přijmout a zpracovat požadavek právě teď kvůli omezením prostředků. Neznamená to žádný druh ztráty dat, protože Service Bus se na požadavek prostě nezhlédl. V takovém případě se spoléháte na výchozí zásadu opakování sady Service Bus SDK, která zajistí, že se požadavek nakonec zpracuje.
Související obsah
Další informace a příklady použití zasílání zpráv služby Service Bus najdete v následujících pokročilých tématech: