Průvodce výkonem pro službu Azure Web PubSub

Jednou z klíčových výhod používání služby Azure Web PubSub Je snadné škálování. Ve velkém scénáři je výkon důležitým faktorem.

V této příručce představujeme faktory, které ovlivňují výkon služby Web PubSub. Typický výkon popisujeme v různých scénářích použití.

Rychlé vyhodnocení s využitím metrik

Než začneme procházet faktory, které mají vliv na výkon, nejprve si představíme snadný způsob, jak monitorovat tlak vaší služby. Na portálu je metrika s názvem Zatížení serveru.

Snímek obrazovky s metrikou Načtení serveru podsítě Azure Web PubSub na portálu Metrika ukazuje, že zatížení serveru je přibližně 8 procent využití.

Ukazuje výpočetní tlak vaší služby Azure Web PubSub. Můžete otestovat vlastní scénář a zkontrolovat tuto metriku a rozhodnout se, jestli se má vertikálně navýšit kapacitu. Latence uvnitř služby Azure Web PubSub by zůstala nízká, pokud je zatížení serveru nižší než 70 %.

Poznámka:

Pokud používáte jednotku 50 nebo větší a váš scénář se odesílá hlavně do malých skupin (velikost <skupiny 20), je potřeba zkontrolovat odeslání do malé skupiny , abyste měli odkaz. V těchto scénářích jsou velké náklady na směrování, které nejsou zahrnuty do zatížení serveru.

Níže jsou uvedeny podrobné koncepty vyhodnocení výkonu.

Definice termínů

Příchozí: Příchozí zpráva do služby Azure Web PubSub.

Odchozí: Odchozí zpráva ze služby Azure Web PubSub.

Šířka pásma: Celková velikost všech zpráv za 1 sekundu.

Přehled

Tato příručka odpovídá na následující otázky:

  • Jaký je typický výkon služby Azure Web PubSub pro každou velikost jednotky?

  • Splňuje služba Azure Web PubSub požadavky na propustnost zpráv (například odesílání 100 000 zpráv za sekundu)?

  • Jak můžu pro svůj konkrétní scénář vybrat správnou velikost jednotky?

Abyste mohli na tyto otázky odpovědět, tento průvodce nejprve poskytuje základní vysvětlení faktorů, které ovlivňují výkon. Pak znázorňuje maximální příchozí a odchozí zprávy pro typické případy použití: Odesílání do skupin prostřednictvím subprotocol Web PubSub, upstream a rest api .

Tato příručka nemůže pokrýt všechny scénáře (a různé případy použití, velikosti zpráv, vzory odesílání zpráv atd.). Poskytuje ale některé základní informace pro pochopení omezení výkonu.

Přehled výkonu

Tato část popisuje metodologie hodnocení výkonu a pak uvádí všechny faktory, které ovlivňují výkon. Nakonec poskytuje metody, které vám pomůžou vyhodnotit požadavky na výkon.

Metodologie

Propustnost a latence jsou dva typické aspekty kontroly výkonu. Maximální propustnost (příchozí a odchozí šířka pásma) je definována jako maximální dosažená propustnost, když 99 procent zpráv má latenci menší než 1 sekundu. Není to těžké omezení.

Faktory výkonu

Teoreticky je kapacita služby Azure Web PubSub omezena výpočetními prostředky: procesor, paměť a síť. Například více připojení ke službě Azure Web PubSub Service způsobí, že služba bude používat více paměti. U většího provozu zpráv (například každá zpráva je větší než 2 048 bajtů), služba Azure Web PubSub potřebuje ke zpracování provozu více cyklů procesoru.

Náklady na směrování zpráv také omezují výkon. Služba Azure Web PubSub hraje roli jako zprostředkovatel zpráv, který směruje zprávu mezi sadou klientů. Jiný scénář nebo rozhraní API vyžaduje jinou zásadu směrování.

V případě odezvy klient odešle zprávu do upstreamu a upstream vrátí zprávu zpět klientovi. Tento model má nejnižší náklady na směrování. V případě vysílání, odesílání do skupiny a odesílání do připojení ale služba Azure Web PubSub potřebuje vyhledat cílová připojení prostřednictvím interní distribuované datové struktury. Toto dodatečné zpracování využívá více procesoru, paměti a šířky pásma sítě. V důsledku toho je výkon pomalejší.

V souhrnu ovlivňují příchozí a odchozí kapacitu následující faktory:

  • Velikost jednotky (procesor/paměť)

  • Počet připojení

  • Velikost zprávy

  • Rychlost odesílání zpráv

  • Scénář použití (náklady na směrování)

Vyhledání správné velikosti jednotky

Jak můžete vyhodnotit příchozí nebo odchozí kapacitu nebo zjistit, která velikost jednotky je vhodná pro konkrétní případ použití?

Každá velikost jednotky má vlastní maximální šířku pásma pro příchozí spojení a odchozí šířku pásma. Bezproblémové uživatelské prostředí není zaručeno po překročení prahové hodnoty příchozího nebo odchozího provozu.

  inboundBandwidth = inboundConnections * messageSize / sendInterval
  outboundBandwidth = outboundConnections * messageSize / sendInterval
  • příchozí Připojení iony: počet připojení odesílaných zpráv.
  • odchozí Připojení iony: Počet připojení, která obdrží zprávu.
  • messageSize: Velikost jedné zprávy (průměrná hodnota). Malá zpráva, která je menší než 1 024 bajtů, má dopad na výkon podobný 1 024 bajtům.
  • sendInterval: Interval pro odesílání zpráv. Například 1 sekunda znamená odeslání jedné zprávy každou sekundu. Menší interval znamená odesílání více zpráv v časovém období. Například 0,5 sekundy znamená odesílání dvou zpráv každou sekundu.
  • Připojení ions: Potvrzená maximální prahová hodnota pro službu Azure Web PubSub pro každou velikost jednotky. Připojení iony, které překročí prahovou hodnotu, se omezí.

Předpokládejme, že upstream je dostatečně výkonný a není kritickým bodem výkonu. Pak zkontrolujte maximální příchozí a odchozí šířku pásma pro každou velikost jednotky.

Případová studie

Následující části procházejí třemi typickými případy použití: odesílání do skupin prostřednictvím subprotocolu Web PubSub, aktivace CloudEvent a volání rozhraní REST API. Pro každý scénář uvádí oddíl aktuální příchozí a odchozí kapacitu pro službu Azure Web PubSub. Vysvětluje také hlavní faktory, které ovlivňují výkon.

Ve všech případech použití je výchozí velikost zprávy 2 048 bajtů a interval odeslání zprávy je 1 sekunda.

Odeslání do skupin prostřednictvím subprotocolu Web PubSub

Služba podporuje konkrétní podprotokol, json.webpubsub.azure.v1který umožňuje klientům provádět publikování a odběr přímo místo odezvy na nadřazený server. Tento scénář je efektivní, protože není zapojen žádný server a veškerý provoz prochází přes připojení WebSocket klientské služby.

Diagram znázorňující pracovní postup odeslání do skupiny

Počet členů skupiny a skupin jsou dva faktory, které ovlivňují výkon. Pro zjednodušení analýzy definujeme dva druhy skupin:

  • Velká skupina: Číslo skupiny je vždy 10. Počet členů skupiny se rovná (maximální počet připojení) / 10. Pokud například pro jednotku 1 existuje 1 000 počtu připojení, má každá skupina 1000 / 10 = 100 členů.
  • Malá skupina: Každá skupina má 10 připojení. Číslo skupiny se rovná (maximální počet připojení) / 10. Pokud například pro jednotku 1 existuje 1 000 počtů připojení, máme 1000 / 10 = 100 skupin.

Funkce Odeslat skupině přináší náklady na směrování do služby Azure Web PubSub, protože musí najít cílová připojení prostřednictvím distribuované datové struktury. S nárůstem počtu odesílajících připojení se náklady zvyšují.

Velká skupina

Pro odesílání do velké skupiny se odchozí šířka pásma stane kritickým bodem před dosažením limitu nákladů směrování. Následující tabulka uvádí maximální šířku pásma odchozích přenosů.

Poslat velké skupině Lekce 1 Lekce 2 Jednotka 10 Jednotka 50 Jednotka 100 Lekce 200 Jednotka 500 Jednotka 1000
Propojení 1000 2 000 10,000 50 000 100 000 200 000 500,000 1 000 000
Počet členů skupiny 100 200 1 000 5 000 10,000 5 000 10,000 20,000
Počet skupin 10 10 10 10 10 10 10 10
Příchozí zprávy za sekundu 30 30 30 30 30 30 30 30
Příchozí šířka pásma 60 KB/s 60 KB/s 60 KB/s 60 KB/s 60 KB/s 60 KB/s 60 KB/s 60 KB/s
Odchozí zprávy za sekundu 3 000 6 000 30,000 150,000 300,000 600,000 1,500,000 3,000,000
Odchozí šířka pásma 6 MB/s 12 MB/s 60 MB/s 300 MB/s 600 MB/s 1 200 MB/s 3 000 MB/s 6 000 MB/s
Malá skupina

Náklady na směrování jsou významné pro odesílání zpráv mnoha malým skupinám. V současné době implementace služby Azure Web PubSub dosáhne limitu nákladů směrování na jednotku 50. Přidání dalšího procesoru a paměti nepomůže, takže jednotka 100 nemůže dále vylepšit návrhem. Pokud potřebujete větší šířku pásma pro příchozí spojení, je potřeba vertikálně navýšit kapacitu tak, aby používala Premium_P2(jednotka >100).

Odeslat malé skupině Lekce 1 Lekce 2 Jednotka 10 Jednotka 50 Jednotka 100 Lekce 200 Jednotka 500 Jednotka 1000
Propojení 1000 2 000 10,000 50 000 100 000 200 000 500,000 1 000 000
Počet členů skupiny 10 10 10 10 10 10 10 10
Počet skupin 100 200 1 000 5 000 10,000 20,000 50 000 100 000
Příchozí zprávy za sekundu 200 400 2 000 10,000 10,000 20,000 50 000 100 000
Příchozí šířka pásma 400 KB/s 800 KB/s 4 Mb/s 20 MB/s 20 MB/s 40 MB/s 100 MB/s 200 MB/s
Odchozí zprávy za sekundu 2 000 4 000 20,000 100 000 100 000 200 000 500,000 1 000 000
Odchozí šířka pásma 4 MB/s 8 MB/s 40 MB/s 200 MBps 200 MB/s 400 MB/s 1 000 MB/s 2 000 MB/s

Poznámka:

Počet skupin, počet členů skupiny uvedený v tabulce, nejsou pevné limity. Tyto hodnoty parametrů jsou vybrány k vytvoření stabilního srovnávacího scénáře.

Aktivace cloudové události

Služba doručuje události klienta do upstreamového webhooku pomocí protokolu HTTP CloudEvents.

The Upstream Webhook

Pro každou událost formuluje požadavek HTTP POST na zaregistrovaný upstream a očekává odpověď HTTP.

Poznámka:

Web PubSub také podporuje HTTP 2.0 pro upstreamové události doručování. Následující výsledek se testuje pomocí http 1.1. Pokud váš aplikační server podporuje HTTP 2.0, bude výkon lepší.

Echo

V tomto případě aplikační server zapíše původní zprávu zpět v odpovědi HTTP. Chování ozvěny určuje, že maximální příchozí šířka pásma se rovná maximální odchozí šířce pásma. Podrobnosti najdete v následující tabulce.

Echo Lekce 1 Lekce 2 Jednotka 10 Jednotka 50 Jednotka 100 Lekce 200 Jednotka 500 Jednotka 1000
Propojení 1000 2 000 10,000 50 000 100 000 200 000 500,000 1 000 000
Příchozí a odchozí zprávy za sekundu 500 1 000 5 000 25,000 50 000 100 000 250,000 500,000
Příchozí/odchozí šířka pásma 1 MB/s 2 MB/s 10 MB/s 50 MB/s 100 MB/s 200 MB/s 500 MB/s 1 000 MB/s

REST API

Azure Web PubSub poskytuje výkonná rozhraní API pro správu klientů a doručování zpráv v reálném čase.

Diagram znázorňující celkový pracovní postup služby Web PubSub pomocí rozhraní REST API

Odeslání uživateli prostřednictvím rozhraní REST API

Srovnávací test před zahájením připojování ke službě Azure Web PubSub přiřadí všem klientům uživatelská jména.

Odeslání uživateli prostřednictvím rozhraní REST API Lekce 1 Lekce 2 Jednotka 10 Jednotka 50 Jednotka 100 Lekce 200 Jednotka 500 Jednotka 1000
Propojení 1000 2 000 10,000 50 000 100 000 200 000 500,000 1 000 000
Příchozí a odchozí zprávy za sekundu 180 360 1 800 9 000 18 000 36,000 90,000 180,000
Příchozí/odchozí šířka pásma 360 KB/s 720 KB/s 3,6 MB/s 18 MB/s 36 MB/s 72 MB/s 180 MB/s 360 MB/s

Vysílání prostřednictvím rozhraní REST API

Šířka pásma je stejná jako šířka pásma pro odesílání do velké skupiny.

Vysílání prostřednictvím rozhraní REST API Lekce 1 Lekce 2 Jednotka 10 Jednotka 50 Jednotka 100 Lekce 200 Jednotka 500 Jednotka 1000
Propojení 1000 2 000 10,000 50 000 100 000 200 000 500,000 1 000 000
Příchozí zprávy za sekundu 3 3 3 3 3 3 3 3
Odchozí zprávy za sekundu 3 000 6 000 30,000 150,000 300,000 600,000 1,500,000 3,000,000
Příchozí šířka pásma 6 KB/s 6 KB/s 6 KB/s 6 KB/s 6 KB/s 6 KB/s 6 KB/s 6 KB/s
Odchozí šířka pásma 6 MB/s 12 MB/s 60 MB/s 300 MB/s 600 MB/s 1 200 MB/s 3 000 MB 6 000 MB

Další kroky

Pomocí těchto prostředků můžete začít vytvářet vlastní aplikaci: