FAQ mabapi le meralo le mosebetsi oa VKontakte

Histori ea pōpo ea VKontakte e ho Wikipedia; e ile ea bolelloa ke Pavel ka boeena. Ho bonahala eka bohle ba se ba ntse ba mo tseba. Mabapi le ba ka hare, meralo le sebopeho sa sebaka sa HighLoad ++ Pavel o ile a mpolella ka 2010. Ho tloha ka nako eo, li-server tse ngata li lutlile, kahoo re tla ntlafatsa tlhahisoleseling: re tla e arola, re ntše tse ka hare, re e lekanye, ebe re sheba sesebelisoa sa VK ho tsoa ponong ea tekheniki.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Alexey Akulovich (AterCattus) moqapi oa morao-rao sehlopheng sa VKontakte. Sengoloa sa tlaleho ena ke karabo e kopaneng ea lipotso tse botsoang khafetsa mabapi le ts'ebetso ea sethala, lits'ebetso, li-server le tšebelisano lipakeng tsa tsona, empa eseng ka nts'etsopele, e leng. ka tshepe. Ka thoko, mabapi le li-database le seo VK e nang le sona ho e-na le hoo, mabapi le ho bokella lifate le ho beha leihlo morero oohle ka kakaretso. Lintlha tlas'a sehiloeng.



Ka lilemo tse fetang tse 'nè ke ntse ke sebetsana le mefuta eohle ea mesebetsi e amanang le backend.

  • Ho kenya, ho boloka, ho sebetsa, ho tsamaisa mecha ea litaba: video, ho phallela ho phelang, molumo, lifoto, litokomane.
  • Meaho ea motheo, sethala, tlhokomelo ea bahlahisi, li-log, li-cache tsa libaka, CDN, proprietary RPC protocol.
  • Ho kopanya le lits'ebeletso tsa kantle: litsebiso tsa push, parsing ea kantle, phepelo ea RSS.
  • Ho thusa basebetsi-'moho ka lipotso tse fapaneng, likarabo tsa tsona tse hlokang ho qoela ka har'a khoutu e sa tsejoeng.

Nakong ena, ke ne ke e-na le letsoho likarolong tse ngata tsa sebaka sa marang-rang. Ke batla ho arolelana phihlelo ena.

Mehaho e akaretsang

Ntho e 'ngoe le e' ngoe, joalo ka tloaelo, e qala ka seva kapa sehlopha sa li-server tse amohelang likopo.

Seva e ka pele

Seva e ka pele e amohela likopo ka HTTPS, RTMP le WSS.

HTTPS - tsena ke likopo tsa mefuta ea mantlha le ea mehala ea sebaka sa marang-rang: vk.com le m.vk.com, le bareki ba bang ba semmuso le ba seng molaong ba API ea rona: bareki ba mehala, manģosa. Re na le kamohelo RTMP-sephethephethe bakeng sa liphatlalatso tsa Live ka li-server tse arohaneng le WSS- likhokahano bakeng sa Streaming API.

Bakeng sa HTTPS le WSS ho li-server ho bohlokoa nginx. Bakeng sa liphatlalatso tsa RTMP, re sa tsoa fetohela ho tharollo ea rona kive, empa e ka holimo ho tekanyo ea tlaleho. Bakeng sa mamello ea liphoso, lisebelisoa tsena li phatlalatsa liaterese tse tloaelehileng tsa IP 'me li sebetsa ka lihlopha e le hore haeba ho na le bothata ho e' ngoe ea lisebelisoa, likōpo tsa basebelisi ha li lahlehe. Bakeng sa HTTPS le WSS, li-server tsona tsena li pata sephethephethe e le hore li nke karolo ea mojaro oa CPU ho tsona.

Re ke ke ra bua ho feta ka WSS le RTMP, empa feela ka likopo tse tloaelehileng tsa HTTPS, tseo hangata li amanang le morero oa webo.

Khutlela morao

Ka morao ho ka pele hangata ho na le li-server tsa backend. Ba sebetsana le likopo tseo seva sa pele se li fumanang ho tsoa ho bareki.

sena li-server tsa kPHP, eo daemon ea HTTP e sebetsang ho eona, hobane HTTPS e se e hlakotsoe. kPHP ke seva e sebetsang mehlala ea prefork: e qala ts'ebetso e kholo, mekhoa e mengata ea bana, e fetisetsa li-sockets ho bona mme ba sebetsana le likōpo tsa bona. Tabeng ena, lits'ebetso ha li qalelle bocha lipakeng tsa kopo e 'ngoe le e' ngoe e tsoang ho mosebelisi, empa feela khutlisetsa boemo ba tsona ho boemo ba mantlha ba boleng ba zero - kopo kamora kopo, ho fapana le ho qala bocha.

Tsamaiso ea mojaro

Li-backend tsohle tsa rona ha se letamo le leholo la mechini e ka sebetsanang le kopo efe kapa efe. Re bona e arotsoe ka lihlopha tse arohaneng: kakaretso, mobile, api, video, staging ... Bothata bo sehlopheng se arohaneng sa mechine bo ke ke ba ama tse ling kaofela. Haeba ho na le mathata ka video, mosebelisi ea mamelang 'mino a ke ke a tseba le ka mathata. Hore na o ka romella kopo efe ho qeto ea nginx ka pele ho latela config.

Pokello ea metric le ho leka-lekanya bocha

Ho utloisisa hore na re hloka ho ba le likoloi tse kae sehlopheng ka seng, re u se ke ua itšetleha ka QPS. Li-backend li fapane, li na le likopo tse fapaneng, kopo e 'ngoe le e' ngoe e na le mathata a fapaneng a ho bala QPS. Ke ka hona re re sebetsa ka mohopolo oa mojaro ho seva ka kakaretso - ho CPU le perf.

Re na le li-server tse joalo tse likete. Seva e 'ngoe le e' ngoe ea 'mele e tsamaisa sehlopha sa kPHP ho sebelisa li-cores kaofela (hobane kPHP e khoele e le 'ngoe).

Seva ea Litaba

CS kapa Content Server ke polokelo. CS ke seva e bolokang lifaele hape e sebetsana le lifaele tse kentsoeng le mefuta eohle ea mesebetsi e lumellanang ea morao-rao eo web frontend e fanang ka eona.

Re na le li-server tse likete tse mashome tse bolokang lifaele. Basebelisi ba rata ho kenya lifaele, 'me re rata ho li boloka le ho li arolelana. Tse ling tsa li-server tsena li koetsoe ke li-server tse khethehileng tsa pu/pp.

pu/pp

Haeba u bula tabo ea marang-rang ho VK, u bone pu/pp.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Pu/pp ke eng? Haeba re koala seva e 'ngoe ka mor'a e' ngoe, ho na le likhetho tse peli tsa ho kenya le ho jarolla faele ho seva e neng e koetsoe: ka ho toba ho pholletsa http://cs100500.userapi.com/path kapa ka seva e mahareng - http://pu.vk.com/c100500/path.

Pu ke lebitso la nalane la ho kenya linepe, 'me pp ke moemeli oa lifoto. Ke hore, seva e 'ngoe ke ea ho kenya linepe,' me e 'ngoe ke ea ho kenya. Hona joale ha se linepe feela tse kentsoeng, empa lebitso le bolokiloe.

Li-server tsena felisa linako tsa HTTPSho tlosa mojaro oa processor polokelong. Hape, kaha lifaele tsa basebelisi li sebetsoa ka har'a li-server tsena, tlhahisoleseling e bolokiloeng mochining ona e ka ba betere. Mohlala, linotlolo tsa encryption tsa HTTPS.

Kaha mechini e koetsoe ke mechini e meng ea rona, re ka khona ho se fane ka li-IP tse "tšoeu" tsa kantle, le fana ka "grey". Ka tsela ena re bolokile letamo la IP mme re netefalitsoe ho sireletsa mechini ho tsoa phihlellong ea kantle - ha ho na IP ea ho kena ho eona.

Boiketlo holim'a li-IP tse arolelanoang. Mabapi le mamello ea liphoso, morero o sebetsa ka mokhoa o ts'oanang - li-server tse 'maloa tsa' mele li na le IP e tloaelehileng ea 'mele,' me hardware e ka pel'a bona e khetha hore na e romela kopo hokae. Ke tla bua ka likhetho tse ling hamorao.

Taba ea khang ke hore tabeng ena moreki o boloka likhokahano tse fokolang. Haeba ho na le IP e tšoanang bakeng sa mechine e mengata - e nang le moeti a le mong: pu.vk.com kapa pp.vk.com, sebatli sa bareki se na le moeli oa palo ea likōpo tsa nako e le 'ngoe ho moeti a le mong. Empa nakong ea HTTP / 2 e fumanehang hohle, ke lumela hore sena ha se sa le bohlokoa hakaalo.

Bofokoli bo totobetseng ba morero ke hore o tlameha ho pompa sephethephethe sohle, e eang polokelong, ka seva se seng. Kaha re pompa sephethephethe ka mechini, ha re khone ho pompa sephethephethe se seholo, mohlala, video, re sebelisa mokhoa o tšoanang. Re e fetisetsa ka kotloloho - khokahano e arohaneng ka kotloloho bakeng sa polokelo e arohaneng bakeng sa video. Re fetisa litaba tse bobebe ka proxy.

Ha se khale haholo re fumane mofuta o ntlafalitsoeng oa proxy. Joale ke tla u bolella hore na li fapane joang le tse tloaelehileng le hore na ke hobane'ng ha sena se hlokahala.

Sun

Ka Loetse 2017, Oracle, e neng e kile ea reka Letsatsi, e lelekisitse palo e kholo ea basebetsi ba Letsatsi. Re ka re ka nako ena khampani e ile ea khaotsa ho ba teng. Ha re khetha lebitso bakeng sa sistimi e ncha, batsamaisi ba rona ba ile ba etsa qeto ea ho lefa sehopotso sa k'hamphani ena mme ba reha sistimi e ncha Sun. Hara rona re mpa re mo bitsa "matsatsi".

FAQ mabapi le meralo le mosebetsi oa VKontakte

pp e bile le mathata a 'maloa. IP e le 'ngoe ka sehlopha - cache e sa sebetseng. Li-server tse 'maloa tsa' mele li arolelana aterese e tloaelehileng ea IP, 'me ha ho na mokhoa oa ho laola hore na kopo e tla ea ho seva sefe. Ka hona, haeba basebelisi ba fapaneng ba tla bakeng sa faele e le 'ngoe, joale haeba ho na le cache ho li-server tsena, faele e qetella e le ka har'a cache ea seva ka seng. Ena ke morero o sa sebetseng hantle, empa ha ho letho le ka etsoang.

Ka lebaka leo - re ke ke ra arolelana litaba, hobane re ke ke ra khetha seva se itseng bakeng sa sehlopha sena - ba na le IP e tloaelehileng. Hape ka mabaka a mang a ka hare re na le ho ne ho sa khonehe ho kenya li-server tse joalo libakeng. Ba ile ba ema feela St. Petersburg.

Ka letsatsi, re ile ra fetola mokhoa oa ho khetha. Joale re na le eona anycast routing: dynamic routing, anycast, daemon ea ho itlhahloba. Seva e 'ngoe le e' ngoe e na le IP ea eona, empa subnet e tloaelehileng. Ntho e 'ngoe le e' ngoe e hlophisitsoe ka tsela ea hore haeba seva se le seng se hlōleha, sephethephethe se hasana ho li-server tse ling tsa sehlopha se le seng ka ho toba. Joale hoa khoneha ho khetha seva e khethehileng, ha ho na caching e sa hlokahaleng, 'me botšepehi ha boa ka ba ameha.

Tšehetso ea boima ba 'mele. Hona joale re ka khona ho kenya mechine ea matla a fapaneng ha ho hlokahala, hape, haeba ho e-na le mathata a nakoana, ho fetola litekanyo tsa "letsatsi" tse sebetsang ho fokotsa mojaro ho tsona, e le hore li "phomotse" 'me li qale ho sebetsa hape.

Ho arola ka id ea litaba. Ntho e qabolang ka ho sharding: hangata re shard litaba e le hore basebelisi ba fapaneng ba ee faeleng e le 'ngoe ka "letsatsi" le tšoanang e le hore ba be le cache e tloaelehileng.

Haufinyane tjena re phatlalalitse sesebelisoa sa "Clover". Ena ke lipotso tsa marang-rang ka phatlalatso e phelang, moo moeti a botsang lipotso 'me basebelisi ba araba ka nako ea sebele, ba khetha likhetho. Sesebelisoa se na le moqoqo moo basebelisi ba ka qoqang. E ka hokela khaso ka nako e le 'ngoe batho ba fetang likete tse 100. Kaofela ba ngola melaetsa e rometsoeng ho barupeluoa bohle, 'me avatar e tla le molaetsa. Haeba batho ba likete tse 100 ba tla bakeng sa avatar e le 'ngoe ka "letsatsi" le le leng, joale ka linako tse ling e ka phalla ka mor'a leru.

E le ho mamella ho phatloha ha likōpo tsa faele e tšoanang, ke bakeng sa mofuta o itseng oa litaba moo re bulelang morero o hlokang kelello o jalang lifaele ho pholletsa le "letsatsi" le fumanehang sebakeng seo.

Letsatsi ka hare

Khutlisetsa proxy ho nginx, cache ebang ke RAM kapa ho li-disk tsa Optane/NVMe tse potlakileng. Mohlala: http://sun4-2.userapi.com/c100500/path - sehokelo sa "letsatsi", se sebakeng sa bone, sehlopha sa bobeli sa seva. E koala faele ea tsela, eo ka 'mele e lutseng ho seva 100500.

sekoahelong

Re eketsa node e 'ngoe hape morerong oa rona oa meralo - tikoloho ea caching.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Ka tlase ke setšoantšo sa moralo libaka tsa polokelo, ho na le tse ka bang 20 tsa tsona. Tsena ke libaka tseo li-cache le "letsatsi" li leng teng, tse ka bolokang sephethephethe ka bobona.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Sena ke caching ea litaba tsa multimedia; ha ho data ea mosebelisi e bolokiloeng mona - mmino feela, video, linepe.

Ho tseba sebaka sa mosebedisi, re re bokella li-prefixes tsa marang-rang tsa BGP tse phatlalalitsoeng libakeng. Tabeng ea ho khutlela morao, re boetse re tlameha ho hlahloba database ea geoip haeba re sitoa ho fumana IP ka li-prefixes. Re khetholla sebaka ka IP ea mosebelisi. Khoutung, re ka sheba sebaka se le seng kapa ho feta tsa mosebelisi - lintlha tseo a leng haufi haholo ho tsona.

Hona e sebetsa?

Re bala ho tuma ha lifaele ka libaka. Ho na le palo ea cache ea libaka moo mosebelisi a leng teng, le sekhetho sa faele - re nka para ena ebe re eketsa lintlha ha re khoasolla.

Ka nako e ts'oanang, bademona - lits'ebeletso libakeng - nako le nako ba tla ho API 'me ba re: "Ke joalo le cache, mphe lethathamo la lifaele tse tsebahalang haholo sebakeng sa heso tse seng li so ho nna. ” API e fana ka bongata ba lifaele tse hlophisitsoeng ka litekanyetso, daemon ea li khoasolla, e li isa libakeng ebe e tsamaisa lifaele ho tloha moo. Ena ke phapang ea mantlha lipakeng tsa pu/pp le Sun ho tsoa ho li-cache: ba fana ka faele ka bo bona hang-hang, leha faele ena e se ka har'a cache, 'me cache e qala ho jarolla file ho eona, ebe e qala ho e khutlisa.

Tabeng ena re fumana litaba tse haufi le basebelisi le ho hasanya mojaro oa marang-rang. Ka mohlala, feela ho tloha cache ea Moscow re aba ho feta 1 Tbit / s nakong ea lihora tse phahameng.

Empa ho na le mathata - li-server tsa cache ha se rabara. Bakeng sa litaba tse tsebahalang haholo, ka linako tse ling ha ho na marang-rang a lekaneng bakeng sa seva e arohaneng. Li-server tsa rona tsa cache ke 40-50 Gbit / s, empa ho na le litaba tse koalang mocha o joalo ka botlalo. Re ntse re lebile ho kenya ts'ebetsong polokelo ea likopi tse fetang bonngoe tsa lifaele tse tsebahalang sebakeng sena. Ke tšepa hore re tla e phethahatsa mafelong a selemo.

Re ile ra sheba meralo e akaretsang.

  • Li-server tse ka pele tse amohelang likopo.
  • E tšehetsa likopo tsa ts'ebetso.
  • Lipolokelo tse koetsoeng ke mefuta e 'meli ea li-proxies.
  • Li-cache tsa libaka.

Ke eng e haellang setšoantšong see? Ehlile, li-database tseo re bolokang data ho tsona.

Databases kapa dienjini

Ha re li bitse li-database, empa lienjineri - Enjine, hobane ha re na li-database ka mokhoa o amoheloang ka kakaretso.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Ena ke tekanyo e hlokahalang. Sena se etsahetse hobane ka 2008-2009, ha VK e ne e e-na le khōlo e phatlohang ea botumo, morero o ile oa sebetsa ka ho feletseng ho MySQL le Memcache 'me ho ne ho e-na le mathata. MySQL e ne e rata ho senya le ho senya lifaele, ka mor'a moo e ne e ke ke ea hlaphoheloa, 'me Memcache e ile ea senyeha butle-butle ts'ebetsong' me ea tlameha ho tsosolosoa.

Hoa etsahala hore morero o ntseng o eketseha o ne o e-na le polokelo e tsitsitseng, e senyang data, le cache, e fokotsang lebelo. Maemong a joalo, ho thata ho hlahisa morero o ntseng o hōla. Ho ile ha etsoa qeto ea ho leka ho ngola bocha lintho tsa bohlokoa tseo morero o neng o lebisitsoe ho tsona libaesekeleng tsa rōna.

Tharollo e ile ea atleha. Ho ne ho e-na le monyetla oa ho etsa sena, hammoho le tlhokahalo e feteletseng, hobane mekhoa e meng ea ho phahamisa e ne e le sieo ka nako eo. Ho ne ho se na li-database tse ngata, NoSQL e ne e le sieo, ho ne ho e-na le MySQL, Memcache, PostrgreSQL feela - 'me ke eona.

Tshebetso e akaretsang. Nts'etsopele e ne e etelletsoe pele ke sehlopha sa rona sa bahlahisi ba C mme tsohle li entsoe ka mokhoa o ts'oanang. Ho sa tsotelehe enjene, kaofela ba ne ba e-na le mofuta o tšoanang oa faele o ngoliloeng ho disk, methati e ts'oanang ea ho qala, matšoao a sebetsitsoeng ka tsela e ts'oanang, 'me a itšoere ka mokhoa o ts'oanang ha ho hlaha maemo le mathata. Ka kholo ea lienjineri, ho bonolo hore batsamaisi ba sebetse sistimi - ha ho na zoo e lokelang ho hlokomeloa, 'me ba tlameha ho ithuta hape mokhoa oa ho sebelisa database e' ngoe le e 'ngoe e ncha ea mokha oa boraro, e entseng hore ho khonehe ho eketsa kapele le ka mokhoa o bonolo. palo ea bona.

Mefuta ea lienjineri

Sehlopha se ile sa ngola lienjineri tse ngata haholo. Mona ke tse ling tsa tsona: motsoalle, malebela, setšoantšo, ipdb, mangolo, manane, li-log, memcached, meowdb, litaba, nostradamus, foto, manane a bapaloang, pmemcached, sandbox, batla, polokelo, lintho tseo u li ratang, mesebetsi, ...

Bakeng sa mosebetsi o mong le o mong o hlokang sebopeho se itseng sa data kapa o sebetsana le likopo tse sa tloaelehang, sehlopha sa C se ngola enjine e ncha. Hobaneng ho se joalo.

Re na le enjene e fapaneng hopotsoe, e tšoanang le e tloaelehileng, empa e na le lintho tse ngata tse monate, 'me e sa fokotsehe. Eseng ClickHouse, empa e boetse e sebetsa. E fumaneha ka thoko pmemcached - sena ke phehellang memcached, e ka bolokang data ho disk, ho feta moo, ho feta ho lekana le RAM, e le hore u se ke ua lahleheloa ke data ha u qala hape. Ho na le lienjineri tse fapaneng tsa mesebetsi ea motho ka mong: mela, manane, lihlopha - tsohle tseo morero oa rona o li hlokang.

Lihlopha

Ho latela pono ea khoutu, ha ho na lebaka la ho nahana ka lienjineri kapa li-database e le lits'ebetso, mekhatlo kapa maemo. Khoutu e sebetsa ka ho khetheha le lihlopha, ka lihlopha tsa lienjine - mofuta o le mong sehlopheng ka seng. Ha re re ho na le sehlopha sa memcached - ke sehlopha sa mechini feela.

Khoutu ha e hloke ho tseba sebaka, boholo, kapa palo ea li-server ho hang. O ea sehlopheng a sebelisa sekhetho se itseng.

Hore sena se sebetse, o hloka ho eketsa setheo se le seng se teng lipakeng tsa khoutu le lienjine - proxy.

Moemeli oa RPC

Moemeli bese e kopanyang, eo hoo e batlang e le sebaka sohle se sebetsang. Ka nako e tšoanang re na le ha ho na litšebeletso tse sibolotsoeng - ho e-na le hoo, ho na le config bakeng sa moemeli enoa, ea tsebang sebaka sa lihlopha tsohle le li-shards tsohle tsa sehlopha sena. Sena ke seo li-admins li se etsang.

Baetsi ba mananeo ha ba tsotelle hore na ke bokae, kae le hore na ke bokae - ba ea sehlopheng feela. Sena se re lumella haholo. Ha a fumana kopo, moemeli o khutlisetsa kopo, a tseba hore na - e ikhethela sena ka boeona.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Tabeng ena, proxy ke ntlha ea tšireletso khahlanong le ho hlōleha ha litšebeletso. Haeba enjene e 'ngoe e fokotsa lebelo kapa e senyeha, joale moemeli o utloisisa sena mme o arabela ho latela lehlakore la bareki. Sena se u nolofalletsa ho tlosa nako ea nako - khoutu ha e emele hore enjene e arabe, empa e utloisisa hore ha e sebetse 'me e hloka ho itšoara ka tsela e fapaneng. Khoutu e tlameha ho lokisetsoa taba ea hore li-database ha li sebetse kamehla.

Ts'ebetsong e khethehileng

Ka linako tse ling re ntse re hlile re batla ho ba le mofuta o mong oa tharollo e seng ea maemo joaloka enjene. Ka nako e ts'oanang, ho ile ha etsoa qeto ea ho se sebelise rpc-proxy ea rona, e entsoeng ka ho khetheha bakeng sa lienjineri tsa rona, empa ho etsa moemeli ea arohaneng bakeng sa mosebetsi ona.

Bakeng sa MySQL, eo re ntseng re e-na le eona mona le mane, re sebelisa db-proxy, le bakeng sa ClickHouse - Kittenhouse.

E sebetsa ka kakaretso tjena. Ho na le seva se itseng, se tsamaisa kPHP, Go, Python - ka kakaretso, khoutu efe kapa efe e ka sebelisang protocol ea rona ea RPC. Khoutu e sebetsa sebakeng sa hau ho proxy ea RPC - seva se seng le se seng moo khoutu e leng teng e tsamaisa moemeli oa eona oa lehae. Ka kopo, moemeli oa utloisisa moo a lokelang ho ea teng.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Haeba enjene e le 'ngoe e batla ho ea ho e' ngoe, esita le haeba e le moahelani, e feta ka moemeli, hobane moahelani a ka ba setsing se seng sa data. Enjene ha ea lokela ho itšetleha ka ho tseba sebaka sa ntho leha e le efe ntle le eona - ena ke tharollo ea rona e tloaelehileng. Empa ho hlakile hore ho na le mekhelo :)

Mohlala oa TL-scheme ho latela hore lienjineri tsohle li sebetsa.

memcache.not_found                                = memcache.Value;
memcache.strvalue	value:string flags:int = memcache.Value;
memcache.addOrIncr key:string flags:int delay:int value:long = memcache.Value;

tasks.task
    fields_mask:#
    flags:int
    tag:%(Vector int)
    data:string
    id:fields_mask.0?long
    retries:fields_mask.1?int
    scheduled_time:fields_mask.2?int
    deadline:fields_mask.3?int
    = tasks.Task;
 
tasks.addTask type_name:string queue_id:%(Vector int) task:%tasks.Task = Long;

Ena ke protocol ea binary, analogue e haufi ka ho fetisisa e leng protobuf. The schema e hlalosa esale pele masimo a boikhethelo, mefuta e rarahaneng - likeketso tsa li-scalar tse hahelletsoeng, le lipotso. Tsohle li sebetsa ho latela protocol ena.

RPC holim'a TL holim'a TCP/UDP… UDP?

Re na le protocol ea RPC bakeng sa ho etsa likopo tsa enjene e sebetsang ka holim'a morero oa TL. Sena sohle se sebetsa holim'a khokahano ea TCP/UDP. TCP ea utloahala, empa ke hobane'ng ha re hloka UDP hangata?

UDP e thusa qoba bothata ba palo e kholo ea likhokahano lipakeng tsa li-server. Haeba seva e 'ngoe le e' ngoe e na le proxy ea RPC 'me, ka kakaretso, e ka ea ho enjene leha e le efe, joale ho na le mashome a likete a likhokahano tsa TCP ka seva. Mojaro o teng, empa ha o na thuso. Tabeng ea UDP bothata bona ha bo eo.

Ha ho ts'oarana ka matsoho ea TCP e sa hlokeng letho. Ena ke bothata bo tloaelehileng: ha enjene e ncha kapa seva se secha se qalisoa, li-connections tse ngata tsa TCP li thehoa hang-hang. Bakeng sa likopo tse nyenyane tse bobebe, mohlala, UDP payload, puisano eohle pakeng tsa khoutu le enjene ke lipakete tse peli tsa UDP: e ’ngoe e fofela nģa e ’ngoe, ea bobeli ka ho e ’ngoe. Leeto le le leng la ho khutla - mme khoutu e fumane karabo ho tsoa ho enjene ntle le ho ts'oarana ka letsoho.

E, tsohle li sebetsa feela ka peresente e nyane haholo ya tahlehelo ya pakete. Protocol e na le ts'ehetso bakeng sa li-retransmits le nako, empa haeba re lahleheloa haholo, re tla fumana hoo e ka bang TCP, e se nang phaello. Ha re khanne UDP ho tšela maoatle.

Re na le li-server tse joalo tse likete, 'me leano le ts'oana: pakete ea lienjineri e kentsoe ho seva se seng le se seng sa' mele. Hangata li na le khoele e le 'ngoe ho matha kapele kamoo ho ka khonehang ntle le ho thibela, 'me li arotsoe e le tharollo ea khoele e le' ngoe. Ka nako e ts'oanang, ha re na letho le ka tšeptjoang ho feta lienjiniere tsena, 'me tlhokomelo e ngata e lefshoa ho boloka boitsebiso bo tsitsitseng.

Ho boloka boitsebiso bo tsitsitseng

Lienjiniere li ngola li-binlogs. Binlog ke faele eo qetellong ea eona ho kenyelletsoang ketsahalo ea phetoho ea boemo kapa data. Litharollong tse fapaneng e bitsoa ka tsela e fapaneng: binary log, PHALANG, AOF, empa molao-motheo oa tšoana.

Ho thibela enjene ho bala hape binlog eohle ka lilemo tse ngata ha e qala hape, lienjineri lia ngola snapshots - boemo ba hona joale. Haeba ho hlokahala, ba bala ho eona pele, ebe ba qeta ho bala ho tsoa ho binlog. Li-binlogs kaofela li ngotsoe ka mokhoa o tšoanang oa binary - ho latela morero oa TL, e le hore batsamaisi ba ka li tsamaisa ka ho lekana ba sebelisa lisebelisoa tsa bona. Ha ho na tlhokahalo e joalo ea li-snapshots. Ho na le hlooho e akaretsang e bontšang hore na setšoantšo sa mang e leng int, boselamose ba enjene, le hore na ke 'mele ofe o seng oa bohlokoa ho mang kapa mang. Hona ke bothata ka enjene e rekotileng senepe.

Ke tla hlalosa ka potlako molao-motheo oa ts'ebetso. Ho na le seva eo enjene e sebetsang ho eona. O bula binlog e ncha e se nang letho bakeng sa ho ngola mme o ngola ketsahalo bakeng sa phetoho ho eona.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Ka nako e 'ngoe, o etsa qeto ea ho nka snapshot ka boeena, kapa o fumana letšoao. Seva e etsa faele e ncha, e ngola boemo bohle ba eona ho eona, e eketsa boholo ba hona joale ba binlog - offset - ho fihlela qetellong ea faele, 'me e tsoela pele ho ngola ho ea pele. Binlog e ncha ha e so thehoe.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Ka nako e 'ngoe, ha enjene e qala hape, ho tla ba le binlog le snapshot ho disk. Enjene e bala senepe kaofela ebe e phahamisa boemo ba eona ntlheng e itseng.

FAQ mabapi le meralo le mosebetsi oa VKontakte

E bala boemo bo neng bo le nakong eo senepe se etsoang le boholo ba binlog.

FAQ mabapi le meralo le mosebetsi oa VKontakte

E bala pheletso ea binlog ho fumana boemo ba hajoale mme e tsoela pele ho ngola liketsahalo tse ling. Ena ke morero o bonolo; lienjineri tsohle tsa rona li sebetsa ho latela eona.

Katiso ya data

Ka lebaka leo, phetisetso ea data ho rona polelo-based - re ngola ho binlog ha ho na leqephe le fetohang, empa e leng fetola likopo. E ts'oana haholo le se tlang holim'a marang-rang, e fetotsoe hanyenyane feela.

Morero o tšoanang ha o sebelisoe feela bakeng sa ho pheta-pheta, empa hape ho etsa li-backups. Re na le enjene - setsebi sa ho ngola se ngolla binlog. Sebakeng sefe kapa sefe moo li-admins li e behileng teng, binlog ena e kopitsoa, ​​'me ke eona - re na le bekapo.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Haeba ho hlokahala ho bala replicaHo fokotsa mojaro oa ho bala oa CPU, enjene ea ho bala e qalisoa feela, e balang pheletso ea binlog mme e phethahatsa litaelo tsena sebakeng sa heno.

Lag mona e nyane haholo, 'me hoa khoneha ho fumana hore na replica e salla bokae ka mor'a monghali.

Ho arola data ho moemeli oa RPC

Ho sharding ho sebetsa joang? Moemeli o utloisisa joang hore na o lokela ho romela sehlopha sefe? Khoutu ha e re: "Romela li-shards tse 15!" - che, sena se etsoa ke moemeli.

Morero o bonolo ke oa pele - nomoro ea pele ho kopo.

get(photo100_500) => 100 % N.

Ona ke mohlala bakeng sa protocol e bonolo ea mongolo oa memcached, empa, ehlile, lipotso li ka ba thata le ho hlophisoa. Mohlala o nka nomoro ea pele potsong le e setseng ha e aroloa ka boholo ba sehlopha.

Sena se na le thuso ha re batla ho ba le sebaka sa data sa setheo se le seng. Ha re re 100 ke ID ea mosebelisi kapa ea sehlopha, 'me re batla hore lintlha tsohle tsa setheo se le seng li be sebakeng se le seng bakeng sa lipotso tse thata.

Haeba re sa tsotelle hore na likopo li phatlalatsoa joang ka har'a sehlopha, ho na le khetho e 'ngoe - ho qhekella karolo eohle.

hash(photo100_500) => 3539886280 % N

Re boetse re fumana hash, karolo e setseng ea karohano le nomoro ea shard.

Likhetho tsena ka bobeli li sebetsa feela haeba re itokiselitse taba ea hore ha re eketsa boholo ba sehlopha, re tla e arola kapa re e eketse ka makhetlo a mangata. Ka mohlala, re ne re e-na le li-shards tse 16, ha re na tse lekaneng, re batla tse ling - re ka fumana 32 ka mokhoa o sireletsehileng ntle le nako ea ho phomola. Haeba re batla ho eketsa eseng li-multiples, ho tla ba le nako ea ho theoha, hobane re ke ke ra khona ho arola ntho e 'ngoe le e' ngoe ka nepo ntle le tahlehelo. Likhetho tsena li na le thuso, empa eseng kamehla.

Haeba re hloka ho eketsa kapa ho tlosa palo e itseng ea li-server, re e sebelisa Hashing e lumellanang lesale la Ketama. Empa ka nako e ts'oanang, re lahleheloa ka ho feletseng ke sebaka sa data; re tlameha ho kopanya kopo ho sehlopha e le hore karolo e 'ngoe le e' ngoe e khutlise karabo ea eona e nyenyane, ebe o kopanya likarabo ho moemeli.

Ho na le likopo tse khethehileng haholo. E shebahala tjena: Moemeli oa RPC o amohela kopo, o khetha hore na o tla ea sehlopheng sefe mme o khetha shard. Ebe ho na le li-masters tsa ho ngola, kapa, haeba sehlopha se na le tšehetso ea replica, se romella setšoantšong ha se batloa. Proxy e etsa tsena tsohle.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Likota

Re ngola lifate ka litsela tse 'maloa. E totobetseng ka ho fetisisa le e bonolo ke ngola lintlha ho memcache.

ring-buffer: prefix.idx = line

Ho na le sehlongwapele sa senotlolo - lebitso la logi, mola, mme ho na le boholo ba logi ena - palo ea mela. Re nka palo e sa reroang ho tloha ho 0 ho ea ho palo ea mela ho tlosa 1. Senotlolo sa memcache ke sehlongoapele se hokahaneng le nomoro ena e sa reroang. Re boloka mola oa log le nako ea hona joale ho boleng.

Ha ho hlokahala ho bala likutu, rea li phetha Fumana Multi linotlolo tsohle, tse hlophisoang ka nako, 'me kahoo fumana tlaleho ea tlhahiso ka nako ea sebele. Morero o sebelisoa ha o hloka ho lokisa ntho e itseng tlhahisong ka nako ea sebele, ntle le ho senya letho, ntle le ho emisa kapa ho lumella sephethephethe ho mechine e meng, empa log ena ha e tšoarelle nako e telele.

Bakeng sa polokelo e tšepahalang ea likutu re na le enjene logs-enjene. Ke ka lebaka lena e ileng ea bōptjoa, 'me e sebelisoa haholo ka lihlopha tse ngata. Sehlopha se seholohali seo ke se tsebang sa mabenkele a 600 TB a likutu tse pakiloeng.

Enjene e tsofetse haholo, ho na le lihlopha tse seng li le lilemo li 6-7. Ho na le mathata ka eona ao re lekang ho a rarolla, ka mohlala, re ile ra qala ho sebelisa ClickHouse ka mafolofolo ho boloka lifate.

Ho bokella lintlha ho ClickHouse

Setšoantšo sena se bontša tsela eo re tsamaeang ka eona lienjineng tsa rona.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Ho na le khoutu e eang sebakeng sa heno ka RPC ho ea ho proxy ea RPC, 'me e utloisisa hore na e ea enjene hokae. Haeba re batla ho ngola lits'oants'o ho ClickHouse, re hloka ho fetola likarolo tse peli morerong ona:

  • tlosa enjene e 'ngoe ka ClickHouse;
  • nkela sebaka sa projeke ea RPC, e sa khoneng ho fihlella ClickHouse, ka tharollo e ka khonang, le ka RPC.

Enjene e bonolo - re e nkela sebaka ka seva kapa sehlopha sa li-server tse nang le ClickHouse.

Le ho ea ClickHouse, re ile ra etsa joalo KittenHouse. Haeba re tloha ka kotloloho ho tloha KittenHouse ho ea ClickHouse, e ke ke ea sebetsa. Le ntle le likopo, e eketsa ho tsoa ho likhokahano tsa HTTP tsa palo e kholo ea mechini. E le hore morero o sebetse, ho seva se nang le ClickHouse moemeli oa lehae oa reverse o phahamisitsoe, e ngotsoeng ka tsela eo e ka mamellang meqolo e hlokahalang ea likhokahano. E ka boela ea boloka data ka hare ho eona ka mokhoa o tšepahalang.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Ka linako tse ling ha re batle ho kenya ts'ebetsong morero oa RPC ka tharollo e sa tloaelehang, mohlala, ka nginx. Ka hona, KittenHouse e na le bokhoni ba ho amohela li-log ka UDP.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Haeba motho ea rometseng le moamoheli oa li-log a sebetsa mochining o le mong, monyetla oa ho lahleheloa ke pakete ea UDP ka har'a moamoheli oa lehae o tlase haholo. E le ho sekisetsa pakeng tsa tlhokahalo ea ho kenya ts'ebetsong RPC ka tharollo ea motho oa boraro le ho tšepahala, re sebelisa feela ho romela UDP. Re tla khutlela morerong ona hamorao.

Tlhokomelo

Re na le mefuta e 'meli ea li-log: tse bokelletsoeng ke batsamaisi ho li-server tsa bona le tse ngotsoeng ke baetsi ba khoutu. Li tsamaisana le mefuta e 'meli ea metrics: tsamaiso le sehlahisoa.

Melemo ea sistimi

E sebetsa ho li-server tsohle tsa rona netdata, e bokellang lipalo-palo le ho li romela ho Khabone ea Graphite. Ka hona, ClickHouse e sebelisoa e le mokhoa oa ho boloka, eseng Whisper, mohlala. Haeba ho hlokahala, o ka bala ka kotloloho ho tsoa ho ClickHouse, kapa oa sebelisa grafana bakeng sa metrics, kerafo le litlaleho. Joaloka bahlahisi, re na le phihlello e lekaneng ho Netdata le Grafana.

Metrics ea lihlahisoa

Bakeng sa boiketlo, re ngotse lintho tse ngata. Mohlala, ho na le sete ea mesebetsi e tloaelehileng e u lumellang hore u ngole lipalo, UniqueCounts litekanyetso ho lipalo-palo, tse romelloang kae kae ho feta.

statlogsCountEvent   ( ‘stat_name’,            $key1, $key2, …)
statlogsUniqueCount ( ‘stat_name’, $uid,    $key1, $key2, …)
statlogsValuetEvent  ( ‘stat_name’, $value, $key1, $key2, …)

$stats = statlogsStatData($params)

Ka mor'a moo, re ka sebelisa lihlopha le lihlopha tsa lihlopha le ho etsa ntho e 'ngoe le e' ngoe eo re e batlang ho tloha lipalo-palo - ho haha ​​​​li-graph, ho lokisa li-Watchdogs.

Re ngola haholo metrics tse ngata palo ea liketsahalo e tsoa ho limilione tse likete tse 600 ho isa ho 1 trillion ka letsatsi. Leha ho le joalo, re batla ho li boloka bonyane lilemo tse 'maloaho utloisisa mekhoa ea metrics. Ho li kopanya kaofela ke bothata bo boholo boo re e-so bo rarolle. Ke tla u bolella hore na e ntse e sebetsa joang lilemong tse 'maloa tse fetileng.

Re na le mesebetsi e ngolang lipalo tsena ho memcache ea lehaeho fokotsa palo ya dikeno. Hang ka nako e khuts'oane e qalileng sebakeng sa heno lipalo-palo-daemon e bokella direkoto tsohle. Ka mor'a moo, modemona o kopanya metrics ka mekhahlelo e 'meli ea li-server ba bokelli ba likutu, e kopanyang lipalo-palo ho tsoa ho sehlopha sa mechine ea rona e le hore lera le ka morao ho eona le se ke la shoa.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Haeba ho hlokahala, re ka ngolla ka ho toba ba bokellang li-logs.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Empa ho ngola ho tloha khoutu ka ho toba ho babokelli, ho feta stas-daemom, ke tharollo e mpe haholo hobane e eketsa mojaro ho mokelli. Tharollo e loketse feela haeba ka mabaka a itseng re ke ke ra phahamisa memcache stats-daemon mochine, kapa e ile ea soahlamana 'me ra ea ka ho toba.

Ka mor'a moo, ba bokelli ba li-log ba kopanya lipalo-palo meoDB - ena ke database ea rona, e ka bolokang metrics.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Ebe re ka etsa likhetho tsa binary "haufi le SQL" ho tsoa ho khoutu.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Hlahloba

Lehlabuleng la 2018, re ne re e-na le hackathon e ka hare, 'me khopolo e ile ea tla ho leka ho fetola karolo e khubelu ea setšoantšo ka ntho e ka bolokang metrics ho ClickHouse. Re na le lits'oants'o ho ClickHouse - hobaneng u sa e leke?

FAQ mabapi le meralo le mosebetsi oa VKontakte

Re ne re e-na le leano le neng le ngola likutu ka KittenHouse.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Re ile ra etsa qeto eketsa "*House" e 'ngoe setšoantšong, e tla amohela metrics hantle ka sebopeho ha khoutu ea rona e li ngola ka UDP. Ebe *Ntlo ena e li fetola li-insert, joalo ka likutu, tseo KittenHouse e li utloisisang. A ka isa lits'oants'o tsena ka mokhoa o phethahetseng ho ClickHouse, e lokelang ho khona ho li bala.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Morero o nang le memcache, stats-daemon le logs-collectors database o nkeloa sebaka ke ona.

FAQ mabapi le meralo le mosebetsi oa VKontakte

Morero o nang le memcache, stats-daemon le logs-collectors database o nkeloa sebaka ke ona.

  • Ho na le molaetsa o tsoang ho khoutu mona, o ngotsoeng sebakeng sa heno ho StatsHouse.
  • StatsHouse e ngola metrics ea UDP, e seng e fetotsoe ho kenya SQL, ho KittenHouse ka lihlopha.
  • KittenHouse e li romella ho ClickHouse.
  • Haeba re batla ho li bala, joale re li bala re feta StatsHouse - ka kotloloho ho tloha ClickHouse re sebelisa SQL e tloaelehileng.

E ntse e le teng teko, empa re rata hore na ho etsahala joang. Haeba re lokisa mathata ka morero, mohlomong re tla fetohela ho eona ka ho feletseng. Ka bonna, ke tšepa joalo.

Scheme ha e boloke tshepe. Ho hlokahala li-server tse fokolang, li-stats-daemons tsa lehae le ba bokelli ba li-logs ha ba hlokehe, empa ClickHouse e hloka seva e kholoanyane ho feta ea morero oa hajoale. Ho hlokahala li-server tse fokolang, empa li tlameha ho ba theko e boima le ho ba matla haholoanyane.

Tsamaisa

Taba ea pele, a re shebeng phepelo ea PHP. Re ntse re ntshetsa pele ka git: sebelisa GitLab и TeamCity bakeng sa ho tsamaisoa. Makala a nts'etsopele a kopanngoa ho ba lekala le leholo, ho tloha ho master bakeng sa tlhahlobo a kopanngoa ho ba sethaleng, le ho tloha sethaleng ho ea ho tlhahiso.

Pele ho romelloa, lekala la hona joale la tlhahiso le le fetileng le nkiloe, 'me lifaele tse fapaneng li nkoa ho tsona - liphetoho: li bōpiloe, li hlakotsoe, li fetotsoe. Phetoho ena e tlalehiloe ka har'a binlog ea enjene e khethehileng ea copyfast, e ka fetolang liphetoho ho likepe tsa rona kaofela tsa seva. Se sebelisoang mona ha se ho kopitsa ka kotloloho, empa phetiso ya lesebo, ha seva e le 'ngoe e romela liphetoho ho baahisani ba eona ba haufi-ufi, bao ho baahelani ba bona, joalo-joalo. Sena se o lumella ho nchafatsa khoutu ka mashome le likarolo tsa metsotsoana ho pholletsa le likepe tsohle. Ha phetoho e fihla ho replica ea lehae, e sebelisa li-patches tsena ho eona tsamaiso ea faele ea lehae. Rollback e boetse e etsoa ho ea ka morero o tšoanang.

Re boetse re tsamaisa kPHP haholo mme e boetse e na le ntlafatso ea eona ho git ho latela setšoantšo se ka holimo. Ho tloha ka sena HTTP seva binary, joale re ke ke ra hlahisa diff - the release binary boima ba makholo a MB. Ka hona, ho na le khetho e 'ngoe mona - phetolelo e ngoletsoe binlog copyfast. Ka mohaho o mong le o mong oa eketseha, 'me nakong ea rollback e boetse e eketseha. Phetolelo e fetoletsoeng ho li-server. Bakopi ba lehae ba bona hore mofuta o mocha o kene binlog, 'me ka phetiso e tšoanang ea lesebo ba inkela mofuta oa morao-rao oa binary, ntle le ho khathatsa seva sa rona se seholo, empa ka hloko ba jala mojaro ho pholletsa le marang-rang. Se latelang ho qala bocha ka mohau bakeng sa mofuta o mocha.

Bakeng sa lienjineri tsa rona, tseo hape e leng li-binary, leano le ts'oana haholo:

  • lekala la git master;
  • binary ka .deb;
  • phetolelo e ngoletsoe binlog copyfast;
  • e fetisetsoa ho li-server;
  • seva e ntša .dep e ncha;
  • dpkg ke;
  • ho qala bocha ka bokhabane ho mofuta o mocha.

Phapang ke hore binary ea rona e phuthetsoe ka har'a li-archives .deb, 'me ha ba pompa ba tsoa dpkg ke li behiloe tsamaisong. Hobaneng kPHP e sebelisoa e le binary, 'me lienjine li sebelisoa joalo ka dpkg? Ho etsahetse jwalo. E ea sebetsa - u se ke ua e ama.

Lihokela tse sebetsang:

Alexey Akulovich ke e mong oa bao, e le karolo ea Komiti ea Lenaneo, ba thusang PHP Russia ka May 17th e tla ba ketsahalo e kholo ka ho fetisisa bakeng sa baetsi ba PHP mehleng ea morao tjena. Sheba hore na re na le PC e pholileng, eng dibui (tse peli tsa tsona li ntse li ntlafatsa PHP core!) - ho bonahala eka ke ntho eo u ke keng ua e fosa ha u ngola PHP.

Source: www.habr.com

Eketsa ka tlhaloso