Doporučení pro optimalizaci škálování a dělení

Platí pro toto doporučení kontrolního seznamu efektivity výkonu azure Well-Architected Framework:

PE:05 Optimalizujte škálování a dělení. Začleňte spolehlivé a řízené škálování a dělení. Návrh jednotek škálování úlohy je základem strategie škálování a dělení.

Tato příručka popisuje doporučení pro škálování a dělení úloh. Škálování je možnost zvýšit nebo snížit prostředky přidělené k úloze na základě poptávky. Dělení zahrnuje rozdělení úlohy do menších, spravovatelných jednotek za účelem distribuce dat a zpracování mezi více prostředků. U úlohy, která se nešklikuje ani nedělí, může dojít k nízkému výkonu v obdobích s vysokou poptávkou a k nedostatečně využité kapacitě v obdobích s nízkou poptávkou.

Definice

Období Definice
Automatické škálování Funkce, která automaticky upravuje limity kapacity služby na základě předdefinovaných konfigurací a umožňuje vertikálně navýšit nebo snížit kapacitu podle potřeby.
Capacity Horní limit nebo maximální kapacita dané služby nebo funkce
Spřažení klienta (spřažení relací) Záměrné směrování požadavků z jednoho klienta do instance jednoho serveru, které pomáhá zajistit konzistentní správu relací.
Konzistence (distribuovaná databáze) Jednotnost dat napříč několika uzly v distribuované databázi, která zajišťuje, aby všechny repliky měly v daném okamžiku stejná data.
Konzistence (relační databáze) Vlastnost transakce, která přenese databázi z jednoho platného stavu do jiného a zachová integritu dat.
Úroveň konzistence Konfigurace, která definuje způsob a čas replikace dat v distribuovaném databázovém systému a určuje kompromis mezi konzistencí a výkonem.
Uzamčení dat Mechanismus, který zabraňuje souběžným aktualizacím stejných dat.
Horizontální škálování Přístup škálování, který přidává instance daného typu prostředku.
Optimistická metoda souběžného zpracování Přístup k aktualizaci databází, který místo tradičních mechanismů zamykání používá k provádění aktualizací snímky.
Dělení Proces fyzického rozdělení dat do samostatných úložišť dat.
Škálovatelnost Schopnost úlohy dynamicky měnit limity kapacity tak, aby vyhovovaly různým úrovním poptávky.
Jednotka škálování Skupina prostředků, která se úměrně škáluje.
Spřažení stavu Úložiště dat relace klienta na jednom serveru, aby stejný server zpracovával následné požadavky od stejného klienta.
Vertikální škálování Přístup škálování, který přidává výpočetní kapacitu k existujícím prostředkům.

Klíčové strategie návrhu

Škálování i dělení přispívají k efektivitě výkonu tím, že zajišťují, aby prostředky byly efektivně využívány a úlohy zvládly různá zatížení. Tyto postupy jsou obzvláště důležité v cloudových prostředích, kde aplikace musí být flexibilní a přizpůsobitelné měnícím se požadavkům. Škálování zajišťuje, že můžete rozšířit kapacitu úloh tak, aby splňovala rostoucí požadavky. Dělení umožňuje efektivně rozdělit úkoly nebo data, abyste mohli tyto rostoucí potřeby zvládnout. Základem obou těchto procesů je návrh jednotek škálování úlohy. Určuje, jak by se vaše úlohy měly rozšiřovat a distribuovat. Začleněním spolehlivého a řízeného přístupu ke škálování a dělení můžete předcházet potenciálním neefektivitám úloh.

Optimalizace škálování

Optimalizace škálování je proces úpravy počtu serverů, instancí nebo prostředků tak, aby splňoval proměnlivé požadavky úloh. Zajišťuje, aby úloha zvládla zvýšený provoz nebo požadavky, aniž by došlo ke snížení výkonu nebo výpadku.

Volba strategie škálování

Volba strategie škálování zahrnuje rozhodování mezi vertikálními nebo horizontálními metodami pro zvýšení kapacity úlohy na základě konkrétních požadavků. Výběr správné strategie zajistí, že prostředky budou efektivně upraveny tak, aby splňovaly požadavky úloh bez nadměrného využití nebo plýtvání. Pokud chcete zvolit správnou strategii škálování, musíte porozumět případům použití vertikálního a horizontálního škálování a tomu, jak splňují potřeby vašich úloh.

Vysvětlení vertikálního škálování Pomocí vertikálního škálování můžete zvýšit kapacitu jednoho prostředku, například upgradovat na větší velikost serveru nebo instance. Vertikální škálování je užitečné, když úloha může těžit z vyššího výpočetního výkonu, paměti nebo jiných prostředků v rámci jedné instance. Vertikální škálování je vhodné pro úlohy, které není snadné rozdělit na menší části, nebo když architektura aplikace nepodporuje horizontální škálování.

Seznamte se s horizontálním škálováním. Pomocí horizontálního škálování můžete přidat další instance nebo prostředky pro distribuci úloh mezi více serverů. Horizontální škálování nabízí výhody, jako je vyšší odolnost, zvýšená kapacita a schopnost zvládnout zvýšené požadavky na provoz nebo zatížení. Je efektivní pro aplikace nativní pro cloud, které jsou navržené tak, aby běžely na více uzlech. Horizontální škálování je vhodné pro úlohy, které je možné rozdělit do menších částí, které běží nezávisle.

Seznamte se s úlohou. Vhodnost vertikálního nebo horizontálního škálování závisí na konkrétních vlastnostech a požadavcích úlohy. Pravidelné monitorování a testování výkonu v následujících oblastech může přispět k optimalizaci strategie škálování v průběhu času:

  • Požadavky: Seznamte se s konkrétními požadavky úloh tím, že zvážíte faktory, jako jsou požadavky na prostředky, potřeby škálovatelnosti a omezení úloh.

  • Jednotky škálování: Vytvořte návrh jednotek škálování pro komponenty, u kterých se očekává, že budou škálovány společně. Například 100 virtuálních počítačů může vyžadovat dvě fronty a tři účty úložiště, aby zvládly další úlohy. Jednotkou škálování by bylo 100 virtuálních počítačů, dvě fronty a tři účty úložiště. Měli byste nezávisle škálovat všechny komponenty, u kterých dochází k kolísání využití kapacity.

  • Architektura: Vyhodnoťte návrh architektury aplikace. Některé aplikace můžou být ze své podstaty navrženy tak, aby se škálovala horizontálně, s bezstavovými komponentami, které lze snadno distribuovat napříč několika instancemi. Jiné aplikace můžou mít stavové komponenty nebo závislosti, díky kterým je vertikální škálování vhodnější. Vyhodnoťte požadavky na škálovatelnost a elasticitu úloh.

Návrh infrastruktury pro škálování

Návrh infrastruktury pro škálování je proces vytvoření architektury, která dokáže zvládnout rostoucí požadavky a úlohy přidáním nebo úpravou prostředků podle potřeby. Zahrnuje plánování a implementaci řešení, která se můžou horizontálně nebo svisle škálovat, aby vyhovovala růstu. Mezi strategie patří předcházení jednoúčelům, které se mohou stát kritickými body, a oddělení komponent aplikací, aby se zajistila nezávislá škálovatelnost. Když navrhujete úlohu tak, aby byla škálovatelná, může efektivně distribuovat úlohy mezi více prostředků, což zabraňuje kritickým bodům a maximalizuje využití prostředků.

Vyhněte se jednoúčelům. Měli byste se vyhnout použití jednoho centralizovaného prostředku pro celou úlohu. Místo toho rozdělte úlohy mezi více prostředků, abyste zlepšili škálovatelnost, odolnost proti chybám a výkon. Prozkoumejte některé konkrétní příklady a aspekty návrhu, abyste se vyhnuli jednoúčelům v prostředcích úloh:

  • Vyrovnávání zatížení na základě front: Místo toho, abyste se při zpracování zpráv spoléhali na jednu frontu, zvažte rozdělení úloh mezi více front, aby se zatížení zpracování distribuuje. Poskytuje lepší škálovatelnost a paralelní zpracování.

  • Zpracování dat: Jednoúčelové vzory se často objevují ve scénářích zpracování dat, kde se zpracování nevyvíjí. Rozdělte dlouhotrvající úlohy na menší úlohy, které můžou lépe škálovat, aby se úlohy distribuují mezi více prostředků, a využijte výhod paralelismu.

  • Vzory návrhu: Vzory návrhu, jako jsou fan-out/fan-in nebo potrubí a filtry , můžou pomoct vyhnout se v pracovních postupech jednoúčelům. Tyto vzory umožňují distribuci úloh zpracování mezi více prostředků a podporují škálovatelnost a flexibilitu.

Oddělovací komponenty. Oddělení komponent aplikací je důležitým aspektem návrhu pro zajištění škálovatelnosti. Zahrnuje rozdělení aplikace na menší nezávislé komponenty, které mohou nezávisle fungovat a škálovat na základě konkrétních požadavků na úlohy. Pokud například jedna komponenta vyžaduje kvůli zvýšené poptávce více prostředků, můžete tuto komponentu škálovat, aniž by to mělo vliv na ostatní. Tato flexibilita zajišťuje efektivní přidělování prostředků a zabraňuje kritickým bodům. Oddělením komponent můžete izolovat selhání a minimalizovat dopad na celou aplikaci. Pokud jedna komponenta selže, ostatní komponenty můžou dál nezávisle fungovat.

Oddělené komponenty se snadněji udržují a aktualizují. Změny nebo aktualizace jedné komponenty je možné provádět, aniž by to mělo vliv na ostatní komponenty, protože jsou nezávislé. Pro zajištění škálovatelnosti oddělte komponenty aplikací podle těchto pokynů:

  • Oddělení zájmů: Určete odpovědnosti a funkce vaší aplikace. Rozdělte odpovědnosti do samostatných komponent na základě jejich konkrétních úkolů. Můžete mít například samostatné komponenty pro ověřování uživatelů, zpracování dat a uživatelské rozhraní.

  • Volné spojení: Navrhujte komponenty tak, aby spolu komunikují prostřednictvím dobře definovaných rozhraní a protokolů. Tento návrh snižuje závislosti mezi komponentami a umožňuje snadnější výměnu nebo škálování jednotlivých komponent.

  • Asynchronní komunikace: K dalšímu oddělení komponent použijte asynchronní komunikační vzory, jako jsou fronty zpráv nebo architektury řízené událostmi. Tyto vzory umožňují komponentám zpracovávat úlohy nezávisle vlastním tempem, což zlepšuje celkovou škálovatelnost.

  • Mikroslužby: Zvažte implementaci mikroslužeb, což jsou malé nezávislé služby, které se zaměřují na konkrétní podnikové funkce. Každou mikroslužbu je možné vyvíjet, nasazovat a škálovat nezávisle a poskytovat tak větší flexibilitu a škálovatelnost.

Návrh aplikace pro škálování

Při škálování úlohy byste měli navrhnout aplikaci tak, aby distribuuje zatížení. To, že můžete přidat další repliky na úrovni infrastruktury, neznamená, že vaše aplikace může repliky používat. Návrh aplikace pro škálování je o strukturování aplikace tak, aby zvládla zvýšené požadavky prostřednictvím distribuce úloh mezi prostředky. Pokud je to možné, vyhněte se řešením, která vyžadují spřažení klienta, uzamčení dat nebo spřažení stavu pro jednu instanci. Chcete směrovat klienta nebo proces na prostředek, který má dostupnou kapacitu. Při návrhu škálovatelnosti aplikací zvažte následující strategie:

Odstraňte stav relace na straně serveru. Pokud je to možné, měli byste navrhnout aplikace tak, aby byly bezstavové. Pro stavové aplikace byste měli použít úložiště stavu, které je pro váš server externí. Externalizace stavu relace je postup ukládání dat relace mimo aplikační server nebo kontejner. Stav relace můžete externalizovat a distribuovat data relací mezi více serverů nebo služeb a umožnit tak bezproblémovou správu relací v distribuovaném prostředí. Při externalizaci stavu relace zvažte následující:

  • Vyhodnoťte požadavky na relaci. Seznamte se s daty relace, která je potřeba uložit a spravovat. Zvažte atributy relace, vypršení časových limitů relací a všechny konkrétní požadavky na replikaci nebo trvalost relací. Určete velikost stavu relace a frekvenci operací čtení a zápisu.

  • Zvolte řešení. Vyberte řešení úložiště, které odpovídá vašim požadavkům na výkon a škálovatelnost. Mezi možnosti patří použití distribuované mezipaměti, databáze nebo služby stavu relace. Při rozhodování zvažte faktory, jako je konzistence dat, latence a škálovatelnost.

  • Nastavte aplikaci. Aktualizujte aplikaci tak, aby používala zvolené řešení úložiště stavu relace. Možná budete muset změnit konfigurační soubory nebo kód aplikace, abyste se mohli připojit k externí službě úložiště.

  • Aktualizujte logiku. Změňte logiku správy relací vaší aplikace tak, aby ukládal a načítal data relací z externího řešení úložiště. Možná budete muset ke správě stavu relace použít rozhraní API nebo knihovny poskytované řešením úložiště.

Eliminujte spřažení klientů. Spřažení klienta se označuje také jako spřažení relací nebo rychlé relace. Když eliminujete spřažení klienta, distribuujete požadavky klientů rovnoměrně mezi několik replik nebo serverů, aniž byste směrovali všechny požadavky z klienta na stejnou repliku. Tato konfigurace může zlepšit škálovatelnost a výkon aplikací tím, že umožní jakékoli dostupné replice zpracovávat požadavky.

Zkontrolujte algoritmus vyrovnávání zatížení. Algoritmus vyrovnávání zatížení může způsobit neúmyslné a umělé připnutí klienta, kdy se do jedné back-endové instance odesílá příliš mnoho požadavků. K připnutí může dojít, pokud je algoritmus nastavený tak, aby vždy odesílal požadavky od stejného uživatele do stejné instance. Může k tomu dojít také v případě, že jsou požadavky příliš podobné.

Eliminujte zamykání dat. Uzamčení dat zajišťuje konzistenci, ale má nevýhody z hlediska výkonu. Může způsobit eskalaci uzamčení a negativně ovlivnit souběžnost, latenci a dostupnost. Pokud chcete zabránit zamykání dat, měli byste implementovat optimistickou souběžnost. Nerelační databáze by měly používat optimistické řízení souběžnosti a měly by mít správnou úroveň konzistence. Vaše strategie dělení dat by měla také podporovat vaše potřeby souběžnosti.

Použijte dynamické zjišťování služeb. Dynamické zjišťování služeb je proces automatického zjišťování a registrace služeb v distribuovaném systému. Umožňuje klientům zjišťovat dostupné služby, aniž by museli být úzce svázáni s konkrétními instancemi. Klienti by neměli být schopni převzít přímou závislost na konkrétní instanci v úloze. Abyste se těmto závislostem vyhnuli, měli byste k distribuci a redistribuci klientských připojení použít proxy server. Proxy server funguje jako zprostředkovatel mezi klienty a službami a poskytuje vrstvu abstrakce, která umožňuje přidávat nebo odebírat služby, aniž by to mělo vliv na klienty.

Používejte úlohy na pozadí. Když je aplikace škálovaná, může zvládnout zvyšující se zatížení nebo vyšší počet souběžných požadavků. Snižování zátěže náročných úloh jako úloh na pozadí umožňuje hlavní aplikaci zpracovávat požadavky uživatelů, aniž by ji zahlcují operace náročné na prostředky. Pokud chcete úlohy na pozadí přesunout jako úkoly na pozadí, postupujte takto:

  1. Najděte ve své aplikaci úlohy náročné na procesor a vstupně-výstupní operace, které můžete převést. Tyto úlohy obvykle zahrnují náročné výpočty nebo interakce s externími prostředky, jako jsou databáze nebo síťové operace.

  2. Navrhněte aplikaci tak, aby podporovala úlohy na pozadí. Oddělte náročné úlohy od hlavní logiky aplikace a poskytněte mechanismus pro spouštění a správu úloh na pozadí.

  3. Implementujte zpracování úloh na pozadí s vhodnými technologiemi nebo architekturami. Zahrňte funkce poskytované programovacím jazykem nebo platformou, jako je asynchronní programování, vytváření vláken nebo fronty úloh. Obsahují náročné operace v samostatných úlohách nebo vláknech. Tyto úlohy se dají spustit souběžně nebo naplánovat tak, aby běžely v určitých intervalech.

  4. Distribuujte úkoly na pozadí, pokud jich existuje mnoho, nebo pokud úkoly vyžadují značné množství času nebo zdrojů. Jedno z možných řešení najdete v modelu Konkurenční spotřebitelé.

Konfigurace škálování

Konfigurace škálování je proces nastavení a úpravy parametrů pro dynamické přidělování prostředků na základě požadavků úloh. Zahrnuje strategie, jako je používání funkcí automatického škálování, pochopení hranic škálování služeb a implementace smysluplných metrik zatížení. Správná konfigurace zajišťuje, že aplikace dokáže reagovat na různé požadavky a současně maximalizovat efektivitu. Při konfiguraci škálování zvažte následující strategie:

Používejte služby s automatickým škálováním. Funkce automatického škálování automaticky škáluje infrastrukturu tak, aby vyhovovala poptávce. Využijte nabídky PaaS (platforma jako služba) s integrovanými funkcemi automatického škálování. Velkou výhodou je snadné škálování na Platformě PaaS. Například horizontální navýšení kapacity virtuálních počítačů vyžaduje samostatný nástroj pro vyrovnávání zatížení, zpracování požadavků klienta a externě uložený stav. Většinu těchto úloh zvládnou nabídky PaaS.

Omezte automatické škálování. Nastavte limity automatického škálování, abyste minimalizovali nadměrné škálování, které by mohlo vést ke zbytečným nákladům. Někdy nemůžete nastavit limity škálování. V těchto případech byste měli nastavit výstrahy, které vás upozorní, když komponenta dosáhne maximálního limitu škálování a přemístit škálování.

Seznamte se s hranicemi škálování služby. Když rozumíte limitům, přírůstkům a omezením škálování služby, můžete při výběru služby činit informovaná rozhodnutí. Hranice škálování určují, jestli vámi zvolená služba dokáže zpracovat očekávanou úlohu, efektivně škálovat a splňovat požadavky vaší aplikace na výkon. Hranice škálování, které je potřeba zvážit, zahrnují:

  • Omezení škálování: Omezení škálování jsou maximální kapacita, kterou může umístění nebo služba zpracovat. Tyto limity je důležité znát, abyste zajistili, že služba dokáže pojmout očekávanou úlohu a zvládnout využití ve špičce bez snížení výkonu. Každý prostředek má horní limit škálování. Pokud potřebujete překročit limity škálování, měli byste úlohu rozdělit na oddíly.

  • Přírůstky škálování: Služby se škáluje po definovaných přírůstcích. Výpočetní služby můžou například škálovat podle instancí a podů, zatímco databáze se můžou škálovat podle instancí, jednotek transakcí a virtuálních jader. Je důležité porozumět těmto přírůstkům, abyste optimalizovali přidělování prostředků a zabránili flappingu prostředků.

  • Omezení škálování: Některé služby umožňují vertikálně navýšit nebo snížit kapacitu, ale omezují možnost automatického obrácení škálování. Jste nuceni škálovat ručně nebo možná budete muset znovu nasadit nový prostředek. Tato omezení často chrání zatížení. Vertikální snížení kapacity nebo horizontální snížení kapacity může mít vliv na dostupnost a výkon úlohy. Služba může vynucovat určitá omezení, aby se zajistilo, že úloha má dostatek prostředků pro efektivní provoz. Tato omezení můžou mít vliv na konzistenci a synchronizaci dat, zejména v distribuovaných systémech. Služba může mít mechanismy pro zpracování replikace a konzistence dat během vertikálního navýšení nebo snížení kapacity, ale nemusí poskytovat stejnou úroveň podpory vertikálního snížení nebo snížení kapacity.

Používejte smysluplné metriky zatížení. Při škálování by se jako triggery škálování měly používat smysluplné metriky zatížení. Mezi smysluplné metriky zatížení patří jednoduché metriky, jako je procesor nebo paměť. Zahrnují také pokročilejší metriky, jako je hloubka fronty, dotazy SQL, dotazy na vlastní metriky a délka fronty HTTP. Zvažte použití kombinace jednoduchých a pokročilých metrik zatížení jako triggeru škálování.

Použijte vyrovnávací paměť. Vyrovnávací paměť je nevyužitá kapacita, kterou lze použít ke zvládnutí špiček v poptávce. Dobře navržené plány úloh pro neočekávané špičky v zatížení. Měli byste přidat vyrovnávací paměť pro zpracování špiček pro horizontální a vertikální škálování.

Zabraňte flappingu. Flapping je podmínka smyčky, ke které dochází, když jedna událost škálování aktivuje událost opačného škálování a vytvoří nepřetržitou akci škálování tam a zpět. Pokud například horizontální snížení kapacity sníží počet instancí, může to způsobit zvýšení využití procesoru ve zbývajících instancích a aktivovat událost horizontálního navýšení kapacity. Událost horizontálního navýšení kapacity zase způsobí pokles využití procesoru a proces se zopakuje.

Je důležité zvolit přiměřenou mez mezi prahovými hodnotami horizontálního navýšení a snížení kapacity, abyste se vyhnuli flappingu. Nastavením prahových hodnot, které poskytují významný rozdíl ve využití procesoru, můžete zabránit častým a zbytečným akcím horizontálního snížení kapacity.

Použijte razítka nasazení. Existují techniky, které usnadňují škálování úlohy. Model Razítka nasazení můžete použít ke snadnému škálování úlohy přidáním jedné nebo více jednotek škálování.

Riziko: I když škálování pomáhá optimalizovat náklady tím, že upravuje kapacitu tak, aby splňovala poptávku, může vést k celkovému zvýšení nákladů během dlouhých období vysoké poptávky.

Testování škálování

Testování škálování zahrnuje simulaci různých scénářů úloh v řízeném prostředí, aby bylo možné vyhodnotit, jak úloha reaguje na různé úrovně poptávky. Pomáhá zajistit efektivní škálování úloh a maximalizovat efektivitu výkonu při různých zatíženích.

Potřebujete zajistit efektivní škálování úloh v reálných podmínkách. Je nezbytné provádět zátěžové a zátěžové testy v prostředí, které odpovídá vašemu produkčnímu nastavení. Tyto testy prováděné v neprodukčních prostředích umožňují vyhodnotit strategie vertikálního i horizontálního škálování a určit, která z nich optimalizuje výkon nejúčelněji. Tady je doporučený přístup k testování škálování:

  • Definujte scénáře úloh. Identifikujte klíčové scénáře úloh, které potřebujete otestovat, jako je zvýšení uživatelského provozu, souběžné požadavky, objem dat nebo využití prostředků.

  • Použijte testovací prostředí podobné produkčnímu prostředí. Vytvořte samostatné testovací prostředí, které se velmi podobá produkčnímu prostředí z hlediska infrastruktury, konfigurace a dat.

  • Nastavte metriky výkonu. Definujte metriky výkonu, které se mají měřit, jako je doba odezvy, propustnost, využití procesoru a paměti a míra chyb.

  • Vývoj testovacích případů Vyvíjejte testovací případy, které simulují různé scénáře úloh a postupně zvyšují zatížení, aby se vyhodnotil výkon na různých úrovních.

  • Spouštění a monitorování testů. Spusťte testy pomocí definovaných testovacích případů a shromážděte údaje o výkonu na každé úrovni zatížení. Monitorujte chování úloh, spotřebu prostředků a snížení výkonu.

  • Analýza a optimalizace škálování Analyzujte výsledky testů a identifikujte kritické body výkonu, omezení škálovatelnosti nebo oblasti pro zlepšení. Optimalizujte konfiguraci, infrastrukturu nebo kód, abyste zlepšili škálovatelnost a výkon. Dokončení škálování nějakou dobu trvá, proto otestujte účinky zpoždění škálování.

  • Adresovat závislosti. Vyhledejte potenciální problémy se závislostmi. Škálování nebo dělení v jedné oblasti úlohy může způsobit problémy s výkonem závislosti. Nejčastější příčinou problémů s výkonem závislostí jsou stavové části úlohy, jako jsou databáze. Databáze vyžadují pečlivý návrh horizontálního škálování. Pokud chcete povolit větší propustnost databáze, měli byste zvážit míry, jako je optimistická souběžnost nebo dělení dat.

  • Po úpravách znovu testovat. Po implementaci optimalizací opakujte testy škálovatelnosti, abyste ověřili vylepšení a zajistili, že úloha dokáže efektivně zvládnout očekávané úlohy.

Kompromis: Zvažte rozpočtová omezení a cíle nákladové efektivity vašich úloh. Vertikální škálování může vyžadovat vyšší náklady kvůli potřebě větších a výkonnějších prostředků. Horizontální škálování nabízí úsporu nákladů díky použití menších instancí, které je možné přidávat nebo odebírat na základě poptávky.

Rozdělení úlohy

Dělení je proces rozdělení velké datové sady nebo úlohy na menší a lépe spravovatelné části označované jako oddíly. Každý oddíl obsahuje podmnožinu dat nebo úlohy a obvykle se ukládá nebo zpracovává samostatně. Dělení umožňuje paralelní zpracování a snižuje kolize. Rozdělení úlohy do menších jednotek umožňuje aplikaci zpracovat každou jednotku nezávisle. Výsledkem je lepší využití prostředků a rychlejší zpracování. Dělení také pomáhá distribuovat data mezi několik úložných zařízení, což snižuje zatížení jednotlivých zařízení a zlepšuje celkový výkon.

Principy dělení

Konkrétní přístup k dělení, který použijete, závisí na typu dat nebo úlohy, kterou máte, a na technologii, kterou používáte. Mezi běžné strategie dělení patří:

  • Horizontální dělení: U tohoto přístupu se datová sada nebo úloha dělí na základě konkrétních kritérií, jako jsou rozsahy hodnot nebo konkrétní atributy. Každý oddíl obsahuje podmnožinu dat, která splňuje definovaná kritéria.

  • Vertikální dělení: U tohoto přístupu se datová sada nebo úloha dělí na základě konkrétních atributů nebo sloupců. Každý oddíl obsahuje podmnožinu sloupců nebo atributů, což umožňuje efektivnější přístup k požadovaným datům.

  • Funkční dělení: Při tomto přístupu se data nebo úlohy dělí na základě konkrétních funkcí nebo operací, které je potřeba provést. Každý oddíl obsahuje data nebo komponenty nezbytné pro určitou funkci, což umožňuje optimalizované zpracování a výkon.

Plánování dělení

Při dělení je důležité vzít v úvahu faktory, jako je distribuce dat, vzory dotazů, růst dat a požadavky úloh. Správné plánování a návrh jsou nezbytné k zajištění efektivity dělení a maximalizaci efektivity výkonu. Pokud dělení řešíte jako další, je náročnější, protože už máte aktivní úlohu, kterou je potřeba udržovat. Možná budete muset změnit logiku přístupu k datům, distribuovat velké objemy dat mezi oddíly a podporovat trvalé využití během distribuce dat.

Implementace dělení

Při rozhodování o tom, jaký typ dělení použít, je důležité analyzovat charakteristiky vašich dat, vzory přístupu, požadavky na souběžnost a cíle škálovatelnosti. Každý typ dělení má své vlastní výhody a aspekty. Tady jsou některé faktory, které je potřeba vzít v úvahu při každém typu dělení:

  • Horizontální dělení je vhodné v případě, že chcete distribuovat data mezi více prostředků nebo serverů kvůli lepší škálovatelnosti a výkonu. Je efektivní, když je možné úlohy paralelizovat a zpracovávat nezávisle na každém oddílu. Zvažte horizontální dělení v případě, že více uživatelů nebo procesů musí mít přístup k datové sadě nebo ji aktualizovat současně.

  • Vertikální dělení je vhodné, pokud se k určitým atributům nebo sloupcům přistupuje často, zatímco k jiným se přistupuje méně často. Vertikální dělení umožňuje efektivní přístup k požadovaným datům díky minimalizaci zbytečného načítání dat.

  • Funkční dělení je vhodné, pokud různé funkce vyžadují různé podmnožinu dat a je možné je zpracovávat nezávisle. Funkční dělení může optimalizovat výkon tím, že každému oddílu umožní zaměřit se na konkrétní operace.

Testování a optimalizace dělení

Otestujte schéma dělení a ověřte efektivitu strategie, abyste mohli provést úpravy pro zvýšení výkonu. Změřte faktory, jako je doba odezvy, propustnost a škálovatelnost. Porovnejte výsledky s výkonnostními cíli a identifikujte případné kritické body nebo problémy. Na základě analýzy identifikujte potenciální příležitosti k optimalizaci. Možná budete muset znovu distribuovat data napříč oddíly, upravit velikosti oddílů nebo změnit kritéria dělení.

Kompromis: Dělení zvyšuje složitost návrhu a vývoje úlohy. Dělení vyžaduje konverzaci a plánování mezi vývojáři a správci databází.

Riziko: Dělení přináší několik potenciálních problémů, které je potřeba zvážit a vyřešit, včetně následujících:

  • Nerovnoměrná distribuce dat: Dělení může vést k nerovnoměrné distribuci dat, kdy některé oddíly přijímají nepřiměřeně velké množství dat nebo zatížení v porovnání s jinými. Nerovnoměrná distribuce dat může mít za následek nerovnováhu výkonu a zvýšené kolize na konkrétních oddílech.

  • Výkon dotazů: Špatně navržená schémata dělení můžou negativně ovlivnit výkon dotazů. Pokud dotazy potřebují přístup k datům napříč několika oddíly, může to vyžadovat další koordinaci a komunikaci mezi oddíly, což vede ke zvýšení latence.

Usnadnění Azure

Optimalizace škálování Azure má kapacitu infrastruktury pro podporu vertikálního a horizontálního škálování. Služby Azure mají různé úrovně výkonu označované jako skladové položky. Skladové položky umožňují vertikální škálování. Mnoho prostředků Azure podporuje automatické škálování nebo jiné místní možnosti škálování. Některé prostředky podporují pokročilé metriky nebo vlastní vstup, které podporují jemné ladění chování škálování. Většina implementací škálování v Azure dokáže nastavit limity a podporovat potřebnou pozorovatelnost, aby se na změnu upozorňovalo.

Azure Monitor umožňuje monitorovat různé metriky a podmínky ve vašich aplikacích a infrastruktuře. Monitorování můžete použít k aktivaci automatizovaných akcí škálování na základě předdefinovaných pravidel. Například v Azure Kubernetes Service (AKS) můžete pomocí funkce Monitor povolit horizontální automatické škálování podů (HPA) a automatické škálování clusteru. Pomocí funkcí monitorování a upozorňování služby Monitor můžete efektivně usnadnit škálování v Azure a zajistit, aby se vaše aplikace a infrastruktura mohly dynamicky přizpůsobovat tak, aby uspokojily poptávku.

V Azure můžete také vytvořit vlastní automatické škálování. Výstrahy v monitorování můžete použít pro prostředky, které nemají funkci automatického škálování. Tato upozornění se dají nastavit tak, aby byla založená na dotazech nebo na metrikách, a můžou provádět akce pomocí Azure Automation. Automatizace poskytuje platformu pro hostování a spouštění kódu PowerShellu a Pythonu v Azure, cloudu a místním prostředí. Nabízí funkce, jako je nasazování runbooků na vyžádání nebo podle plánu, historie spuštění a protokolování, integrované úložiště tajných kódů a integrace správy zdrojového kódu.

Návrh aplikace pro škálování: Tady je několik způsobů, jak Azure usnadňuje návrh škálování aplikací.

  • Vyloučení zamykání dat: V Azure SQL Database můžete povolit optimalizované zamykání, aby se zlepšil výkon databází, které vyžadují striktní konzistenci.

  • Použití úloh na pozadí: Nabídky Azure a pokyny k implementaci úloh na pozadí Další informace najdete v tématu Úlohy na pozadí.

  • Implementace vyrovnávání zatížení: Azure poskytuje nástroje pro vyrovnávání zatížení, které nevyžadují spřažení klientů. Mezi tyto nástroje pro vyrovnávání zatížení patří Azure Front Door, Azure Application Gateway a Azure Load Balancer.

Dělení úloh: Azure nabízí různé strategie dělení pro různá úložiště dat. Tyto strategie pomáhají zlepšit výkon a škálovatelnost díky distribuci dat mezi více oddílů. Další informace najdete v tématu Strategie datových oddílů.

Kontrolní seznam efektivity výkonu

Projděte si kompletní sadu doporučení.