Návrh pro škálování na více instancí

Navrhněte aplikaci tak, aby ji bylo možné horizontálně škálovat.

Primární výhodou cloudu je elastické škálování – možnost používat tolik kapacity, kolik je potřeba, horizontálně navyšovat kapacitu při nárůstu zatížení a zase ji snižovat, když kapacita navíc není potřeba. Navrhněte svou aplikaci tak, abyste ji mohli škálovat horizontálně, abyste podle potřeby mohli přidávat a odebírat nové instance.

Doporučení

Vyhněte se věrnosti instanci. Věrnost, nebo spřažení relace, znamená, že požadavky od stejného klienta jsou vždy směrovány na stejný server. Vytrvalost omezuje schopnost aplikace horizontální navýšení kapacity. Například provoz od uživatele s vysokým objemem dat nebude distribuován mezi instance. Mezi příčiny věrnosti patří ukládání stavu relace do paměti a používání klíčů pro šifrování specifických pro konkrétní počítač. Ujistěte se, že každá instance může zpracovat kteroukoli žádost.

Zjistěte kritické body. Škálování není magickým řešením každého problému s výkonem. Pokud je například kritickým bodem backendová databáze, nepomůže přidat další webové servery. Než na problém přihodíte další instance, nejprve v systému určete a vyřešte kritické body. Kritickými body jsou s největší pravděpodobností stavové části systému.

Rozdělte úlohy podle požadavků na škálovatelnost. Aplikace se často skládají z více úloh s různými požadavky na škálování. Například aplikace může mít veřejně přístupný web a samostatný web pro správy. Na veřejném webu může docházet k náhlým nárůstům provozu, zatímco web pro správu má menší a předvídatelnější zátěž.

Přesměrujte zpracování úloh náročných na prostředky. Chcete-li minimalizovat zatížení front-endu, který zpracovává požadavky uživatelů, měly by se úlohy, které vyžadují mnoho prostředků procesoru nebo V/V, přesunout mezi úlohy na pozadí, pokud je to možné.

Používejte integrované funkce automatického škálování. Mnoho výpočetních služeb Azure má integrovanou podporu automatického škálování. Pokud má aplikace předvídatelné, pravidelné zatížení, horizontálně navyšujte kapacitu podle plánu. Například horizontálně navyšte kapacitu během pracovní doby. Pokud zatížení není předvídatelné, používejte k aktivaci automatického škálování metriky výkonu, jako je délka fronty procesoru nebo žádostí. Přečtěte si osvědčené postupy automatického škálování v tématu Automatické škálování.

Vezměte v úvahu agresivní automatické škálování pro kritické úlohy. Pro kritické úlohy budete chtít být připraveni předem. Je lepší v případě velkého zatížení přidat rychle nové instance, aby se zvládnul další provoz, a pak postupně škálovat zpět.

Vytvářejte návrh pro horizontální snížení kapacity. Nezapomeňte, že v rámci elastického škálování bude mít aplikace období horizontálního snižování kapacity, kdy se instance odebírají. Aplikace musí pohodlně zvládnout odebírání instancí. Tady jsou některé způsobů zpracování horizontálního snižování kapacity:

  • Naslouchejte událostem vypnutí (pokud jsou k dispozici) a provádějte vypnutí čistě.
  • Klienti/příjemci služby by měli podporovat zpracování přechodných chyb a akci opakovat.
  • Pro dlouhotrvající úlohy zvažte rozdělení práce, pomocí kontrolních bodů nebo modelu Pipes and Filters.
  • Vkládejte pracovní položky do fronty, aby si je mohla vyzvednout jiná instance, pokud se původní instance odebere uprostřed zpracování.