Car-tech

A YouTube a Go kóddal

A Docker konténerizáció és Kubernetes felforgatta a világot

A Docker konténerizáció és Kubernetes felforgatta a világot
Anonim

A YouTube mérnökei olyan szoftvercsomagot fejlesztenek ki, a Vitess nevű programot, amely segíteni fogja a nyílt forráskódú MySQL adatbázisok hatékonyabb működését a nagyon nagy méretű termelési környezetekben. A kód megírásához a Google programozási nyelvét használja Go.

A YouTube már egy Vitus-komponenst (a Vtocc-ot) használ, amely segítséget nyújt a videók teljesítéséhez 800 millió havi felhasználó számára. A Google 2006-ban szerezte meg a YouTube-ot.

A Vtocc "nagyon stabil volt, és rendelkezik minden olyan eszközzel, amelyet felhasználhat egy termelési környezetben" - mondta Sugu Sougoumarane, a YouTube-szerkesztő, aki a YouTube mérnöke, Mike Solomon a Usenix LISA (Large Installation System Administration) konferencián, amely ezen a héten San Diegón tartott.

A Go-ban írt Vitess segíthet érvényesíteni azt az elképzelést, hogy ez a viszonylag új programnyelv használható nagyszabású termelési környezetekben. A Google bevezette a March 1-es verzióját.

A YouTube havonta több mint 4 milliárd órányi videót jelenít meg. Kb. 72 óra videó kerül feltöltésre a szolgáltatásra percenként. Bár a YouTube minden fájlját közvetlenül a fájlrendszerben tárolja, a MySQL segítségével tárolja az összes videóhoz szükséges összes metaadatot, például a felhasználói preferenciákat, a hirdetési információkat, az országbeli testreszabásokat és egyéb szükséges adatokat.

A YouTube a MySQL használatával szereti megbízhatóságáról, mondta Salamon, az egyik olyan mérnök, aki eredetileg felépítette a szolgáltatást. Elképesztő, de ezek a mókák jól ismertek és könnyedén enyhíthetők, mondta. Ugyanakkor a MySQL-nek is problémái vannak a méretezéssel kapcsolatban - legalábbis méretezéssel, hogy olyan szolgáltatást nyújtson, amely olyan nagy, mint a YouTube.

"A MySQL legfontosabb problémája az, hogy ha egyszer elér egy bizonyos [használati] pontot, a hardverkezelés ideje és hány példány van "- mondta Salamon. "Azt akarjuk, hogy automatizáljuk azt a darabot, hogy minden bonyolult és hibás cselekvést meghozzunk, és meggyógyuljunk."

A MySQL szintén nem nagyon hatékony, ha nagy telepítéskor használják. Általában minden kapcsolat a MySQL-hez saját szálat igényel a kiszolgálón. Ez a megközelítés azonban nem megvalósítható a YouTube műveleteinek léptékében. "A több tízezer kapcsolat nem igazán életképes" - mondta Solomon.

A cég mérnökei azonban nem szívesen próbálnák magukban megváltoztatni a magi MySQL kódot, megjegyezve, hogy változtatásokat hajtanak végre a komplexumban és némiképp nehézkessé tenni - a kód megérzése gyakran nem várt hatásokat eredményez. "Nem egyszerű: csak akkor, amikor úgy gondolja, hogy tudja, mit csinál, akkor kezd bajba kerülni" - mondta Solomon.

Tehát a Vitess azért jött létre, hogy a MySQL-szel együttműködve további menedzsment képességeket kínáljon. Például a Vtocc összetevő több ezer beérkező SQL lekérdezést tömörít egy kisebb számú tételre, így a MySQL kevesebb erőforrást igényelhet ezeknek a kéréseknek a kielégítésére. A Vtocc a lekérdezéseket is elemzi, hogy azok hatékonyabban végrehajthatók legyenek, és csökkentsék az ismétlődő lekérdezések által okozott munkát azáltal, hogy az eredményeket egy lekérdezésből újra felhasználják a többi azonos kérés kielégítésére.

A Go használatával a YouTube fejlesztői produktívabbak lennének, mint amit egy hagyományosabb nyelvet használtak, mondta Sougoumarane.

A kód gyorsan összeállt, mondta. A Vitess 30 000 sorának kódja kb. 30 másodpercen belül összeállítható bináris fájlba. És a gazdag könyvtáraknak köszönhetően sok feladat nem igényel sok programot. Például Sougoumarane egy 105 soros rutint írt, amely időnként kijavítja a naplófájlokat, olyan funkcionalitást, amellyel a C vagy a C ++ használatával nem lehetett néhány sorba írni.

"Így fejeződik ki a kifejező Go" - mondta Sougoumarane. "A nyelvi jellemzők jól átgondolt, segítenek abban, hogy a dolgokat sokkal elegánsabban formázzuk, mint a hagyományos nyelveket." A Sougoumarane dicsérte a Go-féle konkurencia-támogatást is, ami létfontosságú a többmagos processzorokban való használathoz. "Nem kell aggódnod a szálak kezeléséért, és menni fogod őket neked" - mondtaA nyelvnek van néhány hátránya is, elismerte Sougoumarane. A hibaelhárítás például javítható. Az ütemezés és a szemétgyűjtés is alkalmazhat néhány munkát.

Solomon elmondta, hogy idővel a Vitess további feladatokat, például adatbázis-replikációt és automatikus sharding-ot is igénybe vehet, így egy adatbázis több szerveren keresztül bővíthető, a beavatkozók beavatkozása nélkül.

Joab Jackson vállalati szoftvert és általános technológiai híreket közöl az

Az IDG News Service számára. Kövesse Joabot a Twitteren a @Joab_Jackson-on. Joab e-mail címe [email protected]