FAQ ile fausaga ma galuega a VKontakte

O le talafaasolopito o le foafoaina o le VKontakte i luga o Wikipedia, na taʻu mai e Pavel lava ia. E foliga mai ua uma ona iloa o ia e tagata uma. E uiga i totonu, fausaga ma fausaga o le nofoaga i luga o HighLoad++ Pavel taʻu mai ia te aʻu i tua i le 2010. O le tele o 'auʻaunaga ua faʻafefe talu mai lena taimi, o lea o le a matou faʻafouina faʻamatalaga: matou te vaʻaia, ave i fafo totonu, fua, ma vaʻai i le masini VK mai se vaaiga faʻapitoa.

FAQ ile fausaga ma galuega a VKontakte

Alexey Akulovich (AterCattus) backend developer i le VKontakte team. O faʻamaumauga o lenei lipoti o se tali tuʻufaʻatasia i fesili e masani ona fesiligia e uiga i le faʻaogaina o le fausaga, atinaʻe, 'auʻaunaga ma fegalegaleaiga i le va oi latou, ae le o le atinaʻe, e pei o e uiga i le uamea. E ese mai, e uiga i faʻamaumauga ma mea o loʻo i ai i le VK, e uiga i le aoina o ogalaau ma mataʻituina le poloketi atoa. Fa'amatalaga i lalo o le tipi.



Mo le silia ma le fa tausaga sa ou feagai ai ma ituaiga uma o galuega e fesoʻotaʻi ma le pito i tua.

  • Tuuina atu, teuina, faʻagaioiina, tufatufaina atu o ala o faasalalauga: vitio, faʻasalalau ola, leo, ata, pepa.
  • Atinaʻe, faʻavae, mataʻituina o le atinaʻe, ogalaau, faʻaoga faʻaitulagi, CDN, faʻapitoa RPC protocol.
  • Tu'ufa'atasiga ma 'au'aunaga i fafo: fa'asalalauga fa'asalalauga, va'aiga feso'ota'iga i fafo, fafaga RSS.
  • Fesoasoani i uo i fesili eseese, o tali e manaʻomia ai le suʻeina i le le iloa code.

I le taimi lea, sa ou lima i le tele o vaega o le saite. Ou te fia faasoa atu lenei aafiaga.

fausaga lautele

O mea uma, e pei ona masani ai, e amata i se 'auʻaunaga poʻo se vaega o 'auʻaunaga e talia talosaga.

Server pito i luma

E talia e le server pito i luma talosaga e ala i le HTTPS, RTMP ma le WSS.

HTTPS - o talosaga nei mo le autu ma le telefoni feaveaʻi i luga o le upega tafaʻilagi: vk.com ma m.vk.com, ma isi tagata aloaʻia ma le le aloaia o la matou API: tagata faʻatau feaveaʻi, avefeau. E iai le matou taligamalo RTMP-fefa'ataua'iga mo fa'asalalauga Live fa'atasi ai ma 'au'auna i luma ma WSS- so'oga mo Streaming API.

Mo HTTPS ma WSS i luga o sapalai e aoga nginx. Mo fa'asalalauga RTMP, na matou sui talu ai nei i la matou lava fofo kive, ae e sili atu i le lautele o le lipoti. Mo le fa'apalepale fa'aletonu, o nei 'au'aunaga latou te fa'asalalau tuatusi IP masani ma galulue i vaega ina ia afai ei ai se fa'afitauli i se tasi o 'au'aunaga, e le'o leiloa talosaga a tagata fa'aoga. Mo HTTPS ma WSS, o nei lava 'auʻaunaga e faʻapipiʻiina fefaʻatauaiga ina ia mafai ai ona ave se vaega o le CPU uta i luga o latou lava.

Matou te le toe talanoa atili e uiga i le WSS ma le RTMP, ae naʻo faʻatatau i talosaga HTTPS masani, lea e masani ona fesoʻotaʻi ma se upega tafaʻilagi.

Backend

I tua o le pito i luma e masani lava ona i ai sapalai pito i tua. Latou te faʻagasolo talosaga e maua e le server pito i luma mai tagata faʻatau.

lea kPHP servers, lea o loʻo tamoʻe ai le HTTP daemon, ona o le HTTPS ua uma ona decrypted. kPHP o se 'au'aunaga o lo'o fa'aauau fa'ata'ita'iga prefork: amata se faiga matai, se vaega o faiga a tamaiti, pasi faʻalogo faʻalogo ia i latou ma latou faʻatautaia a latou talosaga. I lenei tulaga, e le toe amataina faiga i le va o talosaga taʻitasi mai le tagata faʻaoga, ae naʻo le toe setiina o latou tulaga i le tulaga muamua zero-value - talosaga pe a uma le talosaga, nai lo le toe amataina.

Avega tufatufa

O a matou pito i tua uma e le o se vaitaele tele o masini e mafai ona faʻatautaia soʻo se talosaga. Tatou i latou vaevaeina i vaega eseese: lautele, feaveaʻi, api, vitio, faʻataʻitaʻiga ... O le faʻafitauli i luga o se isi vaega o masini e le afaina ai isi uma. I le tulaga o faʻafitauli i le vitio, o le tagata faʻaoga e faʻalogologo i musika o le a le iloa e uiga i faʻafitauli. O le fea pito i tua e lafo ai le talosaga e filifili e le nginx i luma e tusa ai ma le config.

Aoina ma toe fa'apaleni

Ina ia malamalama i le tele o taavale tatou te manaomia i vaega taitasi, tatou aua le faalagolago ile QPS. E eseese pito i tua, e eseese a latou talosaga, o talosaga taʻitasi e ese le lavelave o le fuafuaina o le QPS. O le mafuaaga lena tatou matou te galulue ma le manatu o le uta i luga o le 'auʻaunaga atoa - i luga o le PPU ma le perf.

E faitau afe a matou tautua faapena. O lo'o fa'atautaia e 'au'aunaga fa'aletino ta'itasi se vaega kPHP e toe fa'aaogaina ai 'autu uma (ona o le kPHP e tasi le filo).

Fa'atonuga o mea

CS poʻo le Content Server o se teuina. O le CS o se 'au'aunaga e teu faila ma fa'agasolo fo'i faila fa'apipi'i ma so'o se fa'asologa o tala'aga e tu'uina atu i ai e le 'upega tafa'ilagi autu.

E i ai a matou fiasefulu afe o sapalai faʻapitoa e teuina faila. E fiafia tagata fa'aoga e lafo faila, ma matou te fiafia e teu ma fa'asoa. O nisi o nei 'au'aunaga e tapuni e fa'apitoa pu/pp servers.

pu/pp

Afai na e tatalaina le upega tafailagi i le VK, na e vaʻai i le pu/pp.

FAQ ile fausaga ma galuega a VKontakte

O le a le pu/pp? Afai tatou te tapunia le tasi server ma le isi, ona lua lea o filifiliga mo le faʻapipiʻiina ma le siiina o se faila i le server na tapunia: tuusao e ala i http://cs100500.userapi.com/path poʻo e ala i le server intermediate - http://pu.vk.com/c100500/path.

Pu o le igoa fa'asolopito mo le lafoina o ata, ma o le pp o le sui ata. O lona uiga, o le tasi server e mo le lafoina o ata, ma le isi e mo le lafoina. O lea la e le gata o ata ua utaina, ae ua faasaoina le igoa.

O nei 'au'aunaga faamutaina sauniga HTTPSe aveese le uta processor mai le teuina. E le gata i lea, talu ai o faila faila o loʻo faʻaogaina i luga o nei 'auʻaunaga, o le itiiti ifo o faʻamatalaga maaleale o loʻo teuina i luga o nei masini, o le sili atu lea. Mo se faʻataʻitaʻiga, HTTPS encryption ki.

Talu ai o masini e tapunia e isi masini, e mafai ona matou gafatia e le tuʻuina atu ia i latou "paʻepaʻe" IP fafo, ma avatu le "efuefu". O le auala lea na matou sefe ai i luga o le vaitaele IP ma faʻamautinoa e puipuia masini mai fafo - e leai se IP e alu i ai.

Maufetuuna'i i luga o IP fa'asoa. E tusa ai ma le fa'apalepale fa'aletonu, e tutusa lava le fa'aogaina o le polokalame - o le tele o 'au'aunaga fa'aletino o lo'o i ai se IP fa'aletino masani, ma o meafaigaluega o lo'o i luma o latou e filifili po'o fea e lafo ai le talosaga. O le a ou talanoa e uiga i isi filifiliga mulimuli ane.

O le manatu finau e faapea i le tulaga lea e itiiti ni feso'ota'iga e tausia e le kalani. Afai e iai le IP tutusa mo le tele o masini - faʻatasi ai ma le talimalo tutusa: pu.vk.com poʻo pp.vk.com, o le tagata suʻesuʻe o loʻo i ai se tapulaa i luga o le numera o talosaga tutusa i le tasi talimalo. Ae i le taimi o ubiquitous HTTP / 2, ou te talitonu e le o toe talafeagai lenei mea.

O le fa'aletonu manino o le polokalame e tatau pamu uma feoaiga, lea e alu i le teuina, e ala i se isi server. Talu ai matou te pamuina taavale e ala i masini, e le mafai ona matou pamuina feoaiga mamafa, mo se faʻataʻitaʻiga, vitio, faʻaaogaina le polokalame tutusa. Matou te fa'asalalau sa'o - ose feso'ota'iga tu'usa'o ese'ese mo fa'aputuga eseese fa'apitoa mo vitiō. Matou te tuʻuina atu mea mama e ala i se sui.

E le'i leva atu na matou maua ai se fa'aleleia atili o le sui sui. O lenei o le a ou taʻu atu ia te oe pe faapefea ona latou ese mai mea masani ma pe aisea e tatau ai.

Ia Setema 2017, Oracle, lea na faʻatau muamua Sun, fa'ate'aina se numera tele o tagata faigaluega a le Sun. E mafai ona tatou fai atu o le taimi nei ua le toe i ai le kamupani. Pe a filifilia se igoa mo le faiga fou, na filifili le matou pule e faʻaaloalo i le manatuaina o lenei kamupani ma faʻaigoaina le faiga fou Sun. I totonu ia i tatou lava tatou te taʻua o ia o "la".

FAQ ile fausaga ma galuega a VKontakte

pp sa i ai ni nai faʻafitauli. Tasi le IP i le vaega - faʻaoga le aoga. E tele sapalai fa'aletino e fa'asoa se tuatusi IP masani, ma e leai se auala e pulea ai po'o fea le server e alu i ai le talosaga. O le mea lea, afai e o mai tagata eseese mo le faila lava e tasi, afai o loʻo i ai se faʻaoga i luga o nei 'auʻaunaga, o le faila e faʻauʻu i totonu o le faʻamaufaʻailoga o server taʻitasi. O se faiga le lelei tele lea, ae leai se mea e mafai ona fai.

O lea la- e le mafai ona tatou vaevaeina mea, aua e le mafai ona matou filifilia se 'auʻaunaga faʻapitoa mo lenei vaega - latou te maua se IP masani. E le gata i lea ona o nisi o mafuaaga i totonu tatou te maua sa le mafai ona fa'apipi'i ia 'au'aunaga i totonu o itulagi. Na latou tutu i St. Petersburg.

Faatasi ai ma le la, na matou suia le faiga filifiliga. O lea ua tatou maua so'o se auala ta'avale: ta'avale malosi, anycast, su'esu'e a le tagata lava ia daemon. E tofu lava le server ma lana IP ta'ito'atasi, ae ose subnet masani. O mea uma e faʻatulagaina i se auala afai e le manuia le tasi server, o le fefaʻatauaʻiga e sosolo i luga o isi sapalai o le vaega lava e tasi. Ua mafai nei ona filifili se server patino, leai se fa'aoga fa'aletonu, ma e le'i afaina ai le maufaatuatuaina.

Lagolago mamafa. O le taimi nei e mafai ona matou gafatia e faʻapipiʻi masini eseese mana pe a manaʻomia, faʻapea foʻi, pe a iai ni faʻafitauli le tumau, suia le mamafa o le "la" galue e faʻaitiitia ai le avega i luga o latou, ina ia latou "malolo" ma toe amata galue.

Fetufa'aiga e ala ile content id. O se mea malie e uiga i le faʻasoa: e masani ona matou faʻasoa mea ina ia mafai e tagata faʻaoga eseese ona o atu i le faila lava e tasi e ala i le "la" tutusa ina ia latou maua se faʻaoga masani.

Na matou tatalaina talu ai nei le talosaga "Clover". Ole su'ega lea ile luga ole laiga ile fa'asalalauga tu'usa'o, lea e fai ai fesili a le au fa'aoga ma tali mai tagata fa'aoga ile taimi tonu, filifili filifiliga. O loʻo i ai i le app se talatalanoaga e mafai ai e tagata faʻaoga ona talatalanoa. E mafai ona feso'ota'i fa'atasi i le fa'asalalauga sili atu i le 100 afe tagata. Latou te tusia uma feʻau e lafoina i tagata auai uma, ma o se avatar e sau faʻatasi ma le feʻau. Afai e 100 afe tagata o mai mo le tasi avatar i le tasi "la", ona mafai lea i nisi taimi ona taʻavale i tua o se ao.

Ina ia mafai ona tetee atu i le paʻu o talosaga mo le faila lava e tasi, e mo se ituaiga o anotusi tatou te faʻaogaina se fuafuaga faʻavalevalea e faʻasalalau faila i luga o "la" avanoa uma i le itulagi.

La mai totonu

Toe sui sui i luga o le nginx, faʻaoga i le RAM poʻo luga ole Optane / NVMe tisiki. Faataitaiga: http://sun4-2.userapi.com/c100500/path - o se fesoʻotaʻiga i le "la", lea o loʻo tu i le itulagi lona fa, le vaega lona lua o le server. E tapuni le faila ala, lea e taoto i luga o le server 100500.

ufi

Matou te fa'aopoopoina le tasi node i la matou ata faufale - o le si'osi'omaga fa'asao.

FAQ ile fausaga ma galuega a VKontakte

Lalo ole ata fa'atulagaina fa'ailoga fa'aitulagi, e tusa ma le 20 i latou. O nofoaga ia o loʻo i ai faʻamau ma "la", lea e mafai ona faʻaogaina auala e ala ia i latou lava.

FAQ ile fausaga ma galuega a VKontakte

O le fa'aogaina lea o mea fa'asalalau fa'asalalau; e leai ni fa'amatalaga fa'aoga o lo'o teuina iinei - na'o musika, vitio, ata.

Ina ia fuafuaina le itulagi o le tagata faʻaoga, matou matou te aoina BGP network prefixes faʻasalalau i itulagi. I le tulaga o le toe foʻi, e tatau foi ona tatou faʻavasega le geoip database pe a le mafai ona tatou mauaina le IP e ala i prefix. Matou te fuafuaina le itulagi e ala i le IP a le tagata faʻaoga. I le code, e mafai ona tatou vaʻavaʻai i se tasi poʻo le sili atu o itulagi o le tagata faʻaoga - o mea ia e sili ona latalata i ai.

E faapefea ona galulue?

Matou te faitauina le lauiloa o faila i le itulagi. O loʻo i ai le numera o le faʻaitulagi faʻapitonuʻu o loʻo i ai le tagata faʻaoga, ma se faila e iloagofie ai - matou te ave lenei paga ma faʻaopoopoina le fua faʻatatau i faʻamaumauga taʻitasi.

I le taimi lava e tasi, o temoni - auaunaga i itulagi - mai lea taimi i lea taimi e sau i le API ma fai mai: "O aʻu o se mea faapena ma se mea, aumai ia te aʻu se lisi o faila sili ona lauiloa i loʻu itulagi e leʻi oʻo ia te aʻu. ” O le API e tuʻuina atu le tele o faila e faʻavasegaina e ala i le faʻavasegaina, e sii mai e le daemon, ave i latou i itulagi ma tuʻuina atu faila mai iina. O le eseesega taua lea i le va o le pu/pp ma le Sun mai caches: latou te tuʻuina atu le faila ia i latou lava i le taimi lava lea, e tusa lava pe le o iai lenei faila i totonu o le cache, ma o le cache e muamua ona sii mai le faila ia te ia lava, ona amata lea ona toe tuʻuina atu.

I lenei tulaga tatou te maua mea e latalata i tagata fa'aoga ma fa'asalalauina le uta feso'ota'iga. Mo se faʻataʻitaʻiga, naʻo le Moscow cache matou te tufatufaina atu nai lo le 1 Tbit / s i taimi maualuga.

Ae e iai faafitauli- cache servers e le pa'u. Mo mea e sili ona lauiloa, o nisi taimi e le lava feso'otaiga mo se isi server. O a matou 'auʻaunaga faʻapipiʻi e 40-50 Gbit / s, ae o loʻo i ai mea e faʻapipiʻi atoa ai se auala. O loʻo matou agaʻi atu i le faʻatinoina o le teuina o sili atu ma le tasi kopi o faila lauiloa i le itulagi. Ou te faamoemoe o le a tatou faatinoina i le faaiuga o le tausaga.

Sa matou tilotilo i le fausaga lautele.

  • O sau pito i luma e talia talosaga.
  • Fa'amuta le fa'agasologa o talosaga.
  • Teuga o lo'o tapuni i ituaiga e lua o sui.
  • Nofoaga fa'aitulagi.

O le a le mea o lo'o misi mai lenei ata? Ioe, o faʻamaumauga o loʻo matou teuina ai faʻamaumauga.

Fa'amaumauga po'o masini

Matou te taʻua i latou e le o faʻamaumauga, ae o afi - Inisinia, aua e toetoe lava a leai ni a matou faʻamaumauga i le tulaga masani.

FAQ ile fausaga ma galuega a VKontakte

O se fua talafeagai lea. Na tupu lenei mea ona i le 2008-2009, ina ua faʻateleina le tupu aʻe o le VK i le taʻutaʻua, na galue atoatoa le poloketi i MySQL ma Memcache ma sa i ai faʻafitauli. Na fiafia MySQL e paʻu ma faʻaleagaina faila, a maeʻa ona le toe faʻaleleia, ma faʻasolosolo malie le faʻaleagaina o Memcache ma e tatau ona toe amataina.

E foliga mai o le faʻalauteleina o le taʻutaʻua o le poloketi o loʻo i ai le teuina faifai pea, lea e faʻaleagaina ai faʻamaumauga, ma se faʻaoga, e faʻagesegese. I ia tulaga, e faigata ona atiaʻe se galuega faʻatupulaia. Na tonu e taumafai e toe tusi mea taua na taulai i ai le poloketi ia tatou lava uila.

Na manuia le fofo. Sa i ai se avanoa e faia ai lenei mea, faʻapea foʻi ma se manaʻoga tele, ona e leʻi i ai isi auala e faʻaleleia ai i lena taimi. E leʻi i ai le tele o faʻamaumauga, e leʻi iai le NoSQL, e naʻo MySQL, Memcache, PostrgreSQL - ma o le mea lena.

Fa'agaioiga lautele. O le atinaʻe na taʻitaʻia e le matou vaega o le au atinaʻe C ma sa faia mea uma i se faiga faifai pea. E tusa lava po o le a le afi, e tutusa uma lava le faila faila na tusia i le tisiki, tutusa faʻailoga faʻalauiloa, faʻatautaia faʻailoga i le auala lava e tasi, ma amio tutusa pe a tulaʻi mai tulaga ma faʻafitauli. Faatasi ai ma le tuputupu aʻe o afi, e faigofie mo le pulega ona faʻagaoioia le faiga - e leai se pa manu e manaʻomia ona tausia, ma e tatau ona latou toe aʻoaʻoina pe faʻafefea ona faʻaogaina faʻamaumauga fou a isi vaega, lea na mafai ai ona vave ma faigofie ona faateleina lo latou numera.

Ituaiga o afi

Na tusia e le 'au ni nai afi. O nisi nei o ia mea: uo, faʻailoga, ata, ipdb, mataitusi, lisi, ogalaau, memcached, meowdb, tala fou, nostradamus, ata, playlists, pmemcached, sandbox, suʻesuʻe, teuina, fiafia, galuega, ...

Mo galuega taʻitasi e manaʻomia ai se faʻamaumauga faʻapitoa poʻo se faʻagasologa o talosaga e le masani ai, e tusia e le vaega C se afi fou. Aisea e le fai ai.

E iai le matou afi e ese mai memcached, lea e talitutusa ma se masani, ae o loʻo i ai le tele o mea lelei, ma e le faʻagesegese. E le o ClickHouse, ae e aoga foi. Avanoa eseese pmemcached - o lea lava fai pea memcached, lea e mafai foi ona teuina faʻamaumauga i luga o le disk, e le gata i lea, nai lo le fetaui i totonu o le RAM, ina ia aua nei leiloa faʻamatalaga pe a toe amataina. E iai masini eseese mo galuega ta'itasi: laina, lisi, seti - mea uma e mana'omia e la tatou poloketi.

Fa'apotopotoga

Mai se vaaiga faʻailoga, e leai se manaʻoga e mafaufau i masini poʻo faʻamaumauga o faʻagasologa, faʻalapotopotoga, poʻo faʻataʻitaʻiga. O le code e galue faʻapitoa i fuifui, ma vaega o afi - tasi le ituaiga i le fuifui. Fa'apea o lo'o i ai se fuifui memcached - ua na'o se vaega o masini.

E le manaʻomia ona iloa e le code le nofoaga faʻapitoa, tele, poʻo le numera o sapalai. Na te alu i le fuifui e faʻaaoga ai se faʻamatalaga patino.

Mo lenei mea e galue, e tatau ona e faʻaopoopoina se isi faʻalapotopotoga o loʻo i le va o le code ma afi - sui.

RPC sui

Sui sui pasi feso'ota'i, lea e toetoe lava o le saite atoa o loʻo faʻaogaina. I le taimi lava e tasi ua tatou maua leai se mauaina o auaunaga - nai lo lena, o loʻo i ai se faʻaoga mo lenei sui, e iloa ai le nofoaga o fuifui uma ma vaega uma o lenei fuifui. Ole mea lea e fai e admin.

E le popole lava le au fai polokalame pe fia, o fea ma pe o le a le tau - latou te o atu lava i le fuifui. O lenei mea e mafai ai ona tatou maua le tele. A maua se talosaga, e toe faʻafeiloaʻi e le sui le talosaga, ma le iloa poʻo fea - e faʻamoemoeina lava ia.

FAQ ile fausaga ma galuega a VKontakte

I lenei tulaga, o le sui o se vaega o le puipuiga mai le toilalo o auaunaga. A fa'agesegese pe pa'u nisi afi, ona malamalama lea o le sui sui ma tali atu i le itu a le tagata o tausia. O lenei mea e mafai ai e oe ona aveese le taimi - e le faʻatali le code mo le afi e tali mai, ae malamalama e le o galue ma e manaʻomia le amio i se isi itu. E tatau ona saunia le code mo le mea moni e le o taimi uma e galue ai faʻamaumauga.

Fa'atinoga fa'apitoa

O nisi taimi tatou te manaʻo moni lava e maua se ituaiga o fofo e le masani ai o se afi. I le taimi lava e tasi, na filifili ai e aua le faʻaogaina la matou rpc-proxy ua saunia, na faia faʻapitoa mo a matou afi, ae ia faia se isi sui mo le galuega.

Mo MySQL, o loʻo i ai pea iinei ma iina, matou te faʻaogaina le db-proxy, ma mo ClickHouse - Fale pusi.

E masani lava e pei o lenei. O loʻo i ai se 'auʻaunaga faʻapitoa, e faʻatautaia le kPHP, Alu, Python - i se tulaga lautele, soʻo se code e mafai ona faʻaogaina ai le matou RPC protocol. O le code e fa'aoga i le lotoifale i luga o le RPC sui - o server ta'itasi o lo'o iai le code e fa'atautaia lana lava sui fa'apitonu'u. Pe a talosagaina, e malamalama le sui i le mea e alu i ai.

FAQ ile fausaga ma galuega a VKontakte

Afai e manaʻo le tasi afi e alu i le isi, e tusa lava pe o se tuaoi, e alu i se sui, aua o le tuaoi atonu o loʻo i totonu o se isi nofoaga autu. E le tatau ona faalagolago le afi i le iloa o le nofoaga o se mea e ese mai ia te ia lava - o la tatou fofo masani lea. Ae o le mea moni e iai tuusaunoaga :)

O se faʻataʻitaʻiga o le TL-scheme e faʻatatau i le faʻaogaina o afi uma.

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;

Ole mea lea ole binary protocol, ole analogue sili ona lata mai ole protobuf. O lo'o fa'amatala muamua e le si'itia fanua e filifili ai, ituaiga lavelave - fa'aopoopoga o scalars ua fausia i totonu, ma fesili. E galue mea uma e tusa ai ma lenei protocol.

RPC i luga ole TL ile TCP/UDP... UDP?

E iai a matou faʻasalalauga RPC mo le faʻatinoina o talosaga afi o loʻo taʻavale i luga o le polokalame TL. E galue uma i luga o se TCP/UDP so'oga. TCP e malamalama, ae aisea tatou te manaʻomia ai le UDP i taimi uma?

UDP fesoasoani aloese mai le faʻafitauli o le tele o fesoʻotaʻiga i le va o sapalai. Afai e tofu le server ma se sui RPC ma, i se tulaga lautele, e mafai ona alu i soʻo se afi, ona i ai lea o le fiasefulu afe o fesoʻotaʻiga TCP i le server. E i ai se avega, ae leai se aoga. I le tulaga o le UDP e le o iai lenei faʻafitauli.

Leai se faatalofa TCP toe fai. Ole fa'afitauli masani lea: pe a fa'alauiloa se afi fou po'o se server fou, e tele feso'ota'iga TCP e fa'atu i le taimi e tasi. Mo talosaga mama mama, mo se faʻataʻitaʻiga, UDP totogi, fesoʻotaʻiga uma i le va o le code ma le afi o lua taga UDP: lele le tasi i le tasi itu, le lona lua i le isi itu. Tasi le malaga taamilo - ma na maua e le code se tali mai le afi e aunoa ma se faatalofa.

Ioe, e aoga uma lava fa'atasi ai ma se pasene la'ititi o le pa'u ua leiloa. O loʻo i ai i le protocol le lagolago mo le toe faʻasalalau ma taimi faʻagata, ae afai tatou te leiloa tele, o le a tatou maua toetoe lava o le TCP, lea e le aoga. Matou te le aveina le UDP i vasa.

E faitau afe a matou 'auʻaunaga faapena, ma o le polokalame e tutusa: o se pusa o afi o loʻo faʻapipiʻiina i luga o server faaletino taʻitasi. O le tele lava e tasi le filo e taufetuli vave e aunoa ma le poloka, ma e fa'aputuina e pei o ni fofo fa'asolo. I le taimi lava e tasi, e leai se mea e sili atu ona faʻatuatuaina nai lo nei masini, ma o le tele o le gauai e totogi i le teuina pea o faʻamaumauga.

Taofi fa'amaumauga tumau

E tusia e afi ni binlogs. O le binlog o se faila i le faaiuga lea e faʻaopoopoina ai se mea na tupu mo se suiga i le setete poʻo faʻamaumauga. I fofo eseese e ta'ua eseese: log binary, WAL, AOF, ae e tutusa lava le mataupu faavae.

Ina ia taofia le afi mai le toe faitau atoa o le binlog mo le tele o tausaga pe a toe amata, e tusi ai afi ata - tulaga o iai nei. Afai e tatau ai, latou te faitau muamua mai ai, ona faauma lea o le faitau mai le binlog. O binlogs uma o loʻo tusia i le faiga tutusa - e tusa ai ma le polokalame TL, ina ia mafai e le au pulega ona faʻatautaia tutusa ma a latou meafaigaluega. E leai se mana'oga faapena mo ata. O lo'o iai le fa'aulutala lautele e fa'ailoa mai ai po'o ai le ata o le int, fa'amaneta o le afi, ma po'o le fea tino e le taua i so'o se tasi. Ole fa'afitauli lea ile afi na fa'amauina le ata.

O le a vave ona ou faamatalaina le mataupu faavae o le faagaoioiga. O lo'o i ai se 'au'aunaga o lo'o ola ai le afi. Na te tatalaina se binlog avanoa fou mo le tusitusi ma tusia se mea na tupu mo se suiga i ai.

FAQ ile fausaga ma galuega a VKontakte

I se taimi, na te filifili e puʻe se ata o ia lava, pe na te mauaina se faʻailoga. E faia e le server se faila fou, tusi lona tulaga atoa i totonu, fa'aopoopo le tele o le binlog o lo'o i ai nei - offset - i le pito o le faila, ma fa'aauau ona tusitusi atili. E le'i faia se binlog fou.

FAQ ile fausaga ma galuega a VKontakte

I se taimi, pe a toe amata le afi, o le ai ai uma se binlog ma se ata i luga o le disk. E faitau e le afi le ata atoa ma sii i luga lona tulaga i se tulaga patino.

FAQ ile fausaga ma galuega a VKontakte

Faitau le tulaga sa i ai i le taimi na faia ai le ata ma le tele o le binlog.

FAQ ile fausaga ma galuega a VKontakte

Faitau le fa'ai'uga o le binlog e maua ai le tulaga o lo'o iai nei ma fa'aauau ona tusia nisi mea na tutupu. O se faiga faigofie lea; o matou afi uma e galue e tusa ai.

Fa'asologa o fa'amaumauga

O le iʻuga, faʻasologa o faʻamatalaga i la matou fa'avae fa'amatalaga - matou te tusia i le binlog e leai ni suiga o itulau, ae o le igoa sui talosaga. E talitutusa lava ma mea e sau i luga o le fesoʻotaʻiga, naʻo sina suiga.

O le polokalame lava lea e tasi e faʻaaogaina e le gata mo le toe faia, ae faʻapea foi e fai fa'amaumauga. E iai la matou afi - o se matai tusitusi e tusi i le binlog. I so'o se isi nofoaga e fa'atulaga ai e le au pulega, e kopiina lenei binlog, ma o le mea lena - e i ai sau fa'amaumauga.

FAQ ile fausaga ma galuega a VKontakte

Pe a mana'omia faitau tusiIna ia faʻaitiitia le uta faitau o le PPU, e faʻalauiloa le afi faitau, lea e faitau le pito o le binlog ma faʻatino nei poloaiga i le lotoifale.

O le lag iinei e matua la'ititi lava, ma e mafai ona iloa le tele o le fa'atusa o lo'o i tua o le matai.

Fa'asoa fa'amatalaga ile sui RPC

E fa'afefea ona galue le sharding? E fa'afefea ona malamalama le sui po'o le fea fuifui shard e lafo i ai? E le o faapea mai le code: "Auina atu mo le 15 shards!" - leai, e faia lea e le sui.

O le polokalame sili ona faigofie o le muamua - le numera muamua i le talosaga.

get(photo100_500) => 100 % N.

O se faʻataʻitaʻiga lea mo se faʻataʻitaʻiga faʻamatalaga faigofie memcached, ae, ioe, o fesili e mafai ona faʻalavelave ma faʻatulagaina. O le faʻataʻitaʻiga e ave le numera muamua i le fesili ma le isi pe a vaevaeina i le tele o fuifui.

E aoga lenei mea pe a tatou mananaʻo e maua faʻamaumauga faʻamaumauga o se tasi vaega. Fa'apea 100 o se tagata fa'aoga po'o se vaega ID, ma matou te manana'o i fa'amaumauga uma a le tasi fa'alapotopotoga e tu'u i luga o le tasi vaega mo fesili lavelave.

Afai matou te le popole pe faʻafefea ona faʻasalalau talosaga i luga o le fuifui, o loʻo i ai se isi filifiliga - fa'asalaina le fasimea atoa.

hash(photo100_500) => 3539886280 % N

Matou te maua foi le hash, le vaega o totoe o le vaevaega ma le numera shard.

O nei filifiliga uma e lua e aoga pe afai tatou te saunia mo le mea moni pe a tatou faʻateleina le tele o le fuifui, o le a tatou vaeluaina pe faʻateleina i le tele o taimi. Mo se faʻataʻitaʻiga, sa i ai a matou 16 shards, matou te le lava, matou te mananaʻo atili - e mafai ona matou maua ma le saogalemu le 32 e aunoa ma se taimi malolo. Afai tatou te mananaʻo e faʻateleina ae le o le faʻateleina, o le ai ai le taimi malolo, aua o le a le mafai ona tatou vaelua saʻo mea uma e aunoa ma se gau. O nei filifiliga e aoga, ae le o taimi uma.

Afai matou te manaʻomia le faʻaopoopo pe aveese se numera faʻapitoa o sapalai, matou te faʻaaogaina Hashing faifaipea i luga o le mama a la Ketama. Ae i le taimi lava e tasi, matou te leiloa atoa le nofoaga o faʻamaumauga; matou te tuʻufaʻatasia le talosaga i le fuifui ina ia toe faʻafoʻi e vaega taʻitasi lana lava tali laiti, ona tuʻufaʻatasia lea o tali i le sui.

E iai fa'atonuga fa'apitoa. E pei o lenei: E maua e le sui sui o le RPC le talosaga, fuafua po o le fea fuifui e alu i ai ma fuafua le shard. Ona iai lea o matai tusitusi, pe, afai o le fuifui o loʻo i ai le lagolago faʻatusa, e auina atu i se kopi pe a manaʻomia. O nei mea uma e faia e le sui.

FAQ ile fausaga ma galuega a VKontakte

Ogalaau

Matou te tusia ogalaau i ni auala se tele. O le mea sili ona manino ma faigofie o le tusi ogalaau i memcache.

ring-buffer: prefix.idx = line

O loʻo i ai se faʻailoga autu - o le igoa o le ogalaau, o se laina, ma o loʻo i ai le tele o lenei ogalaau - o le numera o laina. Matou te ave se numera faʻafuaseʻi mai le 0 i le numera o laina toesea le 1. O le ki i le memcache o se prefix faʻatasi ma lenei numera faʻafuaseʻi. Matou te faʻasaoina le laina ogalaau ma le taimi nei i le tau.

A tatau ona faitau ogalaau, matou te faia Tele Maua ki uma, fa'avasega i le taimi, ma fa'apea ona maua ai se fa'amaumauga o gaosiga i le taimi moni. O le polokalame e faʻaaogaina pe a manaʻomia le faʻapipiʻiina o se mea i le gaosiga i le taimi moni, e aunoa ma le solia o se mea, e aunoa ma le taofi pe faʻatagaina fefaʻatauaiga i isi masini, ae o lenei ogalaau e le umi.

Mo le teuina faatuatuaina o ogalaau o loʻo i ai le matou afi afi-ogalaau. O le mea tonu lea na faia ai ma faʻaaogaina lautele i le tele o fuifui. Ole fuifui tele ou te iloa e teu ai le 600 TB o fa'aputu ogalaau.

Ua matua tele le afi, e iai fuifui ua uma ona 6-7 tausaga. O loʻo i ai faʻafitauli o loʻo matou taumafai e foia, mo se faʻataʻitaʻiga, na amata ona matou faʻaaogaina le ClickHouse e teu ai ogalaau.

Aoina o ogalaau i ClickHouse

O lenei ata o lo'o fa'aalia ai le auala tatou te savali ai i totonu oa tatou afi.

FAQ ile fausaga ma galuega a VKontakte

O loʻo i ai le code e alu i le lotoifale e ala i le RPC i le RPC-proxy, ma e malamalama i le mea e alu i le afi. Afai matou te mananaʻo e tusi ogalaau i ClickHouse, matou te manaʻomia le suia o vaega e lua i lenei polokalame:

  • sui nisi afi i le ClickHouse;
  • sui le sui RPC, lea e le mafai ona maua ClickHouse, ma nisi fofo e mafai, ma e ala i le RPC.

E faigofie le afi - matou te suia i se server poʻo se fuifui o sapalai ma ClickHouse.

Ma e alu i le ClickHouse, na matou faia Fale Pusi. Afai tatou te o saʻo mai KittenHouse i ClickHouse, o le a le mafai. E tusa lava pe leai ni talosaga, e faʻaopoopoina mai fesoʻotaʻiga HTTP o le tele o masini. Mo le polokalame e galue, i luga o se server ma ClickHouse ua si'itia le sui sui fa'alotoifale, lea e tusia i se auala e mafai ai ona tatalia voluma manaʻomia o fesoʻotaʻiga. E mafai fo'i ona fa'asalaina fa'amaumauga i totonu ia te ia lava ma le fa'atuatuaina.

FAQ ile fausaga ma galuega a VKontakte

O nisi taimi matou te le manaʻo e faʻatino le polokalame RPC i fofo e le masani ai, mo se faʻataʻitaʻiga, i le nginx. O le mea lea, KittenHouse o loʻo i ai le malosi e maua ai ogalaau e ala i le UDP.

FAQ ile fausaga ma galuega a VKontakte

Afai e galue le tagata e auina atu ma le mauaina o ogalaau i luga o le masini lava e tasi, o lona uiga e matua maualalo le avanoa o le leiloa o se pusa UDP i totonu o le fale talimalo. I le avea ai o se fetuutuunai i le va o le manaʻoga e faʻatino le RPC i se fofo lona tolu ma le faʻamaoni, matou te faʻaaogaina le UDP auina atu. O le a tatou toe foʻi i lenei polokalame mulimuli ane.

Mataitu

E lua a matou ituaiga o ogalaau: o mea na aoina e pule i luga o latou 'auʻaunaga ma i latou na tusia e tagata atiaʻe mai code. E fetaui ma ituaiga e lua o metric: faiga ma oloa.

Fuafuaga faiga

E galue i luga oa matou 'au'aunaga uma netdata, lea e aoina fuainumera ma auina atu i Karono Kafite. O le mea lea, o le ClickHouse o loʻo faʻaaogaina e fai ma mea e teu ai, ae le o le Whisper, mo se faʻataʻitaʻiga. Afai e manaʻomia, e mafai ona e faitau saʻo mai le ClickHouse, pe faʻaaoga tusifana mo metrics, kalafi ma lipoti. I le avea ai ma tagata atiae, ua lava lo matou avanoa i Netdata ma Grafana.

Fuafuaga o oloa

Mo le faigofie, ua matou tusia le tele o mea. Mo se faʻataʻitaʻiga, o loʻo i ai se seti o galuega masani e mafai ai ona e tusia Counts, UniqueCounts values ​​​​i fuainumera, lea e auina atu i se isi mea.

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

$stats = statlogsStatData($params)

Mulimuli ane, e mafai ona tatou faʻaogaina le faʻavasegaina ma le faʻavasegaina o filiga ma fai mea uma tatou te manaʻo ai mai fuainumera - fausia kalafi, faʻapipiʻi Watchdogs.

Matou te tusitusi tele tele metrics o le numera o mea tutupu e mai le 600 piliona i le 1 tiliona i le aso. Peitaʻi, matou te mananaʻo e tausia a itiiti mai o ni nai tausagaia malamalama i faiga i metrics. O le tu'u fa'atasi uma o se fa'afitauli tele lea e le'i fo'ia. O le a ou taʻu atu ia te oe le auala na galue ai mo nai tausaga talu ai.

E iai a matou galuega e tusia ai nei fua i le memcache i le lotoifalee fa'aitiitia le aofa'i o fa'amaumauga. Fa'atasi i se taimi pu'upu'u fa'alauiloa fa'apitonu'u stats-daemon aoina uma faamaumauga. O le isi, e faʻapipiʻi e le temoni ia metrics i ni laulau se lua o sapalai tagata aoina ogalaau, lea e tu'ufa'atasia ai fa'amaumauga mai le tele o a tatou masini ina ia aua ne'i mate le vaega i tua.

FAQ ile fausaga ma galuega a VKontakte

Afai e manaʻomia, e mafai ona matou tusi saʻo atu i le au aoina ogalaau.

FAQ ile fausaga ma galuega a VKontakte

Ae o le tusitusi mai le code tuusa'o i le aoina, le pasia o stas-daemom, o se fofo le lelei ona e faʻateleina le uta i luga o le aoina. O le fofo e talafeagai pe afai mo nisi mafuaaga e le mafai ona matou siiina le memcache stats-daemon i luga o le masini, pe na paʻu ma matou alu saʻo.

Soso'o, tu'ufa'atasia e tagata aoina ogalaau fa'amaumauga i totonu meowDB - o la matou 'upega tafaʻilagi lea, e mafai foi ona teuina metrics.

FAQ ile fausaga ma galuega a VKontakte

Ona mafai lea ona tatou faia filifiliga binary "near-SQL" mai le code.

FAQ ile fausaga ma galuega a VKontakte

Tofotofoga

I le taumafanafana o le 2018, na matou maua ai se hackathon i totonu, ma na oʻo mai le manatu e taumafai e sui le vaega mumu o le ata i se mea e mafai ona teuina metrics i ClickHouse. E iai a matou ogalaau ile ClickHouse - aisea e te le faʻataʻitaʻia ai?

FAQ ile fausaga ma galuega a VKontakte

Sa i ai sa matou polokalame na tusia ai ogalaau e ala i KittenHouse.

FAQ ile fausaga ma galuega a VKontakte

Sa matou filifili fa'aopoopo le isi “*Fale” i le ata, lea o le a maua tonu metrics i le faatulagaga e pei ona tusia e le tatou code e ala i le UDP. Ona liliu lea e le *Fale nei i mea faaofi, pei o ogalaau, lea e malamalama ai KittenHouse. E mafai ona ia tuʻuina atu lelei nei ogalaau i ClickHouse, lea e tatau ona mafai ona faitau i ai.

FAQ ile fausaga ma galuega a VKontakte

Ole polokalame ile memcache, stats-daemon ma logs-collectors database ua suia ile mea lea.

FAQ ile fausaga ma galuega a VKontakte

Ole polokalame ile memcache, stats-daemon ma logs-collectors database ua suia ile mea lea.

  • O loʻo i ai se feʻau mai le code iinei, lea e tusia i le lotoifale i StatsHouse.
  • StatsHouse tusia UDP metrics, ua uma ona liua i totonu o faʻapipiʻi SQL, i KittenHouse i vaega.
  • KittenHouse auina atu i latou i ClickHouse.
  • Afai matou te mananaʻo e faitau i latou, ona matou faitau lea i latou e ala i le StatsHouse - tuusaʻo mai ClickHouse faʻaaoga SQL masani.

O tumau pea faʻataʻitaʻiga, ae matou te fiafia i le mea e tupu mai ai. Afai tatou te foia faafitauli i le polokalame, atonu o le a tatou sui atoa i ai. O le tagata lava ia, ou te faʻamoemoe.

Fuafuaga e le faasaoina u’amea. E itiiti ni 'au'aunaga e mana'omia, e le mana'omia stats-daemons ma logs-collectors, ae o le ClickHouse e mana'omia se server tele atu nai lo i latou o lo'o i ai nei. E itiiti sapalai e manaʻomia, ae tatau ona sili atu le taugata ma sili atu le malosi.

Fa'atino

Muamua, seʻi o tatou vaʻavaʻai i le faʻaogaina o le PHP. O loʻo matou atinaʻe i totonu git: fa'aoga GitLab и TeamCity mo le fa'atulagaina. O lala o le atina'e e tu'ufa'atasia i totonu o le paranesi matai, mai le matai mo su'ega e tu'ufa'atasia i le fa'atulagaina, ma mai le fa'atulagaina i le gaosiga.

Aʻo leʻi faʻapipiʻiina, e ave le lala o loʻo iai nei ma le muamua, ma o faila eseese o loʻo mafaufau i ai - suiga: faia, tape, suia. O lenei suiga o loʻo faʻamauina i le binlog o se masini kopi vave faʻapitoa, lea e mafai ona vave faʻafeiloaʻi suiga i la tatou vaʻa uma. O le mea o loʻo faʻaaogaina iinei e le o kopi saʻo, ae toe fai faitatala, pe a auina atu e se tasi server suiga i ona tuaoi vavalalata, o latou i latou tuaoi, ma isi. Ole mea lea e mafai ai ona e fa'afouina le code ile sefulu ma iunite o sekone ile va'a atoa. A o'o atu le suiga i le fa'atusa fa'apitonu'u, e fa'aoga nei patch i lona faiga faila i le lotoifale. O lo'o fa'atinoina fo'i le Rollback e tusa ai ma lea lava polokalame.

Matou te faʻapipiʻiina foi le tele o le kPHP ma o loʻo iai foʻi lana atinaʻe i luga git e tusa ai ma le ata i luga. Talu mai lenei mea HTTP server binary, ona le mafai lea ona matou gaosia le eseesega - o le faʻasaʻoina binary e faitau selau MB. O le mea lea, o loʻo i ai se isi filifiliga iinei - o le faʻamatalaga ua tusia i binlog kopi vave. Faatasi ai ma fale taitasi e faateleina, ma i le taimi o le rollback e faateleina foi. Fa'aliliuga toe fa'atusa i 'au'aunaga. Copyfasts i totonu o le lotoifale vaai ua ulufale se lomiga fou i le binlog, ma e ala i le toe faitatala tutusa latou te ave le lomiga aupito lata mai o le binary mo i latou lava, e aunoa ma le vaivai o lo tatou matai server, ae faʻasalalau ma le faaeteete le uta i luga o le upega tafailagi. O mea e mulimuli mai toe fa'alauiloa matagofie mo le lomiga fou.

Mo a tatou afi, o loʻo avea foi ma binaries, o le polokalame e talitutusa lava:

  • git matai lala;
  • binary i totonu .deb;
  • ua tusia le lomiga i le binlog copyfast;
  • toe fa'atusa i 'au'aunaga;
  • e toso mai e le server se .dep fou;
  • dpkg -i;
  • toe fa'alauiloa matagofie i le fa'afou fou.

O le eseesega o le matou binary o loʻo afifiina i faʻamaumauga .deb, ma pe a pamu i fafo latou dpkg -i ua tuu i luga o le faiga. Aisea ua faʻaaogaina ai le kPHP e avea o se binary, ma faʻapipiʻi afi e pei o le dpkg? Na tupu faapena. E aoga - aua le tago i ai.

Faʻaoga talafeagai:

Alexey Akulovich o se tasi oi latou oe, o se vaega o le Komiti Polokalame, fesoasoani PHP Rusia i le aso 17 o Me o le a avea ma mea sili ona tele mo PHP atinaʻe i taimi lata mai nei. Va'ai i le manaia o le matou PC, o le a failauga (e lua o latou o loʻo atiaʻe le PHP autu!) - e foliga mai o se mea e le mafai ona e misia pe a e tusia PHP.

puna: www.habr.com

Faaopoopo i ai se faamatalaga