Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro toto doporučení kontrolního seznamu efektivity výkonu architektury Azure Well-Architected:
| PE:05 | Optimalizujte škálování a dělení. Začlenění spolehlivého a řízeného škálování a dělení Návrh jednotky š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í úlohy. Škálování je schopnost zvýšit nebo snížit prostředky přidělené úloze na základě poptávky. Dělení zahrnuje rozdělení úlohy na menší, spravovatelné jednotky pro distribuci dat a zpracování napříč několika prostředky. U úlohy, která se nes škáluje nebo rozděluje, může docházet k nízkému výkonu v obdobích s vysokou poptávkou a nedostatečně využité kapacity v obdobích s nízkou poptávkou.
Definice
| Term | Definition |
|---|---|
| Automatické škálování | Funkce, která automaticky upravuje limity kapacity služby na základě předdefinovaných konfigurací, což umožňuje podle potřeby vertikálně navýšit nebo snížit kapacitu. |
| Capacity | Horní limit nebo maximální kapacita dané služby nebo funkce. |
| Spřažení klienta (spřažení relace) | Záměrné směrování požadavků z jednoho klienta do jedné instance serveru, které pomáhá zajistit konzistentní správu relací. |
| Konzistence (distribuovaná databáze) | Jednotnost dat napříč několika uzly v distribuované databázi a zajišťuje, aby všechny repliky měly stejná data v daném časovém okamžiku. |
| Konzistence (relační databáze) | Vlastnost transakce, která přivádí databázi z jednoho platného stavu do jiného a udržuje integritu dat. |
| Úroveň konzistence | Konfigurace, která definuje, jak a kdy se data replikují v distribuovaném databázovém systému a určují kompromis mezi konzistencí a výkonem. |
| Uzamčení dat | Mechanismus, který slouží k zabránění 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á souběžnost | Přístup k aktualizaci databází, které používají snímky k provádění aktualizací místo tradičních mechanismů uzamčení. |
| Partitioning | Proces fyzického rozdělení dat do samostatných úložišť dat. |
| Škálovatelnost | Schopnost úlohy dynamicky měnit limity kapacity tak, aby vyhovovala různým úrovním poptávky. |
| Jednotka škálování | Skupinaprostředkůch |
| Spřažení stavu | Úložiště dat relace klienta na jednom serveru tak, aby stejný server zpracovával následné požadavky od stejného klienta. |
| Vertikální škálování | Přístup ke škálování, který přidává výpočetní kapacitu ke stávajícím prostředkům. |
Škálování i dělení přispívá k efektivitě výkonu tím, že zajišťuje efektivní využití prostředků a zatížení dokáže zvládnout různá zatížení. Tyto postupy jsou obzvláště důležité v cloudových prostředích, kde musí být aplikace 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ě dělit úkoly nebo data za účelem zvládnutí těchto rostoucích potřeb. Základem obou těchto procesů je návrh jednotky škálování úlohy. Určuje, jak by se vaše úloha měla rozšiřovat a distribuovat úkoly. Začleněním spolehlivého a řízeného přístupu ke škálování a dělení můžete vedlejším krokem potenciální efektivity úloh.
Optimalizace škálování
Optimalizace škálování je proces úprav počtu serverů, instancí nebo prostředků tak, aby splňovaly proměnlivé požadavky úlohy. 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 zajišťuje efektivní úpravu prostředků 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 vyhovují potřebám vaší úlohy.
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ší server nebo velikost instance. Vertikální škálování je užitečné, když může úloha těžit ze zvýšené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é nejsou snadno rozdělené 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 úlohy mezi více serverů. Horizontální škálování nabízí výhody, jako je vylepšená odolnost, zvýšená kapacita a schopnost zvládat zvýšené požadavky na provoz nebo úlohy. 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 na menší části, 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í výkonu a testování v následujících oblastech může pomoct optimalizovat strategii škálování v průběhu času:
Požadavky: Porozumíte konkrétním požadavkům úlohy s ohledem na faktory, jako jsou požadavky na prostředky, potřeby škálovatelnosti a omezení úlohy.
Jednotky škálování: Vytvořte návrh jednotky škálování pro komponenty, které se mají škálovat společně. Například 100 virtuálních počítačů může vyžadovat dvě fronty a tři účty úložiště pro zpracování dalších úloh. Jednotka škálování by byla 100 virtuálních počítačů, dvou front a tří účtů úložiště. Měli byste nezávisle škálovat všechny komponenty, u které dochází ke kolísání využití kapacity.
Architektura: Posouzení návrhu architektury aplikace Některé aplikace můžou být ze své podstaty navrženy tak, aby se škálily horizontálně, s bezstavovými komponentami, které je možné 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 úlohy.
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í jednotonům, které se mohou stát kritickými body a oddělením komponent aplikace, 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ž brání kritickým bodům a maximalizuje využití prostředků.
Vyhněte se singletonům. Měli byste se vyhnout použití jednoho centralizovaného prostředku pro celou úlohu. Místo toho distribuujte ú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 singletonům v prostředcích úloh:
Vyrovnávání zatížení na základě fronty: Místo toho, abyste se museli spoléhat na jednu frontu ke zpracování zpráv, zvažte rozdělení úlohy do více front, aby se zatížení zpracování distribuuje. Poskytuje lepší škálovatelnost a paralelní zpracování.
Zpracování dat: Jednotonové vzory se často objevují ve scénářích zpracování dat, ve kterých se zpracování nerozdýchá. Rozdělte dlouhotrvající úkoly na menší úlohy, které můžou lépe škálovat, aby se úlohy distribuují mezi více prostředků a využívaly výhod paralelismu.
Vzory návrhu: Vzory návrhu, jako jsou ventilátory nebo ventilátory nebo potrubí a filtry , vám můžou pomoct vyhnout se singletonům v pracovních postupech. Tyto vzory umožňují distribuci úloh zpracování napříč několika prostředky a podporují škálovatelnost a flexibilitu.
Oddělte komponenty. Oddělení komponent aplikace je důležitým aspektem návrhu pro zajištění škálovatelnosti. Zahrnuje rozdělení aplikace na menší nezávislé komponenty, které můžou pracovat a škálovat nezávisle na základě konkrétních požadavků na úlohy. Pokud například jedna komponenta kvůli zvýšené poptávce vyžaduje 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 vliv na celkovou aplikaci. Pokud jedna komponenta selže, ostatní komponenty můžou dál fungovat nezávisle.
Oddělené komponenty se snadněji spravují a aktualizují. Změny nebo aktualizace jedné komponenty je možné provést, aniž by to mělo vliv na ostatní, protože jsou nezávislé. Podle těchto pokynů oddělte komponenty aplikací pro zajištění škálovatelnosti:
Oddělení obav: Identifikace zodpovědností a funkcí vaší aplikace Rozdělte zodpově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 mezi sebou 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ší nahrazení nebo škálování jednotlivých komponent.
Asynchronní komunikace: Pomocí asynchronních komunikačních vzorů, jako jsou fronty zpráv nebo architektury řízené událostmi, oddělte komponenty dále. Tyto vzory umožňují komponentám zpracovávat úlohy nezávisle na svém vlastním tempu, 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í obchodní funkce. Jednotlivé mikroslužby je možné vyvíjet, nasazovat a škálovat nezávisle a poskytovat 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í. Jen proto, že na úrovni infrastruktury můžete přidat další repliky, neznamená to, že vaše aplikace může repliky používat. Návrh aplikace, která se má škálovat, spočívá v strukturování aplikace, aby zvládla zvýšené požadavky tím, že distribuuje svou úlohu napříč prostředky. Vyhněte se řešením, která vyžadují spřažení klienta, uzamčení dat nebo spřažení stavu pro jednu instanci, pokud je to možné. Chcete směrovat klienta nebo proces do prostředku, který má dostupnou kapacitu. Při návrhu škálovatelnosti aplikací zvažte následující strategie:
Eliminujte stav relace na straně serveru. Pokud je to možné, měli byste navrhovat aplikace tak, aby byly bezstavové. V případě stavových aplikací 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. Můžete externě distribuovat data relace mezi více servery nebo službami a umožnit tak bezproblémovou správu relací v distribuovaném prostředí. Při externalizaci stavu relace zvažte následující skutečnosti:
Vyhodnoťte požadavky na relaci. Seznamte se s daty relace, která je potřeba ukládat a spravovat. Zvažte atributy relace, vypršení časového limitu relace 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 výběru 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 pro připojení k externí službě úložiště.
Aktualizujte logiku. Změňte logiku správy relací vaší aplikace tak, aby ukládala a načítala data relací z externího řešení úložiště. Ke správě stavu relace možná budete muset použít rozhraní API nebo knihovny poskytované řešením úložiště.
Eliminujte spřažení klienta. Spřažení klienta se také označuje jako spřažení relací nebo rychlé relace. Když eliminujete spřažení klientů, distribuujete požadavky klientů rovnoměrně mezi více replik nebo serverů bez směrování všech požadavků z klienta do stejné repliky. Tato konfigurace může zlepšit škálovatelnost a výkon aplikací tím, že umožní zpracování požadavků libovolnou dostupnou replikou.
Zkontrolujte svůj algoritmus vyrovnávání zatížení. Algoritmus vyrovnávání zatížení může způsobit neúmyslné a umělé připnutí klienta, kde se do jedné back-endové instance odesílá příliš mnoho požadavků. K připnutí může dojít v případě, že 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é sobě.
Eliminujte uzamčení dat. Uzamčení dat zajišťuje konzistenci, ale má nevýhody výkonu. Může způsobit eskalace zámků a negativně ovlivnit souběžnost, latenci a dostupnost. Pokud chcete eliminovat uzamčení dat, měli byste implementovat optimistickou souběžnost. Nerelační databáze by měly používat optimistickou kontrolu souběžnosti a mít správnou úroveň konzistence. Strategie dělení dat by také měla podporovat vaše potřeby souběžnosti.
Používejte 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 byli úzce svázáni s konkrétními instancemi. Klienti by neměli mí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 ovlivnilo klienty.
Používejte úlohy na pozadí. Když je aplikace škálovaná, může zpracovávat rostoucí 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ů bez zahlcení operací náročných na prostředky. Pokud chcete úkoly na pozadí přesměrovat jako úlohy na pozadí, postupujte takto:
Najděte úlohy náročné na procesor a vstupně-výstupní operace ve vaší aplikaci, které můžete přesměrovat. 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.
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í.
Implementujte zpracování úloh na pozadí s příslušnými technologiemi nebo architekturami. Zahrňte funkce poskytované programovacím jazykem nebo platformou, jako je asynchronní programování, vlákno nebo fronty úloh. Obsahují náročné operace v samostatných úlohách nebo vláknech. Tyto úlohy je možné spouštět souběžně nebo naplánovat tak, aby běžely v konkrétních intervalech.
Distribuujte úkoly na pozadí, pokud jich existuje mnoho, nebo pokud úkoly vyžadují delší čas nebo zdroje. Jedno možné řešení najdete v modelu Konkurenční spotřebitelé.
Nastavit š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ů na úlohy. Zahrnuje strategie, jako je použití 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, aby aplikace reagovala na různé požadavky a současně maximalizovala 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 splňovala poptávku. Použití nabídek PaaS (Platforma jako služba) s integrovanými funkcemi automatického škálování Velkou výhodou je snadné škálování na PaaS. Horizontální navýšení kapacity virtuálních počítačů například vyžaduje samostatný nástroj pro vyrovnávání zatížení, zpracování požadavků klienta a externě uložený stav. Nabídky PaaS zpracovávají většinu těchto úloh.
Omezení automatického škálování Nastavte limity automatického škálování, abyste minimalizovali nadměrné škálování, což by mohlo vést k zbytečným nákladům. Někdy nemůžete nastavit limity škálování. V těchto případech byste měli nastavit upozornění, která vás upozorní, když komponenta dosáhne maximálního limitu škálování a nadlimitně.
Seznamte se s hranicemi škálování služby. Když rozumíte omezením škálování služeb, přírůstkům a omezením, můžete při výběru služby učinit informovaná rozhodnutí. Hranice škálování určují, jestli vaše zvolená služba dokáže efektivně zpracovávat očekávané úlohy, efektivně škálovat a splňovat požadavky na výkon vaší aplikace. Mezi hranice škálování, které je potřeba zvážit, patří:
Omezení škálování: Limity škálování představují maximální kapacitu, kterou může umístění nebo služba zpracovat. Tyto limity je důležité znát, abyste zajistili, že služba zvládne očekávanou úlohu a zvládne 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 svou úlohu rozdělit na oddíly.
Přírůstky škálování: Služby se škáluje na definovaných přírůstcích. Výpočetní služby se například můžou škálovat podle instancí a podů, zatímco databáze 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ělení 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 omezit schopnost automatického zpětného škálování. Musíte provést ruční škálování nebo možná budete muset znovu nasadit nový prostředek. Tato omezení jsou často k ochraně úloh. Vertikální snížení kapacity nebo škálování může mít vliv na dostupnost a výkon úlohy. Služba může vynucovat určitá omezení nebo omezení, která pomáhají zajistit, aby úloha mohla efektivně fungovat s dostatečnými prostředky. Tato omezení můžou ovlivnit konzistenci a synchronizaci dat, zejména v distribuovaných systémech. Služba může mít mechanismy pro zpracování replikace dat a konzistence 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 načítání. Škálování by mělo jako triggery škálování používat smysluplné metriky načítání. Mezi smysluplné metriky zatížení patří jednoduché metriky, jako je procesor nebo paměť. Zahrnují také pokročilejší metriky, jako je hloubka fronty, dotazy SQL, vlastní dotazy metrik a délka fronty HTTP. Zvažte použití kombinace jednoduchých a pokročilých metrik načítání 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 úloze. Měli byste přidat vyrovnávací paměť pro zpracování špiček pro horizontální a vertikální škálování.
Zabránit flappingu. Flapping je podmínka smyčky, ke které dochází, když jedna událost škálování aktivuje opačnou událost škálování a vytvoří nepřetržitou akci horizontálního škálování. Pokud například škálování snižuje počet instancí, může to způsobit zvýšení využití procesoru ve zbývajících instancích, což aktivuje událost horizontálního navýšení kapacity. Událost horizontálního navýšení kapacity zase způsobí pokles využití procesoru a opakování procesu.
Je důležité zvolit odpovídající marži mezi prahovými hodnotami horizontálního navýšení kapacity a horizontálním snížením kapacity, abyste se vyhnuli flappingu. Časté a zbytečné akce horizontálního navýšení kapacity a horizontálního navýšení kapacity můžete zabránit nastavením prahových hodnot, které poskytují významný rozdíl v využití procesoru.
Použijte razítka nasazení. Existují techniky, které usnadňují škálování úlohy. Model Razítka nasazení můžete použít k snadnému škálování úlohy přidáním jedné nebo více jednotek škálování.
Riziko: Zatímco škálování pomáhá optimalizovat náklady úpravou kapacity tak, aby splňovala poptávku, může mít za následek celkové zvýšené náklady 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í k vyhodnocení toho, jak úloha reaguje na různé úrovně poptávky. Pomáhá zajistit efektivní škálování úloh, čímž maximalizuje efektivitu výkonu při různých zatíženích.
Potřebujete zajistit efektivní škálování úloh za reálných podmínek. Je nezbytné provádět zátěžové a zátěžové testy v prostředí, které zrcadlí vaše produkční 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, například zvýšení uživatelského provozu, souběžných požadavků, objemu dat nebo použití prostředků.
Použijte testovací prostředí podobné produkčnímu prostředí. Vytvořte samostatné testovací prostředí, které se úzce 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.
Vyvíjejte testovací případy. Vyvíjejte testovací případy, které simulují různé scénáře úloh, postupně zvyšují zatížení a vyhodnocují výkon na různých úrovních.
Proveďte a monitorujte testy. Testy spusťte pomocí definovaných testovacích případů a shromážděte údaje o výkonu na jednotlivých úrovních 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á, takže otestujte účinky zpoždění škálování.
Adresujte 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. Stavové části úlohy, jako jsou databáze, jsou nejčastější příčinou problémů s výkonem závislostí. Databáze vyžadují pečlivé návrh pro horizontální škálování. Měli byste zvážit míry, jako je optimistická souběžnost nebo dělení dat, abyste umožnili větší propustnost databáze.
Znovu proveďte testování po úpravách. Po implementaci optimalizací opakujte testy škálovatelnosti, abyste ověřili vylepšení a pomohli zajistit, aby úloha zvládla očekávané úlohy efektivně.
Kompromis: Zvažte omezení rozpočtu a cíle efektivity nákladů vaší úlohy. Vertikální škálování může zahrnovat vyšší náklady z důvodu potřeby větších a výkonnějších prostředků. Horizontální škálování nabízí úspory nákladů pomocí menších instancí, které je možné přidat nebo odebrat na základě poptávky.
Dělení úloh
Dělení je proces rozdělení velké datové sady nebo úlohy na menší, lépe spravovatelné části označované jako oddíly. Každý oddíl obsahuje podmnožinu dat nebo úloh a obvykle se ukládá nebo zpracovává samostatně. Dělení umožňuje paralelní zpracování a snižuje kolize. Rozdělení úlohy na menší jednotky umožňuje aplikaci zpracovávat jednotlivé jednotky nezávisle. Výsledkem je lepší využití prostředků a rychlejší zpracování. Dělení také pomáhá distribuovat data mezi více úložných zařízení, snížit zatížení jednotlivých zařízení a zlepšit celkový výkon.
Principy dělení
Konkrétní způsob dělení, který používáte, závisí na typu dat nebo úloh, které máte, a na technologii, kterou používáte. Mezi běžné strategie dělení patří:
Horizontální dělení: V tomto přístupu se datová sada nebo úloha rozdě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ňují definovaná kritéria.
Vertikální dělení: V tomto přístupu se datová sada nebo úloha rozdě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í: V tomto přístupu se data nebo úlohy rozdělují 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 konkrétní 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 na úlohy. Správné plánování a návrh jsou nezbytné k zajištění efektivity dělení a maximalizace efektivity výkonu. Pokud řešíte dělení jako po dokončení, je náročnější, protože už máte aktivní úlohu, kterou chcete udržovat. Možná budete muset změnit logiku přístupu k datům, distribuovat velké objemy dat mezi oddíly a podporovat průběžné využití během distribuce dat.
Implementace dělení
Při rozhodování o tom, jaký typ dělení se má použít, je důležité analyzovat charakteristiky 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 je několik faktorů, které je potřeba zvážit pro každý typ dělení:
Horizontální dělení je vhodné, pokud chcete data distribuovat mezi více prostředků nebo serverů, aby se zlepšila škálovatelnost a výkon. Je efektivní, když je možné úlohy paralelizovat a zpracovávat nezávisle na jednotlivých oddílech. Zvažte horizontální dělení, pokud musí mít více uživatelů nebo procesů přístup k datové sadě nebo k aktualizaci datové sady současně.
Vertikální dělení je vhodné v případě, že se k určitým atributům nebo sloupcům často přistupuje, zatímco k ostatním se přistupuje méně často. Vertikální dělení umožňuje efektivní přístup k požadovaným datům minimalizací zbytečného načítání dat.
Funkční dělení je vhodné, když různé funkce vyžadují různé podmnožina dat a je možné je zpracovat 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í, abyste ověřili efektivitu a efektivitu strategie, abyste mohli provádět úpravy 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 optimalizace. Možná budete muset distribuovat data mezi 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 úloh. Dělení vyžaduje konverzace a plánování mezi vývojáři a správci databází.
Riziko: Dělení zavádí některé potenciální problémy, které je potřeba zvážit a řešit, včetně:
Nerovnoměrná distribuce dat: Dělení může vést ke nerovnoměrné distribuci dat, kdy některé oddíly dostávají v porovnání s ostatními nepřiměřeně velké množství dat nebo úloh. Nerovnoměrná distribuce dat může vést k nevyváženosti výkonu a zvýšení kolizí u konkrétních oddílů.
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 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, které se označují 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, aby podporovaly jemně vyladění chování škálování. Většina implementací škálování v Azure může nastavit limity a podporovat potřebnou pozorovatelnost, která se má upozornit na změnu.
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 ve službě Azure Kubernetes Service (AKS) můžete pomocí monitorování povolit horizontální automatické škálování podů (HPA) a automatické škálování clusteru. Pomocí funkcí monitorování a upozorňování můžete efektivně usnadnit škálování v Azure a zajistit, aby se vaše aplikace a infrastruktura mohly dynamicky přizpůsobovat podle poptávky.
Můžete také vytvořit vlastní automatické škálování v Azure. Upozornění ve službě Monitor můžete použít pro prostředky, které nemají funkci automatického škálování. Tato upozornění je možné nastavit tak, aby byla založená na dotazech nebo na základě metrik a může provádět akce pomocí služby Azure Automation. Automation poskytuje platformu pro hostování a spouštění kódu PowerShellu a Pythonu v Azure, v cloudu a v místních prostředích. Nabízí funkce, jako je nasazení 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í;
Odstranění uzamčení dat: Ve službě Azure SQL Database můžete povolit optimalizované uzamykání za účelem zlepšení výkonu u databází, které vyžadují striktní konzistenci.
Použití úloh na pozadí: Azure nabízí služby a pokyny pro 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í úlohy: 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 tím, že distribuují data do více oddílů. Další informace najdete v tématu Strategie dělení dat.
Související odkazy
- Proč rozdělovat data?
- Osvědčené postupy pro automatické škálování
- Přehled funkce automatického škálování v Azure
- Horizontální, svislé a funkční dělení dat
- Aspekty návrhu aplikací
Kontrolní seznam efektivity výkonu
Projděte si kompletní sadu doporučení.