Tipy Googlu na snížení latence velkých webů

10. 2. 2013

Sdílet

 Autor: Scanrail - Fotolia.com
V posledním čísle časopisu ACM prozradil Google několik tajemství o navrhování co nejrychleji reagujících webů.

Journal of the ACM (Association for Computer Machinery) je vědecký recenzovaný časopis, jehož tématem je obecná počítačová věda, zejména teoretické aspekty. V posledním čísle vyšel článek, ve kterém se experti Googlu Jeffrey Dean (ze skupiny pro infrastrukturu) a Luiz Barroso (z divize základní výpočetní infrastruktury) podělili o řadu technik, které používají při udržování nepochybně nejnavštěvovanějšího webu v chodu.

Opravdu velkým systémům může způsobit problémy i několik individuálních pomalých uzlů. Dobrou zprávou je, že zatímco pomalé uzly nelze zcela eliminovat, celý systém může být navržen tak, aby to rychlost jeho reakce na požadavky uživatelů neovlivnilo.

Internetové služby se snaží více a více zkracovat reakční doby na požadavky uživatelů či softwarové klienty dané služby, ale to také znamená, že je stále méně času na reagování na nežádoucí situace a poruchy. Je to oblast, na kterou se i v následujících letech bude soustřeďovat výzkum a vývoj.

Podle příkladů, které v článku uvádějí autoři, uvažujeme server, jehož typická odpověď na uživatelův dotaz odchází za 10 milisekund, ale každý stý dotaz zaber celou sekundu. V prostředí jediného serveru to znamená, že pouze každý stý uživatel je nucen čekat. Pokud je ale každý dotaz zpracováván farmou stovky serverů se stejnou charakteristikou, potom podle výpočtu autorů bude pomalou reakcí celého řešení trpět 63 % uživatelů.

Kolísání výkonu může mít řadu důvodů, ať jde o rutinní údržbové práce, příliš dlouhé fronty úkolů v jednotlivých komponentách nebo obecně běh velkého počtu aplikací na jediném serveru. Experti Googlu se podělili o řadu způsobů, kterými se snaží odstranit vliv rychlosti individuálních uzlů, například díky dělení úkolu na menší části a lepší správu řešení poruch uzlů.

Faktem zůstává, že se nedá příliš zlepšovat latence individuálních komponent a hlavním tématem článku je, jak minimalizovat variabilitu reakčních dob. Je to jistá obdoba architektur vysoce dostupných systémů, které se skládají z komponent, na které se nelze zcela spolehnout. Takto lze stavět i cloudový systém nabízející konzistentní výkon, přestože se skládá z koncových uzlů s výkonem proměnným.

Příkladem řešení je možnost duplikovat požadavky a posílat je několika serverům Použita je první odpověď, která se vrátí. Další technikou je používání mikrooddílů (micropartition) nebo více datových oddílů na každém stroji. To umožňuje lépe nastavit rozložení zátěže. Třetím přístupem je důraz na rychlé odstavení přetížených serverů a zproštění je dalších úkolů.

Všechna algoritmy a metody umožňují návrhářům i nadále optimalizovat řešení pro obecné situace, při zachování stability výkonu v situacích mimořádných. Článek zdůrazňuje, že řady technik lze používat i u menších řešení IT, i když efekt nebude tak veliký, jako je tomu u rozsáhlých systémů.

Autor článku