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.
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.v1
který 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.
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.
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.
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: