FAQ lori faaji ati iṣẹ ti VKontakte

Itan-akọọlẹ ti ẹda VKontakte wa lori Wikipedia; Pavel funrarẹ ni o sọ ọ. O dabi pe gbogbo eniyan ti mọ ọ tẹlẹ. Nipa ti abẹnu, faaji ati be ti awọn ojula lori HighLoad ++ Pavel so fun mi pada ni 2010. Ọpọlọpọ awọn olupin ti jo lati igba naa, nitorinaa a yoo ṣe imudojuiwọn alaye naa: a yoo pin kaakiri, mu awọn inu inu, ṣe iwọn rẹ, ati wo ẹrọ VK lati oju-ọna imọ-ẹrọ.

FAQ lori faaji ati iṣẹ ti VKontakte

Alexei Akulovich (AterCattus) Olùgbéejáde ẹhin ni ẹgbẹ VKontakte. Tiransikiripiti ti ijabọ yii jẹ idahun apapọ si awọn ibeere ti a beere nigbagbogbo nipa iṣẹ ti pẹpẹ, awọn amayederun, awọn olupin ati ibaraenisepo laarin wọn, ṣugbọn kii ṣe nipa idagbasoke, eyun nipa irin. Lọtọ, nipa awọn apoti isura infomesonu ati kini VK ni dipo, nipa gbigba awọn akọọlẹ ati ibojuwo gbogbo iṣẹ akanṣe lapapọ. Awọn alaye labẹ gige.



Fun diẹ ẹ sii ju ọdun mẹrin Mo ti n ṣe pẹlu gbogbo awọn iṣẹ ṣiṣe ti o ni ibatan si ẹhin.

  • Ikojọpọ, titoju, ṣiṣe, pinpin media: fidio, ṣiṣanwọle laaye, ohun, awọn fọto, awọn iwe aṣẹ.
  • Amayederun, pẹpẹ, ibojuwo olupilẹṣẹ, awọn akọọlẹ, awọn caches agbegbe, CDN, ilana RPC ti ohun-ini.
  • Ijọpọ pẹlu awọn iṣẹ ita: awọn iwifunni titari, sisọ ọna asopọ ita, kikọ sii RSS.
  • Iranlọwọ awọn ẹlẹgbẹ pẹlu ọpọlọpọ awọn ibeere, awọn idahun si eyiti o nilo omiwẹ sinu koodu aimọ.

Lakoko yii, Mo ni ọwọ ni ọpọlọpọ awọn paati ti aaye naa. Mo fẹ pin iriri yii.

Gbogbogbo faaji

Ohun gbogbo, bi igbagbogbo, bẹrẹ pẹlu olupin tabi ẹgbẹ awọn olupin ti o gba awọn ibeere.

Olupin iwaju

Olupin iwaju gba awọn ibeere nipasẹ HTTPS, RTMP ati WSS.

HTTPS - iwọnyi jẹ awọn ibeere fun akọkọ ati awọn ẹya oju opo wẹẹbu alagbeka ti aaye naa: vk.com ati m.vk.com, ati awọn oṣiṣẹ miiran ati awọn alabara laigba aṣẹ ti API wa: awọn alabara alagbeka, awọn ojiṣẹ. A ni gbigba RTMP-ijabọ fun Live igbesafefe pẹlu lọtọ iwaju apèsè ati WSS- awọn asopọ fun API ṣiṣan.

Fun HTTPS ati WSS lori olupin o tọ nginx. Fun awọn igbesafefe RTMP, a yipada laipẹ si ojutu tiwa kive, ṣugbọn o kọja opin ti ijabọ naa. Fun ifarada aṣiṣe, awọn olupin wọnyi n polowo awọn adirẹsi IP ti o wọpọ ati ṣiṣe ni awọn ẹgbẹ pe ti iṣoro kan ba wa lori ọkan ninu awọn olupin, awọn ibeere olumulo ko padanu. Fun HTTPS ati WSS, awọn olupin kanna wọnyi encrypt ijabọ lati le gba apakan ti fifuye Sipiyu sori ara wọn.

A kii yoo sọrọ siwaju sii nipa WSS ati RTMP, ṣugbọn nipa awọn ibeere HTTPS boṣewa nikan, eyiti o jẹ nkan ṣe pẹlu iṣẹ akanṣe wẹẹbu kan.

Backend

Lẹhin iwaju awọn olupin afẹyinti nigbagbogbo wa. Wọn ṣe ilana awọn ibeere ti olupin iwaju gba lati ọdọ awọn alabara.

Eyi jẹ kPHP olupin, lori eyiti HTTP daemon nṣiṣẹ, nitori HTTPS ti wa ni idasilẹ tẹlẹ. kPHP jẹ olupin ti o nṣiṣẹ lori prefork awọn awoṣe: bẹrẹ a titunto si ilana, kan ìdìpọ ọmọ lakọkọ, koja gbigbọ sockets si wọn ati awọn ti wọn ilana wọn ibeere. Ni ọran yii, awọn ilana ko tun bẹrẹ laarin ibeere kọọkan lati ọdọ olumulo, ṣugbọn nirọrun tun ipo wọn pada si ipo iye-odo atilẹba - ibeere lẹhin ibeere, dipo tun bẹrẹ.

Pinpin pinpin

Gbogbo awọn ẹhin wa kii ṣe adagun nla ti awọn ẹrọ ti o le ṣe ilana eyikeyi ibeere. Awa wọn pin si lọtọ awọn ẹgbẹ: gbogboogbo, alagbeka, api, fidio, iṣeto ... Iṣoro lori ẹgbẹ ọtọtọ ti awọn ẹrọ kii yoo ni ipa lori gbogbo awọn miiran. Ni ọran ti awọn iṣoro pẹlu fidio, olumulo ti o gbọ orin kii yoo paapaa mọ nipa awọn iṣoro naa. Ewo ẹhin lati firanṣẹ ibeere naa ni ipinnu nipasẹ nginx ni iwaju ni ibamu si atunto naa.

Metiriki gbigba ati rebalancing

Lati ni oye iye awọn ọkọ ayọkẹlẹ ti a nilo lati ni ninu ẹgbẹ kọọkan, a ma ṣe gbẹkẹle QPS. Awọn ẹhin ẹhin yatọ, wọn ni awọn ibeere oriṣiriṣi, ibeere kọọkan ni eka ti o yatọ ti iṣiro QPS. Idi niyi ti awa a ṣiṣẹ pẹlu awọn Erongba ti fifuye lori olupin bi kan gbogbo - lori Sipiyu ati perf.

A ni egbegberun iru olupin. Olupin ti ara kọọkan nṣiṣẹ ẹgbẹ kPHP lati tunlo gbogbo awọn ohun kohun (nitori kPHP jẹ asapo ẹyọkan).

Olupin akoonu

CS tabi Olupin Akoonu jẹ ibi ipamọ kan. CS jẹ olupin ti o tọju awọn faili ati tun ṣe ilana awọn faili ti a gbejade ati gbogbo iru awọn iṣẹ ṣiṣe amuṣiṣẹpọ abẹlẹ ti oju opo wẹẹbu akọkọ fi si.

A ni ẹgbẹẹgbẹrun awọn olupin ti ara ti o tọju awọn faili. Awọn olumulo nifẹ lati gbejade awọn faili, ati pe a nifẹ lati fipamọ ati pin wọn. Diẹ ninu awọn olupin wọnyi ti wa ni pipade nipasẹ awọn olupin pu/pp pataki.

pu/pp

Ti o ba ṣii taabu nẹtiwọki ni VK, o rii pu/pp.

FAQ lori faaji ati iṣẹ ti VKontakte

Kini pu/pp? Ti a ba pa olupin kan lẹhin miiran, lẹhinna awọn aṣayan meji wa fun ikojọpọ ati igbasilẹ faili kan si olupin ti o tiipa: taara nipasẹ http://cs100500.userapi.com/path tabi nipasẹ agbedemeji olupin - http://pu.vk.com/c100500/path.

Pu ni orukọ itan fun ikojọpọ fọto, ati pp jẹ aṣoju fọto. Iyẹn ni, olupin kan wa fun gbigbe awọn fọto, ati pe miiran jẹ fun ikojọpọ. Bayi kii ṣe awọn fọto nikan ni o kojọpọ, ṣugbọn orukọ naa ti wa ni ipamọ.

Awọn olupin wọnyi fopin si awọn akoko HTTPSlati yọ ero isise fifuye lati ibi ipamọ. Paapaa, niwọn igba ti awọn faili olumulo ti ni ilọsiwaju lori awọn olupin wọnyi, alaye ifura ti o kere ju ti o fipamọ sori awọn ẹrọ wọnyi, dara julọ. Fun apẹẹrẹ, awọn bọtini fifi ẹnọ kọ nkan HTTPS.

Niwọn igba ti awọn ẹrọ ti wa ni pipade nipasẹ awọn ẹrọ miiran wa, a le ni anfani lati ma fun wọn ni IPs ita “funfun”, ati fun "grẹy". Ni ọna yii a fipamọ sori adagun IP ati iṣeduro lati daabobo awọn ẹrọ lati iraye si ita - ko si IP kan lati wọle sinu rẹ.

Resiliency lori pín IPs. Ni awọn ofin ti ifarada ẹbi, ero naa ṣiṣẹ kanna - ọpọlọpọ awọn olupin ti ara ni IP ti ara ti o wọpọ, ati ohun elo ti o wa niwaju wọn yan ibiti o ti firanṣẹ ibeere naa. Emi yoo sọrọ nipa awọn aṣayan miiran nigbamii.

Koko ariyanjiyan ni pe ninu ọran yii onibara ntọju awọn asopọ diẹ. Ti IP kanna ba wa fun awọn ẹrọ pupọ - pẹlu ogun kanna: pu.vk.com tabi pp.vk.com, aṣawakiri alabara ni opin lori nọmba awọn ibeere nigbakanna si ogun kan. Ṣugbọn ni akoko HTTP/2 ibi gbogbo, Mo gbagbọ pe eyi ko wulo mọ.

Aila-nfani ti o han gbangba ti ero naa ni pe o ni lati fifa gbogbo ijabọ, ti o lọ si ibi ipamọ, nipasẹ olupin miiran. Níwọ̀n bí a ti ń fa ọkọ̀ ojú irin sínú àwọn ẹ̀rọ, a kò tíì lè fa ọkọ̀ ojú-ọ̀nà gbígbóná janjan, fún àpẹẹrẹ, fídíò, ní lílo ètò kan náà. A gbejade taara - asopọ taara lọtọ fun awọn ibi ipamọ lọtọ ni pataki fun fidio. A ṣe atagba akoonu fẹẹrẹfẹ nipasẹ aṣoju kan.

Laipẹ sẹhin a ni ẹya ilọsiwaju ti aṣoju. Bayi Emi yoo sọ fun ọ bi wọn ṣe yatọ si awọn arinrin ati idi ti eyi ṣe pataki.

Sun

Ni Oṣu Kẹsan 2017, Oracle, ti o ti ra Sun tẹlẹ, le kuro lenu ise kan tobi nọmba ti Sun abáni. A le sọ pe ni akoko yii ile-iṣẹ naa dawọ lati wa. Nigbati o ba yan orukọ kan fun eto titun, awọn alakoso wa pinnu lati san owo-ori si iranti ile-iṣẹ yii ati pe orukọ titun Sun. Laarin ara wa a nìkan pe rẹ "oorun".

FAQ lori faaji ati iṣẹ ti VKontakte

pp ni awọn iṣoro diẹ. IP kan fun ẹgbẹ kan - kaṣe ti ko wulo. Ọpọlọpọ awọn olupin ti ara pin pin adiresi IP ti o wọpọ, ati pe ko si ọna lati ṣakoso iru olupin ti ibeere naa yoo lọ si. Nitorinaa, ti awọn olumulo oriṣiriṣi ba wa fun faili kanna, lẹhinna ti kaṣe kan wa lori awọn olupin wọnyi, faili naa dopin ni kaṣe ti olupin kọọkan. Eyi jẹ ero aiṣedeede pupọ, ṣugbọn ko si ohun ti o le ṣee ṣe.

Nitori naa - a ko le shard akoonu, nitori a ko le yan olupin kan pato fun ẹgbẹ yii - wọn ni IP ti o wọpọ. Paapaa fun diẹ ninu awọn idi inu ti a ni ko ṣee ṣe lati fi sori ẹrọ iru awọn olupin ni awọn agbegbe. Wọn duro nikan ni St.

Pẹlu awọn oorun, a yipada eto yiyan. Bayi a ni anycast afisona: ipa-ọna ti o ni agbara, anycast, daemon-ṣayẹwo. Olupin kọọkan ni IP ti ara rẹ, ṣugbọn subnet ti o wọpọ. Ohun gbogbo ti wa ni tunto ni iru kan ọna ti o ba ti ọkan server kuna, awọn ijabọ ti wa ni tan kọja awọn miiran olupin ti kanna ẹgbẹ laifọwọyi. Bayi o ṣee ṣe lati yan olupin kan pato, ko si laiṣe caching, ati igbẹkẹle ko ni ipa.

Atilẹyin iwuwo. Bayi a le ni anfani lati fi sori ẹrọ awọn ẹrọ ti o yatọ si agbara bi o ti nilo, ati tun, ni awọn iṣoro igba diẹ, yi awọn iwọn ti awọn "oorun" ṣiṣẹ lati dinku fifuye lori wọn, ki wọn "sinmi" ati bẹrẹ iṣẹ lẹẹkansi.

Pipin nipasẹ id akoonu. Ohun ẹlẹrin kan nipa sharding: a maa n ṣaja akoonu ki awọn olumulo oriṣiriṣi lọ si faili kanna nipasẹ “oorun” kanna ki wọn ni kaṣe ti o wọpọ.

Laipẹ a ṣe ifilọlẹ ohun elo “Clover”. Eyi jẹ ibeere ori ayelujara ni igbohunsafefe ifiwe, nibiti agbalejo naa ti beere awọn ibeere ati awọn olumulo dahun ni akoko gidi, yiyan awọn aṣayan. Awọn app ni o ni a iwiregbe ibi ti awọn olumulo le iwiregbe. Le ni nigbakannaa sopọ si igbohunsafefe diẹ ẹ sii ju 100 ẹgbẹrun eniyan. Gbogbo wọn kọ awọn ifiranṣẹ ti o firanṣẹ si gbogbo awọn olukopa, ati pe avatar kan wa pẹlu ifiranṣẹ naa. Ti 100 ẹgbẹrun eniyan ba wa fun avatar kan ni “oorun” kan, lẹhinna o le ma yiyi lẹhin awọsanma nigbakan.

Lati le koju awọn ibeere ti nwaye fun faili kanna, o jẹ fun iru akoonu kan ti a tan-an ero aimọgbọnwa ti o tan awọn faili kọja gbogbo “oorun” ti o wa ni agbegbe naa.

Oorun lati inu

Yiyipada aṣoju lori nginx, kaṣe boya ni Ramu tabi lori awọn disiki Optane/NVMe yara. Apeere: http://sun4-2.userapi.com/c100500/path - ọna asopọ si “oorun”, eyiti o wa ni agbegbe kẹrin, ẹgbẹ olupin keji. O tilekun faili ọna, eyiti o wa ni ti ara lori olupin 100500.

kaṣe

A ṣafikun oju ipade kan si ero ayaworan wa - agbegbe caching.

FAQ lori faaji ati iṣẹ ti VKontakte

Ni isalẹ ni aworan atọka agbegbe caches, o to 20 ninu wọn. Awọn wọnyi ni awọn aaye ibi ti awọn caches ati "oorun" wa, eyi ti o le ṣaṣeyọri ijabọ nipasẹ ara wọn.

FAQ lori faaji ati iṣẹ ti VKontakte

Eyi jẹ caching ti akoonu multimedia; ko si data olumulo ti o wa ni ipamọ nibi - orin nikan, fidio, awọn fọto.

Lati pinnu agbegbe olumulo, a a gba awọn asọtẹlẹ nẹtiwọki BGP ti a kede ni awọn agbegbe. Ninu ọran ti ipadabọ, a tun ni lati ṣe itupalẹ data geoip ti a ko ba le rii IP nipasẹ awọn ami-iṣaaju. A pinnu agbegbe naa nipasẹ IP olumulo. Ninu koodu naa, a le wo ọkan tabi diẹ ẹ sii awọn agbegbe ti olumulo - awọn aaye wọnyẹn eyiti o sunmọ agbegbe agbegbe.

Bawo ni o ṣiṣẹ?

A ka awọn gbale ti awọn faili nipa agbegbe. Nọmba ti kaṣe agbegbe wa nibiti olumulo wa, ati idamo faili - a mu bata yii ati mu iwọn-wọn pọ si pẹlu igbasilẹ kọọkan.

Ni akoko kanna, awọn ẹmi èṣu - awọn iṣẹ ni awọn agbegbe - lati igba de igba wa si API ati sọ pe: “Mo jẹ iru ati iru kaṣe kan, fun mi ni atokọ ti awọn faili olokiki julọ ni agbegbe mi ti ko tii lori mi. ” API n ṣafipamọ ọpọlọpọ awọn faili lẹsẹsẹ nipasẹ iwọn, daemon ṣe igbasilẹ wọn, mu wọn lọ si awọn agbegbe ati gbe awọn faili lati ibẹ. Eyi ni iyatọ pataki laarin pu/pp ati Sun lati awọn caches: wọn fun faili naa nipasẹ ara wọn lẹsẹkẹsẹ, paapaa ti faili yii ko ba wa ninu kaṣe, ati pe kaṣe naa kọkọ ṣe igbasilẹ faili si ararẹ, lẹhinna bẹrẹ fifun pada.

Ni idi eyi a gba akoonu jo si awọn olumulo ati itankale fifuye nẹtiwọki. Fun apẹẹrẹ, nikan lati inu kaṣe Moscow a pin kaakiri diẹ sii ju 1 Tbit/s lakoko awọn wakati ti o ga julọ.

Ṣugbọn awọn iṣoro wa - awọn olupin kaṣe kii ṣe roba. Fun akoonu olokiki pupọ, nigbami ko si nẹtiwọọki to fun olupin lọtọ. Awọn olupin kaṣe wa jẹ 40-50 Gbit/s, ṣugbọn akoonu wa ti o di iru ikanni kan patapata. A n lọ si imuse ibi ipamọ ti diẹ ẹ sii ju ẹda kan ti awọn faili olokiki ni agbegbe naa. Mo nireti pe a yoo ṣe imuse rẹ ni opin ọdun.

A wò ni gbogboogbo faaji.

  • Awọn olupin iwaju ti o gba awọn ibeere.
  • Ṣe atilẹyin awọn ibeere ilana naa.
  • Awọn ibi ipamọ ti o ti wa ni pipade nipasẹ awọn aṣoju meji.
  • Awọn kaṣe agbegbe.

Kini o sonu ninu aworan atọka yii? Dajudaju, awọn apoti isura infomesonu ninu eyiti a fi data pamọ.

Databases tabi enjini

A pe wọn kii ṣe awọn apoti isura infomesonu, ṣugbọn awọn ẹrọ - Awọn ẹrọ, nitori a ko ni awọn apoti isura infomesonu ni oye ti gbogbogbo.

FAQ lori faaji ati iṣẹ ti VKontakte

Eyi jẹ iwọn pataki. Eyi ṣẹlẹ nitori ni 2008-2009, nigbati VK ni idagbasoke bugbamu ni gbaye-gbale, iṣẹ naa ṣiṣẹ patapata lori MySQL ati Memcache ati pe awọn iṣoro wa. MySQL fẹràn lati jamba ati awọn faili ibajẹ, lẹhin eyi kii yoo gba pada, ati pe Memcache dinku diẹdiẹ ni iṣẹ ati pe o ni lati tun bẹrẹ.

O wa ni jade wipe increasingly gbajumo ise agbese ní jubẹẹlo ipamọ, eyi ti o ba data, ati ki o kan kaṣe, eyi ti o fa fifalẹ. Ni iru awọn ipo, o jẹ soro lati se agbekale kan dagba ise agbese. Wọ́n pinnu láti gbìyànjú láti tún àwọn ohun tó ṣe pàtàkì tí iṣẹ́ náà ṣe lé lórí àwọn kẹ̀kẹ́ tiwa fúnra wa.

Ojutu naa ṣaṣeyọri. Anfani wa lati ṣe eyi, bakanna bi iwulo to gaju, nitori awọn ọna miiran ti igbelosoke ko si ni akoko yẹn. Ko si opo awọn apoti isura infomesonu, NoSQL ko si sibẹsibẹ, MySQL nikan wa, Memcache, PostrgreSQL - ati pe iyẹn ni.

Gbogbo isẹ. Idagbasoke naa jẹ itọsọna nipasẹ ẹgbẹ wa ti awọn idagbasoke C ati pe ohun gbogbo ni a ṣe ni ọna deede. Laibikita ẹrọ naa, gbogbo wọn ni isunmọ ọna kika faili kanna ti a kọ si disk, awọn aye ifilọlẹ kanna, awọn ifihan agbara ilana ni ọna kanna, ati huwa isunmọ kanna ni ọran ti awọn ipo eti ati awọn iṣoro. Pẹlu idagba ti awọn enjini, o rọrun fun awọn alakoso lati ṣiṣẹ eto naa - ko si zoo ti o nilo lati ṣetọju, ati pe wọn ni lati tun kọ ẹkọ bi wọn ṣe le ṣiṣẹ data ẹni-kẹta tuntun kọọkan, eyiti o jẹ ki o ṣee ṣe ni iyara ati ni irọrun mu nọmba wọn pọ si.

Orisi ti enjini

Awọn egbe kowe oyimbo kan diẹ enjini. Eyi ni diẹ ninu wọn: ọrẹ, awọn imọran, aworan, ipdb, awọn lẹta, awọn atokọ, awọn akọọlẹ, memcached, meowdb, awọn iroyin, nostradamus, fọto, awọn akojọ orin, pmemcached, apoti iyanrin, wiwa, ibi ipamọ, awọn ayanfẹ, awọn iṣẹ ṣiṣe,…

Fun iṣẹ-ṣiṣe kọọkan ti o nilo eto data kan pato tabi awọn ilana awọn ibeere alaiṣe, ẹgbẹ C kọ ẹrọ tuntun kan. Ki lo de.

A ni ẹrọ ọtọtọ memcached, eyi ti o jẹ iru si deede, ṣugbọn pẹlu opo kan ti o dara, ati eyi ti ko fa fifalẹ. Kii ṣe ClickHouse, ṣugbọn o tun ṣiṣẹ. Wa lọtọ pmemcached Ṣe jubẹẹlo memcached, eyi ti o tun le fi data pamọ sori disk, pẹlupẹlu, ju ibaamu sinu Ramu, ki o má ba padanu data nigbati o tun bẹrẹ. Awọn ẹrọ oriṣiriṣi wa fun awọn iṣẹ ṣiṣe kọọkan: awọn ila, awọn atokọ, awọn eto - ohun gbogbo ti iṣẹ akanṣe wa nilo.

Awọn iṣupọ

Lati irisi koodu, ko si iwulo lati ronu awọn ẹrọ tabi awọn apoti isura infomesonu bi awọn ilana, awọn nkan, tabi awọn iṣẹlẹ. Koodu naa ṣiṣẹ ni pataki pẹlu awọn iṣupọ, pẹlu awọn ẹgbẹ ti awọn ẹrọ - iru kan fun iṣupọ. Jẹ ki a sọ pe iṣupọ memcached kan wa - o jẹ ẹgbẹ kan ti awọn ẹrọ.

Koodu naa ko nilo lati mọ ipo ti ara, iwọn, tabi nọmba awọn olupin rara. O lọ si iṣupọ nipa lilo idanimọ kan.

Fun eyi lati ṣiṣẹ, o nilo lati ṣafikun nkan kan diẹ sii ti o wa laarin koodu ati awọn ẹrọ - aṣoju.

RPC aṣoju

Aṣoju akero pọ, lori eyiti o fẹrẹ jẹ pe gbogbo aaye naa nṣiṣẹ. Ni akoko kanna a ni ko si Awari iṣẹ - dipo, atunto kan wa fun aṣoju yii, eyiti o mọ ipo ti gbogbo awọn iṣupọ ati gbogbo awọn shards ti iṣupọ yii. Eyi ni ohun ti awọn admins ṣe.

Awọn olupilẹṣẹ ko bikita ni gbogbo iye, nibo ati kini idiyele - wọn kan lọ si iṣupọ naa. Eyi gba wa laaye pupọ. Nigbati o ba n gba ibeere kan, aṣoju tun ṣe atunṣe ibeere naa, mọ ibiti - o pinnu eyi funrararẹ.

FAQ lori faaji ati iṣẹ ti VKontakte

Ni idi eyi, aṣoju jẹ aaye aabo lodi si ikuna iṣẹ. Ti diẹ ninu ẹrọ ba fa fifalẹ tabi ṣubu, lẹhinna aṣoju loye eyi ati dahun ni ibamu si ẹgbẹ alabara. Eyi n gba ọ laaye lati yọ akoko ipari kuro - koodu ko duro fun ẹrọ lati dahun, ṣugbọn loye pe ko ṣiṣẹ ati pe o nilo lati huwa ni ọna ọtọtọ. Awọn koodu gbọdọ wa ni pese sile fun o daju wipe awọn infomesonu ko nigbagbogbo ṣiṣẹ.

Awọn imuse pato

Nigba miiran a tun fẹ gaan lati ni iru ojutu ti kii ṣe boṣewa bi ẹrọ kan. Ni akoko kanna, a pinnu lati ma lo aṣoju rpc-ti a ti ṣetan, ti a ṣẹda ni pataki fun awọn ẹrọ wa, ṣugbọn lati ṣe aṣoju lọtọ fun iṣẹ naa.

Fun MySQL, eyiti a tun ni nibi ati nibẹ, a lo db-proxy, ati fun ClickHouse - Ile ounjẹ.

O ṣiṣẹ ni gbogbogbo bi eyi. Olupin kan wa, o nṣiṣẹ kPHP, Go, Python - ni gbogbogbo, eyikeyi koodu ti o le lo ilana RPC wa. Awọn koodu nṣiṣẹ tibile lori ohun RPC aṣoju - kọọkan olupin ibi ti awọn koodu ti wa ni be nṣiṣẹ awọn oniwe-ara aṣoju agbegbe. Nigbati o ba beere, aṣoju naa loye ibiti o ti lọ.

FAQ lori faaji ati iṣẹ ti VKontakte

Ti ẹrọ kan ba fẹ lọ si omiiran, paapaa ti o jẹ aladugbo, o lọ nipasẹ aṣoju, nitori pe aladugbo le wa ni ile-iṣẹ data miiran. Enjini ko yẹ ki o gbẹkẹle mimọ ipo ti ohunkohun miiran ju funrararẹ - eyi ni ojutu boṣewa wa. Ṣugbọn dajudaju awọn imukuro wa :)

Ẹya apẹẹrẹ ti a TL-eto ni ibamu si eyi ti gbogbo enjini ṣiṣẹ.

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;

Eyi jẹ ilana ilana alakomeji, afọwọṣe ti o sunmọ julọ eyiti o jẹ protobuf. Eto naa ṣe alaye awọn aaye iyan, awọn oriṣi eka - awọn amugbooro ti awọn iwọn ti a ṣe sinu, ati awọn ibeere. Ohun gbogbo ṣiṣẹ ni ibamu si ilana yii.

RPC lori TL lori TCP/UDP… UDP?

A ni ilana RPC kan fun ṣiṣe awọn ibeere engine ti o nṣiṣẹ lori oke ero TL. Gbogbo eyi ṣiṣẹ lori asopọ TCP/UDP kan. TCP jẹ oye, ṣugbọn kilode ti a nilo UDP nigbagbogbo?

UDP ṣe iranlọwọ yago fun iṣoro ti nọmba nla ti awọn asopọ laarin awọn olupin. Ti olupin kọọkan ba ni aṣoju RPC ati, ni gbogbogbo, o le lọ si eyikeyi engine, lẹhinna awọn ẹgbẹẹgbẹrun awọn asopọ TCP wa fun olupin. Eru kan wa, sugbon ko wulo. Ninu ọran ti UDP, iṣoro yii ko si.

Ko si gbigba ọwọ TCP laiṣe. Eyi jẹ iṣoro aṣoju: nigbati ẹrọ tuntun tabi olupin tuntun ti ṣe ifilọlẹ, ọpọlọpọ awọn asopọ TCP ti ṣeto ni ẹẹkan. Fun awọn ibeere iwuwo fẹẹrẹ kekere, fun apẹẹrẹ, isanwo UDP, gbogbo ibaraẹnisọrọ laarin koodu ati ẹrọ jẹ Awọn idii UDP meji: ọkan fo si ona kan, awọn keji ni awọn miiran. Ọkan yika irin ajo - ati awọn koodu ti gba a esi lati awọn engine lai a ọwọ.

Bẹẹni, gbogbo rẹ kan ṣiṣẹ pẹlu kan gan kekere ogorun ti soso pipadanu. Ilana naa ni atilẹyin fun awọn atunṣe ati awọn akoko akoko, ṣugbọn ti a ba padanu pupọ, a yoo gba fere TCP, eyiti ko ni anfani. A ko wakọ UDP kọja awọn okun.

A ni ẹgbẹẹgbẹrun iru awọn olupin bẹẹ, ati pe ero naa jẹ kanna: idii ti awọn ẹrọ ti fi sori ẹrọ lori olupin ti ara kọọkan. Wọn ti wa ni okeene nikan-asapo lati ṣiṣe ni yarayara bi o ti ṣee lai ìdènà, ati ki o ti wa ni sharded bi nikan-asapo solusan. Ni akoko kanna, a ko ni nkankan diẹ gbẹkẹle ju awọn wọnyi enjini, ati ki o kan pupo ti akiyesi ti wa ni san si jubẹẹlo data ipamọ.

Ibi ipamọ data igbagbogbo

Enjini kọ binlogs. Binlog jẹ faili kan ni ipari eyiti iṣẹlẹ kan fun iyipada ni ipinlẹ tabi data ti ṣafikun. Ni awọn solusan oriṣiriṣi o pe ni oriṣiriṣi: log alakomeji, WAL, AOF, ṣugbọn ilana naa jẹ kanna.

Lati ṣe idiwọ engine lati tun ka gbogbo binlog fun ọpọlọpọ ọdun nigbati o ba tun bẹrẹ, awọn ẹrọ kọ snapshots - lọwọlọwọ ipinle. Ti o ba jẹ dandan, wọn kọkọ ka lati inu rẹ, lẹhinna pari kika lati inu binlog. Gbogbo awọn binlogs ni a kọ ni ọna kika alakomeji kanna - ni ibamu si ero TL, ki awọn alabojuto le ṣakoso wọn ni deede ni lilo awọn irinṣẹ wọn. Ko si iru iwulo fun snapshots. Akọsori gbogbogbo wa ti o tọkasi ẹniti aworan rẹ jẹ int, idan ti ẹrọ, ati ara wo ni ko ṣe pataki fun ẹnikẹni. Eyi jẹ iṣoro pẹlu ẹrọ ti o gbasilẹ aworan naa.

Mo ti yoo ni kiakia apejuwe awọn opo ti isẹ. Olupin kan wa lori eyiti engine nṣiṣẹ. O ṣii iwe afọwọkọ ṣofo tuntun fun kikọ ati kọ iṣẹlẹ kan fun iyipada si rẹ.

FAQ lori faaji ati iṣẹ ti VKontakte

Ni aaye kan, boya o pinnu lati ya aworan ara rẹ, tabi o gba ifihan agbara kan. Olupin naa ṣẹda faili tuntun, kọ gbogbo ipinlẹ rẹ sinu rẹ, ṣafikun iwọn binlog lọwọlọwọ - aiṣedeede - si opin faili naa, o tẹsiwaju kikọ siwaju. A ko ṣẹda binlog tuntun.

FAQ lori faaji ati iṣẹ ti VKontakte

Ni aaye kan, nigbati engine ba tun bẹrẹ, mejeeji yoo wa binlog ati aworan aworan lori disiki naa. Ẹnjini naa ka gbogbo aworan aworan ati gbe ipo rẹ ga ni aaye kan.

FAQ lori faaji ati iṣẹ ti VKontakte

Ka ipo ti o wa ni akoko ti a ṣẹda aworan aworan ati iwọn ti binlog.

FAQ lori faaji ati iṣẹ ti VKontakte

Ka opin binlog lati gba ipo lọwọlọwọ ati tẹsiwaju kikọ awọn iṣẹlẹ siwaju sii. Eyi jẹ ero ti o rọrun; gbogbo awọn ẹrọ wa ṣiṣẹ ni ibamu si rẹ.

Atunse data

Bi abajade, ẹda data ninu wa gbólóhùn-orisun - a kọ sinu binlog kii ṣe iyipada oju-iwe eyikeyi, ṣugbọn eyun yi ibeere. Gan iru si ohun ti o wa lori awọn nẹtiwọki, nikan die-die títúnṣe.

Ilana kanna ni a lo kii ṣe fun ẹda nikan, ṣugbọn tun lati ṣẹda awọn afẹyinti. A ni ẹrọ kan - oluwa kikọ ti o kọwe si binlog. Ni ibikibi miiran nibiti awọn alabojuto ṣeto rẹ, a daakọ binlog yii, ati pe iyẹn ni - a ni afẹyinti.

FAQ lori faaji ati iṣẹ ti VKontakte

Ti o ba nilo kika ajọraLati dinku fifuye kika Sipiyu, ẹrọ kika jẹ ifilọlẹ ni irọrun, eyiti o ka opin binlog ati ṣiṣe awọn aṣẹ wọnyi ni agbegbe.

Aisun nibi jẹ gidigidi kekere, ati awọn ti o jẹ ṣee ṣe lati wa jade bi Elo ni ajọra sile oluwa.

Pipin data ni aṣoju RPC

Bawo ni sharding ṣiṣẹ? Bawo ni aṣoju ṣe loye iru iṣupọ shard lati firanṣẹ si? Koodu naa ko sọ: “Firanṣẹ fun awọn shards 15!” - Rara, eyi ni a ṣe nipasẹ aṣoju.

Ilana ti o rọrun julọ jẹ akọkọ - akọkọ nọmba ninu awọn ìbéèrè.

get(photo100_500) => 100 % N.

Eyi jẹ apẹẹrẹ fun ilana ọrọ memcached ti o rọrun, ṣugbọn, dajudaju, awọn ibeere le jẹ eka ati ti eleto. Apeere gba nọmba akọkọ ninu ibeere naa ati iyoku nigbati a ba pin nipasẹ iwọn iṣupọ.

Eyi wulo nigba ti a fẹ lati ni agbegbe data ti nkan kan. Jẹ ki a sọ pe 100 jẹ olumulo tabi ID ẹgbẹ, ati pe a fẹ ki gbogbo data ti nkan kan wa lori shard kan fun awọn ibeere idiju.

Ti a ko ba bikita bi awọn ibeere ṣe tan kaakiri iṣupọ, aṣayan miiran wa - hashing gbogbo shard.

hash(photo100_500) => 3539886280 % N

A tun gba hash, iyoku ti pipin ati nọmba shard.

Mejeji awọn aṣayan wọnyi ṣiṣẹ nikan ti a ba pese sile fun otitọ pe nigba ti a ba pọ si iwọn iṣupọ, a yoo pin tabi pọ si nipasẹ awọn akoko pupọ. Fun apẹẹrẹ, a ni awọn shards 16, a ko ni to, a fẹ diẹ sii - a le gba 32 lailewu laisi akoko isinmi. Ti a ba fẹ lati pọ si kii ṣe awọn nọmba, yoo wa akoko idinku, nitori a kii yoo ni anfani lati pin ohun gbogbo ni deede laisi awọn adanu. Awọn aṣayan wọnyi wulo, ṣugbọn kii ṣe nigbagbogbo.

Ti a ba nilo lati ṣafikun tabi yọ nọmba lainidii ti awọn olupin, a lo Iduroṣinṣin hashing lori oruka a la Ketama. Ṣugbọn ni akoko kanna, a padanu agbegbe ti data naa patapata; a ni lati dapọ ibeere naa si iṣupọ ki nkan kọọkan da idahun kekere tirẹ pada, lẹhinna dapọ awọn idahun si aṣoju naa.

Awọn ibeere pataki-pupa wa. O dabi eyi: Aṣoju RPC gba ibeere naa, pinnu iru iṣupọ lati lọ si ati pinnu shard naa. Lẹhinna boya awọn ọga kikọ wa, tabi, ti iṣupọ naa ba ni atilẹyin ajọra, o firanṣẹ si ẹda kan lori ibeere. Aṣoju ṣe gbogbo eyi.

FAQ lori faaji ati iṣẹ ti VKontakte

Awọn akọọlẹ

A kọ awọn akọọlẹ ni awọn ọna pupọ. Eyi ti o han julọ ati rọrun ni kọ awọn akọọlẹ si memcache.

ring-buffer: prefix.idx = line

Ipele bọtini kan wa - orukọ log, laini kan, ati pe iwọn log yii wa - nọmba awọn laini. A ya a ID nọmba lati 0 si awọn nọmba ti ila iyokuro 1. Awọn bọtini ni memcache ni a ìpele concatenated pẹlu yi ID nọmba. A fipamọ laini log ati akoko lọwọlọwọ si iye naa.

Nigba ti o jẹ pataki lati ka àkọọlẹ, a gbe jade Multi Gba gbogbo awọn bọtini, lẹsẹsẹ nipasẹ akoko, ati bayi gba a gbóògì log ni akoko gidi. A lo ero naa nigbati o nilo lati yokokoro nkan ni iṣelọpọ ni akoko gidi, laisi fifọ ohunkohun, laisi idaduro tabi gbigba awọn ijabọ si awọn ẹrọ miiran, ṣugbọn log yii ko ṣiṣe ni pipẹ.

Fun ipamọ ti o gbẹkẹle ti awọn akọọlẹ a ni engine kan log-engine. Eyi ni deede idi ti o fi ṣẹda ati pe o jẹ lilo pupọ ni nọmba nla ti awọn iṣupọ. Iṣupọ ti o tobi julọ ti Mo mọ ti awọn ile itaja 600 TB ti awọn akopọ ti o kun.

Ẹrọ naa ti darugbo pupọ, awọn iṣupọ wa ti o ti jẹ ọdun 6-7 tẹlẹ. Awọn iṣoro wa pẹlu rẹ ti a n gbiyanju lati yanju, fun apẹẹrẹ, a bẹrẹ lati lo ClickHouse ti nṣiṣe lọwọ lati tọju awọn akọọlẹ.

Gbigba awọn akọọlẹ ni ClickHouse

Aworan yi fihan bi a ṣe n rin sinu awọn ẹrọ wa.

FAQ lori faaji ati iṣẹ ti VKontakte

Nibẹ ni koodu ti o lọ tibile nipasẹ RPC to RPC-aṣoju, ati awọn ti o ye ibi ti lati lọ si awọn engine. Ti a ba fẹ kọ awọn iforukọsilẹ ni ClickHouse, a nilo lati yi awọn ẹya meji pada ninu ero yii:

  • ropo diẹ ninu awọn engine pẹlu ClickHouse;
  • rọpo aṣoju RPC, eyiti ko le wọle si ClickHouse, pẹlu diẹ ninu ojutu ti o le, ati nipasẹ RPC.

Awọn engine ni o rọrun - a ropo o pẹlu kan olupin tabi a iṣupọ apèsè pẹlu ClickHouse.

Ati lati lọ si ClickHouse, a ṣe Ile Kitten. Ti a ba lọ taara lati KittenHouse si ClickHouse, kii yoo koju. Paapaa laisi awọn ibeere, o ṣafikun lati awọn asopọ HTTP ti nọmba nla ti awọn ẹrọ. Fun ero lati ṣiṣẹ, lori olupin pẹlu ClickHouse aṣoju yiyipada agbegbe ti dide, eyi ti a ti kọ ni iru ọna ti o le koju awọn ipele ti a beere fun awọn asopọ. O tun le fa data laarin ara rẹ ni igbẹkẹle.

FAQ lori faaji ati iṣẹ ti VKontakte

Nigba miiran a ko fẹ lati ṣe imuse ero RPC ni awọn solusan ti kii ṣe boṣewa, fun apẹẹrẹ, ni nginx. Nitorinaa, KittenHouse ni agbara lati gba awọn akọọlẹ nipasẹ UDP.

FAQ lori faaji ati iṣẹ ti VKontakte

Ti olufiranṣẹ ati olugba ti awọn akọọlẹ ṣiṣẹ lori ẹrọ kanna, lẹhinna iṣeeṣe ti sisọnu apo-iwe UDP kan laarin agbalejo agbegbe jẹ kekere. Gẹgẹbi adehun laarin iwulo lati ṣe RPC ni ojutu ẹni-kẹta ati igbẹkẹle, a kan lo fifiranṣẹ UDP nikan. A yoo pada si ero yii nigbamii.

Abojuto

A ni awọn oriṣi meji ti awọn akọọlẹ: awọn ti a gba nipasẹ awọn oludari lori olupin wọn ati awọn ti a kọ nipasẹ awọn olupilẹṣẹ lati koodu. Wọn ṣe deede si awọn oriṣi meji ti awọn metiriki: eto ati ọja.

Awọn metiriki eto

O ṣiṣẹ lori gbogbo awọn olupin wa netdata, eyi ti o gba awọn iṣiro ati firanṣẹ wọn si Erogba ayaworan. Nitorina, ClickHouse ti lo bi eto ipamọ, kii ṣe Whisper, fun apẹẹrẹ. Ti o ba jẹ dandan, o le ka taara lati ClickHouse, tabi lo Grafana fun awọn metiriki, awọn aworan ati awọn iroyin. Gẹgẹbi awọn olupilẹṣẹ, a ni iraye si Netdata ati Grafana.

Ọja metiriki

Fun irọrun, a ti kọ ọpọlọpọ awọn nkan. Fun apẹẹrẹ, ṣeto awọn iṣẹ lasan wa ti o gba ọ laaye lati kọ Awọn iṣiro, Awọn iye UniqueCounts sinu awọn iṣiro, eyiti a firanṣẹ si ibikan siwaju.

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

$stats = statlogsStatData($params)

Lẹhinna, a le lo tito lẹsẹsẹ ati awọn asẹ akojọpọ ati ṣe ohun gbogbo ti a fẹ lati awọn iṣiro - kọ awọn aworan, tunto Watchdogs.

A kọ pupọ ọpọlọpọ awọn metiriki nọmba awọn iṣẹlẹ jẹ lati 600 bilionu si 1 aimọye fun ọjọ kan. Sibẹsibẹ, a fẹ lati tọju wọn o kere kan tọkọtaya ti odunlati ni oye awọn aṣa ni awọn metiriki. Fifi gbogbo rẹ papọ jẹ iṣoro nla ti a ko ti yanju sibẹsibẹ. Emi yoo sọ fun ọ bi o ti n ṣiṣẹ fun awọn ọdun diẹ sẹhin.

A ni awọn iṣẹ ti o kọ awọn metiriki wọnyi to agbegbe memcachelati dinku nọmba awọn titẹ sii. Ni ẹẹkan ni akoko kukuru ti agbegbe ti ṣe ifilọlẹ awọn iṣiro-daemon gba gbogbo awọn igbasilẹ. Nigbamii ti, ẹmi eṣu naa dapọ awọn metiriki si awọn ipele olupin meji àkọọlẹ-odè, eyi ti o ṣajọpọ awọn iṣiro lati inu opo ti awọn ẹrọ wa ki Layer lẹhin wọn ko ku.

FAQ lori faaji ati iṣẹ ti VKontakte

Ti o ba jẹ dandan, a le kọ taara si awọn akọọlẹ-odè.

FAQ lori faaji ati iṣẹ ti VKontakte

Ṣugbọn kikọ lati koodu taara si awọn agbowọ, ti o kọja stas-daemom, jẹ ojutu ti ko ni iwọn nitori pe o mu ki ẹru naa pọ si lori agbowọ. Ojutu naa dara nikan ti o ba jẹ fun idi kan a ko le gbe awọn iṣiro memcache-daemon sori ẹrọ naa, tabi o kọlu ati pe a lọ taara.

Nigbamii ti, awọn akọọlẹ-odè dapọ awọn iṣiro sinu meowDB - Eyi ni aaye data wa, eyiti o tun le fipamọ awọn metiriki.

FAQ lori faaji ati iṣẹ ti VKontakte

Lẹhinna a le ṣe awọn aṣayan alakomeji “sunmọ-SQL” lati koodu naa.

FAQ lori faaji ati iṣẹ ti VKontakte

Ṣàdánwò

Ni akoko ooru ti 2018, a ni hackathon ti inu, ati imọran wa lati gbiyanju lati rọpo apakan pupa ti aworan atọka pẹlu nkan ti o le fipamọ awọn metiriki ni ClickHouse. A ni awọn akọọlẹ lori ClickHouse - kilode ti o ko gbiyanju rẹ?

FAQ lori faaji ati iṣẹ ti VKontakte

A ni ero ti o kọ awọn akọọlẹ nipasẹ KittenHouse.

FAQ lori faaji ati iṣẹ ti VKontakte

A pinnu fi miran "* Ile" si awọn aworan atọka, eyi ti yoo gba awọn iṣiro gangan ni ọna kika bi koodu wa ṣe kọ wọn nipasẹ UDP. Lẹhinna * Ile yi wọn pada si awọn ifibọ, bii awọn akọọlẹ, eyiti KittenHouse loye. O le fi awọn igbasilẹ wọnyi han ni pipe si ClickHouse, eyiti o yẹ ki o ni anfani lati ka wọn.

FAQ lori faaji ati iṣẹ ti VKontakte

Eto pẹlu memcache, stats-daemon ati database-odè data ti wa ni rọpo pẹlu yi ọkan.

FAQ lori faaji ati iṣẹ ti VKontakte

Eto pẹlu memcache, stats-daemon ati database-odè data ti wa ni rọpo pẹlu yi ọkan.

  • Ifiweranṣẹ wa lati koodu nibi, eyiti a kọ ni agbegbe ni StatsHouse.
  • StatsHouse kọ awọn metiriki UDP, ti yipada tẹlẹ sinu awọn ifibọ SQL, si KittenHouse ni awọn ipele.
  • KittenHouse firanṣẹ wọn si ClickHouse.
  • Ti a ba fẹ ka wọn, lẹhinna a ka wọn nipa gbigbe StatsHouse - taara lati ClickHouse ni lilo SQL deede.

Ṣe o tun wa adanwo, sugbon a fẹ bi o ti wa ni jade. Ti a ba ṣatunṣe awọn iṣoro pẹlu ero, lẹhinna boya a yoo yipada si rẹ patapata. Tikalararẹ, Mo nireti bẹ.

Ero ko gba irin. Awọn olupin diẹ ni o nilo, awọn iṣiro-daemons agbegbe ati awọn akojo-odè ko nilo, ṣugbọn ClickHouse nilo olupin ti o tobi ju awọn ti o wa ninu ero lọwọlọwọ. Awọn olupin diẹ ni o nilo, ṣugbọn wọn gbọdọ jẹ gbowolori diẹ sii ati agbara diẹ sii.

Ranṣẹ

Ni akọkọ, jẹ ki a wo imuṣiṣẹ PHP. A ti wa ni sese ni Git: lo GitLab и TeamCity fun imuṣiṣẹ. Awọn ẹka idagbasoke ni a dapọ si ẹka titunto si, lati ọdọ oluwa fun idanwo wọn ti dapọ si iṣeto, ati lati iṣeto sinu iṣelọpọ.

Ṣaaju imuṣiṣẹ, ẹka iṣelọpọ lọwọlọwọ ati ọkan ti tẹlẹ ni a mu, ati pe awọn faili ti o yatọ ni a gbero ninu wọn - awọn ayipada: ṣẹda, paarẹ, yipada. Yi iyipada ti wa ni igbasilẹ ninu binlog ti ẹrọ aladakọ pataki kan, eyiti o le ṣe awọn ayipada ni kiakia si gbogbo ọkọ oju-omi titobi olupin wa. Ohun ti a lo nibi kii ṣe didakọ taara, ṣugbọn isodipupo ofofo, nigbati olupin kan ba fi awọn ayipada ranṣẹ si awọn aladugbo ti o sunmọ, awọn si awọn aladugbo wọn, ati bẹbẹ lọ. Eyi n gba ọ laaye lati mu koodu dojuiwọn ni awọn mewa ati awọn iwọn iṣẹju-aaya kọja gbogbo ọkọ oju-omi kekere naa. Nigbati iyipada ba de ẹda ti agbegbe, o kan awọn abulẹ wọnyi si rẹ agbegbe faili eto. Rollback tun ṣe ni ibamu si ero kanna.

A tun ran kPHP lọpọlọpọ ati pe o tun ni idagbasoke tirẹ lori Git gẹgẹ bi aworan atọka loke. Niwon eyi Alakomeji olupin HTTP, lẹhinna a ko le gbejade iyatọ - alakomeji itusilẹ wọn awọn ọgọọgọrun MB. Nitorinaa, aṣayan miiran wa nibi - ẹya ti kọ si bilogi aladakọ. Pẹlu kikọ kọọkan o pọ si, ati lakoko yiyi o tun pọ si. Ẹya replicated to apèsè. Awọn aladaakọ agbegbe rii pe ẹya tuntun ti wọ inu binlog, ati nipasẹ isọdọtun olofofo kanna wọn mu ẹya tuntun ti alakomeji fun ara wọn, laisi aarẹ olupin oluwa wa, ṣugbọn farabalẹ tan ẹru naa kọja nẹtiwọọki naa. Ohun ti o tẹle ore-ọfẹ atunbere fun titun ti ikede.

Fun awọn ẹrọ wa, eyiti o tun jẹ awọn alakomeji pataki, ero naa jọra pupọ:

  • git titunto si ẹka;
  • alakomeji in .deb;
  • awọn ti ikede ti kọ si binlog copyfast;
  • tun ṣe si awọn olupin;
  • olupin naa fa jade alabapade .dep;
  • dpkg -i;
  • ore-ọfẹ tun bẹrẹ si ẹya tuntun.

Iyatọ wa ni pe alakomeji wa ni akopọ ninu awọn ile-ipamọ .deb, ati nigbati fifa jade wọn dpkg -i ti wa ni gbe lori eto. Kini idi ti kPHP ti wa ni ransogun bi alakomeji, ati awọn enjini ti wa ni ran bi dpkg? Ó ṣẹlẹ̀ lọ́nà yẹn. O ṣiṣẹ - maṣe fi ọwọ kan.

Awọn ọna asopọ to wulo:

Alexei Akulovich jẹ ọkan ninu awọn ti o ṣe iranlọwọ gẹgẹbi apakan ti Igbimọ Eto PHP Russia lori May 17th yoo di iṣẹlẹ ti o tobi julọ fun awọn olupilẹṣẹ PHP ni awọn akoko aipẹ. Wo kini PC tutu ti a ni, kini agbohunsoke (meji ninu wọn ti wa ni sese PHP mojuto!) - dabi bi ohun ti o ko ba le padanu ti o ba ti o ba kọ PHP.

orisun: www.habr.com

Fi ọrọìwòye kun