Hlavní navigace

YouTube použil jazyk Go pro zefektivnění MySQL

16. 12. 2012

Sdílet

 Autor: © kentoh - Fotolia.com
Vývojáři YouTube pracují na softwarové sadě nazvané Vitess, která má přispět ke zvýšení efektivity open source databází MySQL v rozsáhlých produkčních prostředích.

YouTube v současné době používá pouze jedinou z komponent sady Vitess, a sice Vtocc, s kterou se snaží pokrýt poptávku více než 800 miliónů uživatelů, kteří službu měsíčně využijí. „Vtocc je velmi stabilní a disponuje všemi potřebnými nástroji, které můžete použít v produkčním prostředí,“ řekl architekt YouTube Sugu Sougoumarane, který společně se svým kolegou Mikem Solomonem o Vitess v tomto týdnu diskutoval na konferenci Usenix LISA.

Vitess je napsána ve vlastním jazyce Googlu pojmenovaném jednoduše Go. Tento fakt by mohl Go velmi pomoci, jestliže se ukáže, že je možné tento programovací jazyk skutečně používat i v takto rozsáhlých produkčních prostředích. Google představil první verzi jazyka Go letos v březnu.

YouTube si měsíčně musí poradit v průměru se 4 miliardami hodin videa. Zhruba 72 hodin videa je pak na server nahráno každou minutu. Tato videa jsou ukládána přímo na souborovém systému, zatímco MySQL slouží pro ukládání všech metadat potřebných pro přehrání každého z nich. Tím se rozumí především uživatelské preference, informace užitečné pro inzerci nebo geografické přizpůsobení.

Podle Solomona si YouTube na MySQL nejvíce cení jeho spolehlivosti. Přiznává sice existenci určitých nedostatků, ty jsou však podle něj veřejně známé a je možné docela snadno zmírnit jejich dopad. Velkým problémem je však škálování, tedy alespoň při nasazení v tak datově náročné službě, jakou je YouTube. „Hlavní problém je v tom, že jakmile se dostanete na určitou úroveň vytížení, strávíte hodně času přizpůsobováním hardwaru a sledováním množství instancí,“ vysvětluje Solomon. Cílem je podle něj celý proces automatizovat.

MySQL také není příliš efektivní při větších objemech dat. V podstatě každé připojení do MySQL si na serveru vyžádá vlastní vlákno. Takový přístup není vzhledem k rozsahu činnosti YouTube možný. Vývojáři se proto snažili provést životně důležité změny přímo v kódu jádra MySQL, ale zjistili, že jakýkoliv pokus o úpravu složitého kódu může mít nečekané účinky. Proto byla vytvořena sada Vitess, která má ve spojení s MySQL nabídnout nové možnosti správy. Již zmíněná komponenta Vtocc tak například spojuje příchozí dotazy SQL do menšího počtu dávek, takže MySQL potřebuje na vyřízení všech požadavků méně zdrojů.

Použitím jazyka Go se podle Sougoumaraneho výrazně zvýšila produktivita vývojářů. Jeho velkou předností je například rychlá kompilace – 30 tisíc řádků kódu může být ve Vitess převedeno do binární podoby už během 30 sekund. K dispozici je navíc velké množství knihoven. Go má samozřejmě i své mouchy.

Byl pro vás článek přínosný?