Optimalizace pro zajištění vysoké souběžnosti pomocí Azure Data Exploreru
Vysoce souběžné aplikace jsou potřeba ve scénářích s velkou uživatelskou základnou, kde aplikace současně zpracovává mnoho požadavků s nízkou latencí a vysokou propustností.
Případy použití zahrnují rozsáhlé monitorování a upozorňování řídicích panelů. Mezi příklady patří produkty a služby Microsoftu, jako jsou Azure Monitor, Azure Time Series Insights a Playfab. Všechny tyto služby používají Azure Data Explorer k poskytování úloh s vysokou souběžností. Azure Data Explorer je rychlá plně spravovaná služba pro analýzu velkých objemů dat v reálném čase pro analýzy velkých objemů dat streamovaných z aplikací, webů, zařízení IoT a dalších.
Poznámka:
Skutečný počet dotazů, které se dají spustit souběžně v clusteru, závisí na faktorech, jako jsou skladová položka clusteru, objemy dat, složitost dotazů a vzory použití.
Pokud chcete nastavit aplikace s vysokou souběžností, navrhujte back-endovou architekturu následujícím způsobem:
- Optimalizace dat
- Nastavení vzoru architektury vedoucího procesu
- Optimalizace dotazů
- Nastavení zásad clusteru
- Monitorování clusterů Azure Data Exploreru
Tento článek představuje doporučení pro každý z předchozích témat, které můžete implementovat, abyste dosáhli vysoké souběžnosti optimálním nákladově efektivním způsobem. Tyto funkce lze použít samostatně nebo v kombinaci.
Optimalizace dat
V případě vysoké souběžnosti by dotazy měly spotřebovávat nejméně možné množství prostředků procesoru. Můžete použít libovolnou nebo všechny následující metody:
Osvědčené postupy návrhu schématu tabulek
Pomocí následujících návrhů návrhu schématu tabulky minimalizujte použité prostředky procesoru:
- Sloupce ID by se měly definovat jako datové typy řetězců bez ohledu na to, jestli jsou hodnoty číselné. Indexování pro řetězcové sloupce je propracovanější než u číselných sloupců a poskytuje lepší výkon filtrování.
- Porovná datový typ sloupce optimálně se skutečnými daty uloženými v těchto sloupcích. Neukládejte například hodnoty datetime ve sloupci řetězce.
- Vyhněte se velké řídké tabulce s mnoha sloupci a používejte dynamické sloupce k ukládání řídkých vlastností.
- Často používané vlastnosti můžete ukládat do vlastního sloupce s ne dynamickou datovým typem.
- Denormalizovat data, abyste se vyhnuli spojením, která vyžadují relativně velké prostředky procesoru.
Dělení dat
Data se ukládají ve formě rozsahů (horizontálních oddílů dat) a ve výchozím nastavení se dělí podle času příjmu dat. Zásady dělení můžete použít k opětovnému rozdělení rozsahů na základě jednoho řetězce sloupce nebo jednoho sloupce data a času v procesu na pozadí. Dělení může výrazně zlepšit výkon, když většina dotazů používá klíče oddílů k filtrování, agregaci nebo obojímu.
Poznámka:
Samotný proces dělení používá prostředky procesoru. Snížení využití procesoru během doby dotazu by však mělo převažovat nad procesorem používaným k dělení.
Předběžná agregace dat s materializovanými zobrazeními
Předem agregujte data, aby se během dotazování výrazně snížily prostředky procesoru. Mezi příklady scénářů patří sumarizace datových bodů po kratším počtu časových intervalů, udržování nejnovějšího záznamu daného záznamu nebo odstranění duplicitních dat. Pomocí materializovaných zobrazení můžete snadno konfigurovat agregované zobrazení nad zdrojovými tabulkami. Tato funkce zjednodušuje vytváření a údržbu těchto agregovaných zobrazení.
Poznámka:
Proces agregace na pozadí používá prostředky procesoru. Snížení využití procesoru během doby dotazu by však mělo převažovat nad spotřebou procesoru pro agregaci.
Konfigurace zásad ukládání do mezipaměti
Nakonfigurujte zásady ukládání do mezipaměti tak, aby se dotazy spouštěly na datech uložených v horkém úložišti, označované také jako mezipaměť disku. Na studeném úložišti nebo v externích tabulkách běží pouze omezené a pečlivě navržené scénáře.
Nastavení vzoru architektury vedoucího procesu
Následující databáze je funkce, která následuje za databází nebo sadou tabulek v databázi z jiného clusteru umístěného ve stejné oblasti. Tato funkce je přístupná prostřednictvím služby Azure Data Share, rozhraní API Azure Resource Manageru a sady příkazů clusteru.
Pomocí vzoru sledování výsledků můžete nastavit výpočetní prostředky pro různé úlohy. Můžete například nastavit cluster pro příjem dat, cluster pro dotazování nebo obsluhu řídicích panelů nebo aplikací a cluster, který obsluhuje úlohy datových věd. Každá úloha v tomto případě bude obsahovat vyhrazené výpočetní prostředky, které se dají škálovat nezávisle, a různé konfigurace ukládání do mezipaměti a zabezpečení. Všechny clustery používají stejná data a vedoucí zapisují data a sledující je používají v režimu jen pro čtení.
Poznámka:
Databáze sledujících mají prodlevu od vedoucího serveru, obvykle několik sekund. Pokud vaše řešení vyžaduje nejnovější data bez latence, může být toto řešení užitečné. Použijte zobrazení v clusteru sledujících, který sjednocuje data od vedoucího a následníka a dotazuje se na nejnovější data od vedoucího a zbytku dat od následníka.
Pokud chcete zlepšit výkon dotazů v následujícím clusteru, můžete povolit konfiguraci rozsahů předběžného načtení. Tuto konfiguraci používejte pečlivě, protože by mohla mít vliv na aktuálnost dat v následující databázi.
Optimalizace dotazů
K optimalizaci dotazů pro zajištění vysoké souběžnosti použijte následující metody.
Dodržujte osvědčené postupy pro dotazy, aby vaše dotazy byly co nejefektivnější.
Použití mezipaměti výsledků dotazu
Pokud najednou načte stejný řídicí panel více uživatelů, může se řídicí panel načíst do druhé a následující uživatele z mezipaměti. Toto nastavení poskytuje vysoký výkon s téměř žádným využitím procesoru. Použijte funkci mezipaměti výsledků dotazu a pomocí příkazu set
odešlete konfiguraci mezipaměti výsledků dotazu s dotazem.
Grafana obsahuje nastavení konfigurace pro mezipaměť výsledků dotazu na úrovni zdroje dat, takže všechny řídicí panely toto nastavení používají ve výchozím nastavení a nepotřebují upravovat dotaz.
Konfigurace konzistence dotazů
Výchozí režim konzistence dotazů je silný. V tomto režimu spravuje uzel správce metadata a příjem dat pro cluster a také plánování dotazů a delegování provádění na jiné uzly.
V aplikacích s vysokou souběžností může správa dotazů způsobit vysoké využití procesoru uzlu správce , zatímco jiné uzly jsou méně zaneprázdněné. To může způsobit kritický bod, kdy se počet souběžných dotazů nemůže zvětšit. To ale nemusí být zřejmé v sestavě procesoru clusteru (metrika > procesoru na webu Azure Portal > {your_cluster}>), která ukazuje průměrné využití procesoru pro cluster.
Pro tento scénář doporučujeme použít slabý režim konzistence. V tomto režimu můžou dotazy spravovat více uzlů, což umožňuje horizontálně škálovat počet souběžných dotazů. Uzly v tomto režimu pravidelně aktualizují svoji kopii metadat a nově přijatých dat, což vede k latenci obvykle méně než minutu při synchronizaci dat. Tato krátká latence je však vhodnější než kritická situace, ke které může dojít při použití režimu silné konzistence.
Režim konzistence můžete nastavit v zásadách konzistence dotazů skupiny úloh, ve vlastnostech požadavku klienta nebo v konfiguraci zdroje dat Grafana.
Nastavení zásad clusteru
Počet souběžných požadavků je ve výchozím nastavení omezený a řízen zásadami omezení četnosti požadavků, aby se cluster nepřetížil. Tuto zásadu můžete upravit pro situace s vysokou souběžností. Tyto zásady by se měly upravit až po důkladném testování, nejlépe u vzorů použití a datových sad podobných produkčním prostředí. Testování zajišťuje, že cluster dokáže udržovat upravenou hodnotu. Tento limit je možné nakonfigurovat na základě potřeb aplikace.
Monitorování clusterů Azure Data Exploreru
Monitorování stavu prostředků clusteru vám pomůže vytvořit plán optimalizace pomocí funkcí navržených v předchozích částech. Azure Monitor pro Azure Data Explorer poskytuje komplexní přehled o výkonu, operacích, využití a selháních vašeho clusteru. Získejte přehled o výkonu dotazů, souběžných dotazech, omezených dotazech a různých dalších metrikách výběrem karty Přehledy (Preview) v části Monitorování clusteru Azure Data Exploreru na webu Azure Portal.
Informace o monitorování clusterů najdete v tématu Azure Monitor pro Azure Data Explorer. Informace o jednotlivých metrikách najdete v tématu Metriky Azure Data Exploreru.