Plánování kapacity pro aplikace Service Fabric

V tomto dokumentu se dozvíte, jak odhadnout množství prostředků (procesory, paměť RAM, diskové úložiště), které potřebujete ke spuštění aplikací Azure Service Fabric. Požadavky na prostředky se v průběhu času běžně mění. Při vývoji nebo testování služby obvykle potřebujete jen málo prostředků a s tím, jak přejdete do produkčního prostředí a vaše aplikace roste na oblíbenosti, budete potřebovat další prostředky. Při návrhu aplikace si promyslete dlouhodobé požadavky a rozhodnete se, jak službu škálovat, aby splňovala vysokou poptávku zákazníků.

Při vytváření clusteru Service Fabric se rozhodnete, jaké druhy virtuálních počítačů cluster tvoří. Každý virtuální počítač má omezené množství prostředků ve formě procesorů (jader a rychlosti), šířky pásma sítě, paměti RAM a diskového úložiště. S tím, jak se vaše služba v průběhu času rozrůstá, můžete upgradovat na virtuální počítače, které nabízejí větší prostředky, nebo do clusteru přidávat další virtuální počítače. Pokud to chcete udělat, musíte službu nejprve navrhnout tak, aby využívala nové virtuální počítače, které se dynamicky přidávají do clusteru.

Některé služby spravují na samotných virtuálních počítačích jen málo nebo vůbec žádná data. Proto by se plánování kapacity pro tyto služby mělo zaměřit především na výkon, což znamená výběr vhodných procesorů (jader a rychlosti) virtuálních počítačů. Kromě toho byste měli zvážit šířku pásma sítě, včetně četnosti síťových přenosů a množství přenášených dat. Pokud vaše služba potřebuje se zvýšením využití služby dobře fungovat, můžete do clusteru přidat další virtuální počítače a vyrovnávat zatížení síťových požadavků napříč všemi virtuálními počítači.

U služeb, které na virtuálních počítačích spravují velké objemy dat, by se plánování kapacity mělo zaměřit především na velikost. Proto byste měli pečlivě zvážit kapacitu paměti RAM a diskového úložiště virtuálního počítače. Díky systému pro správu virtuální paměti ve Windows vypadá místo na disku v kódu aplikace jako paměť RAM. Modul runtime Service Fabric navíc poskytuje inteligentní stránkování, které uchovává v paměti pouze horká data a přesouvá studená data na disk. Aplikace tak můžou využívat více paměti, než je fyzicky dostupné na virtuálním počítači. Větší velikost paměti RAM jednoduše zvyšuje výkon, protože virtuální počítač může udržovat více diskového úložiště v paměti RAM. Virtuální počítač, který vyberete, by měl mít disk dostatečně velký, aby se na virtuálním počítači uložila požadovaná data. Podobně by měl mít virtuální počítač dostatek paměti RAM, aby vám poskytl požadovaný výkon. Pokud se data vaší služby časem zvětšují, můžete do clusteru přidat další virtuální počítače a rozdělit data mezi všechny virtuální počítače.

Určete, kolik uzlů potřebujete.

Dělení služby umožňuje škálovat data služby na více instancí. Další informace o dělení najdete v tématu Dělení Service Fabric. Každý oddíl se musí vejít do jednoho virtuálního počítače, ale na jeden virtuální počítač je možné umístit několik (malých) oddílů. Díky většímu počtu malých oddílů tedy získáte větší flexibilitu než několik větších oddílů. Kompromis spočívá v tom, že velké množství oddílů zvyšuje režijní náklady na Service Fabric a nemůžete provádět transakce napříč oddíly. Existuje také větší potenciální síťový provoz, pokud kód služby často potřebuje přístup k datům, která se nachází v různých oddílech. Při návrhu služby byste měli pečlivě zvážit tyto výhody a nevýhody, abyste dospěli k efektivní strategii dělení.

Předpokládejme, že vaše aplikace má jednu stavovou službu s velikostí úložiště, u které očekáváte, že se za rok zvětšují o DB_Size GB. Jste ochotni přidat další aplikace (a oddíly), jakmile po daném roce zaznamenáte růst. Faktor replikace (RF), který určuje počet replik pro vaši službu, ovlivňuje celkový DB_Size. Celkový DB_Size napříč všemi replikami se vynásobí faktorem replikace vynásobeným DB_Size. Node_Size představuje místo na disku nebo paměť RAM na uzel, který chcete pro svoji službu použít. Pro zajištění nejlepšího výkonu by se DB_Size měla vejít do paměti v clusteru a zvolit Node_Size, která se nachází kolem paměti RAM virtuálního počítače. Přidělením Node_Size, který je větší než kapacita paměti RAM, spoléháte na stránkování poskytované modulem runtime Service Fabric. Proto váš výkon nemusí být optimální, pokud jsou celá data považována za horká (od té doby jsou data stránkována). U mnoha služeb, kde je horké jen zlomek dat, je to ale cenově výhodnější.

Počet uzlů potřebných pro maximální výkon je možné vypočítat následujícím způsobem:

Number of Nodes = (DB_Size * RF)/Node_Size

Přihlédněme k růstu

Počet uzlů můžete chtít vypočítat na základě DB_Size, ke kterému očekáváte růst vaší služby, a to kromě DB_Size, se kterým jste začali. Pak s růstem vaší služby zvětšujte počet uzlů, abyste nepřetěžujte počet uzlů. Počet oddílů by ale měl vycházet z maximálního počtu uzlů, které jsou potřeba při spuštění služby.

Je dobré mít k dispozici některé další počítače, které vám umožní zvládnout případné neočekávané špičky nebo selhání (například když několik virtuálních počítačů nefunguje). I když by se kapacita navíc měla určit na základě očekávaných špiček, výchozím bodem je rezervovat si několik virtuálních počítačů navíc (5–10 procent navíc).

Předchozí předpokládá jednu stavovou službu. Pokud máte více stavových služeb, musíte do rovnice přidat DB_Size přidružené k ostatním službám. Alternativně můžete vypočítat počet uzlů pro každou stavovou službu zvlášť. Vaše služba může mít repliky nebo oddíly, které nejsou vyvážené. Mějte na paměti, že oddíly můžou mít také více dat než ostatní. Další informace o dělení najdete v článku věnovaném osvědčeným postupům pro dělení. Předchozí rovnice je však nezávislá na oddílech a replikách, protože Service Fabric zajišťuje optimální rozložení replik mezi uzly.

Použití tabulky pro výpočet nákladů

Teď do vzorce dáme nějaká reálná čísla. Příklad tabulky ukazuje, jak naplánovat kapacitu pro aplikaci, která obsahuje tři typy datových objektů. U každého objektu odhadujeme jeho velikost a počet objektů, které očekáváme. Také vybereme požadovaný počet replik každého typu objektu. Tabulka vypočítá celkovou velikost paměti, která má být uložena v clusteru.

Pak zadáme velikost virtuálního počítače a měsíční náklady. Na základě velikosti virtuálního počítače tabulka uvádí minimální počet oddílů, které musíte použít k rozdělení dat, aby se fyzicky vešly na uzly. Můžete chtít větší počet oddílů, které budou vyhovovat konkrétním výpočetním a síťovým požadavkům vaší aplikace. Tabulka ukazuje, že počet oddílů, které spravují objekty profilů uživatelů, se zvýšil z jednoho na šest.

Na základě všech těchto informací teď tabulka ukazuje, že jste mohli fyzicky získat všechna data s požadovanými oddíly a replikami v clusteru s 26 uzly. Tento cluster by ale byl hustě zabalený, takže můžete chtít, aby se selhání a upgrady uzlů vyhověly některé další uzly. Tabulka také ukazuje, že více než 57 uzlů neposkytuje žádnou další hodnotu, protože byste měli prázdné uzly. Opět můžete chtít přejít na více než 57 uzlů, abyste se přizpůsobili selháním a upgradům uzlů. Tabulku můžete upravit tak, aby odpovídala konkrétním potřebám vaší aplikace.

Tabulka pro výpočet nákladů

Další kroky

Další informace o dělení služby najdete v tématu Dělení služeb Service Fabric .