Car-tech

YouTube kaliskis MySQL sa Go code

SQL Tutorial - Full Database Course for Beginners

SQL Tutorial - Full Database Course for Beginners
Anonim

Ang mga inhinyero sa YouTube ay bumubuo ng isang set ng software, na tinatawag na Vitess, na tutulong sa mga bukas na mapagkukunan ng mga database ng MySQL na gumana nang mas mahusay sa napakalaking mga kapaligiran sa produksyon. Upang isulat ang code, ginagamit nila ang programming language ng Google Pumunta.

Ginagamit na ng YouTube ang isang bahagi ng Vitess, na tinatawag na Vtocc, upang makatulong na maghatid ng mga video sa lahat ng serbisyo ng 800 milyong buwanang mga gumagamit. Ang Google ay nakuha ang YouTube noong 2006. "Ang Vtocc ay" naging matatag, at mayroon itong lahat ng mga kinakailangang kasangkapan para sa iyo sa isang kapaligiran sa produksyon, "sabi ng arkitekto ng YouTube na si Sugu Sougoumarane, kasama ang YouTube engineer na si Mike Solomon, tinalakay ang Vitess sa conference ng Usenix LISA (Large Installation System Administration), na gaganapin sa linggong ito sa San Diego.

Ang That Vitess na nakasulat sa Go ay maaaring makatulong sa patunayan ang ideya na ang relatibong bagong programming language na ito ay maaaring magamit sa malakihang kapaligiran ng produksyon. Ipinakilala ng Google ang bersyon 1 ng Go noong Marso.

Naghahain ang YouTube ng higit sa 4 bilyong oras ng video bawat buwan. Ang mga 72 na oras ng video ay na-upload sa serbisyo bawat minuto. Habang diretsong nag-iimbak ng YouTube ang lahat ng mga video nito sa isang sistema ng file, ginagamit nito ang MySQL upang iimbak ang lahat ng metadata na kailangan upang maihatid ang bawat video, tulad ng mga kagustuhan ng gumagamit, impormasyon sa advertising, pagpapasadya ng bansa at iba pang mga kinakailangang mga piraso ng impormasyon.

Gusto ng YouTube gamit ang MySQL para sa pagiging maaasahan nito, sinabi ni Solomon, isa sa mga inhinyero na orihinal na nagtayo ng serbisyo. Mayroon itong mga quirks, ngunit ang mga quirks ay kilalang-kilala at maaaring mapagaan nang pantay madali, sinabi niya. Gayunpaman, ang MySQL ay mayroon ding mga isyu na may scaling - hindi bababa sa scaling upang mapaunlakan ang isang serbisyo bilang malaking bilang ng YouTube.

"Ang pangunahing problema sa MySQL ay na sa sandaling nakarating ka sa isang tiyak na punto [ng paggamit], gumastos ka ng maraming oras sa pamamahala ng hardware at kung gaano karaming mga pagkakataon mayroon ka, "Solomon sinabi. "Gusto naming i-automate ang tip na iyon. Gusto naming gumawa ng bawat aksyon na kumplikado at madaling kapitan ng sakit at gawing pagalingin ang sarili nito."

Ang MySQL ay hindi masyadong mahusay kapag ginamit sa isang malaking deployment. Karaniwan, ang bawat koneksyon sa MySQL ay nangangailangan ng sarili nitong thread sa server. Gayunpaman, ang diskarte na ito ay hindi magagawa sa laki ng mga pagpapatakbo ng YouTube. "Ang pagpapatakbo ng sampu-sampung libu-libong mga koneksyon ay hindi talaga mabubuhay," sabi ni Solomon.

Ang mga inhinyero ng kumpanya, gayunpaman, ay nag-aatubili na subukan na palitan ang pangunahing code ng MySQL mismo, sinasabing ang paggawa ng mga pagbabago sa komplikadong at medyo mahirap Ang pag-unawa sa code ay kadalasang maaaring magresulta sa hindi inaasahang mga epekto. "Sa tingin mo alam mo kung ano ang iyong ginagawa, kapag nagsimula kang makakuha ng problema," sabi ni Solomon.

Kaya Vitess ay nilikha upang tumakbo kasabay ng MySQL upang magbigay ng karagdagang kakayahan sa pangangasiwa. Ang component ng Vtocc, halimbawa, ay nagtataguyod ng libu-libong mga papasok na mga query sa SQL sa isang mas maliit na bilang ng mga batch kaya ang MySQL ay maaaring tumagal ng mas kaunting mapagkukunan ng pagtupad sa mga kahilingang ito. Ang Vtocc ay nagbubukas din ng mga query upang maisakatuparan ang mga ito nang mas mahusay, at binabawasan ang gawain na dulot ng mga duplicate na query sa pamamagitan ng muling paggamit ng mga resulta mula sa isang query upang matugunan ang iba pang mga magkaparehong kahilingan.

Ang paggamit ng Go ay nagpapahintulot sa mga developer ng YouTube na maging mas produktibo kaysa sa gusto nila ay gumagamit ng isang mas tradisyonal na wika, sinabi Sougoumarane.

Go code compiles mabilis, sinabi niya. Ang 30,000 na linya ng code sa Vitess ay maaaring maipon sa mga binary sa mga 30 segundo. At, salamat sa isang rich set ng mga aklatan, maraming mga gawain ang hindi nangangailangan ng maraming programming. Halimbawa, sinulat ni Sougoumarane ang 105-line routine na regular na nag-log file, functionality na hindi maaaring nakasulat sa bilang ilang mga linya sa pamamagitan ng paggamit ng C o C ++.

"Ganiyan ang nagpapahayag na Go," sabi ni Sougoumarane. "Ang mga tampok ng wika ay may mahusay na pag-iisip. Tinutulungan ka nila na bumuo ng mga bagay sa isang mas eleganteng paraan kaysa sa mga tradisyunal na wika." Pinuri din ni Sougoumarane ang suporta ng concurrency ni Go, mahalaga para sa paggamit sa mga multicore processor. "Hindi mo dapat mag-alala tungkol sa pamamahala ng mga thread, Pumunta ang mga ito para sa iyo," sabi niya.

Ang wika ay may ilang mga downsides, masyadong, inamin ni Sougoumarane. Maaaring mapabuti ang handling error, halimbawa. Maaaring gamitin ng pag-iiskedyul at pagkolekta ng basura ang ilang trabaho.

Sinabi ni Solomon na, sa paglipas ng panahon, ang Vitess ay magkakaroon ng karagdagang mga tungkulin, tulad ng database ng pagtitiklop at awtomatikong pag-sharding, kaya ang database ay maaaring lumago sa maraming mga server na walang interbensyon mula sa mga administrator.

Sinasaklaw ni Joab Jackson ang software ng enterprise at ang pangkalahatang teknolohiya ng breaking balita para sa

Ang IDG News Service. Sundin si Joab sa Twitter sa @Joab_Jackson. Ang e-mail address ni Joab ay [email protected]