FAQ na ije na ọrụ nke VKontakte

Akụkọ ihe mere eme nke VKontakte dị na Wikipedia, Pavel n'onwe ya gwara ya. Ọ dị ka onye ọ bụla amaralarị ya. Banyere internals, ije na nhazi nke saịtị na HighLoad++ Pavel gwara m azụ na 2010. Ọtụtụ sava agbapụtala kemgbe ahụ, yabụ anyị ga-emelite ozi ahụ: anyị ga-ewepụ ya, wepụ ihe dị n'ime ya, tụọ ya ma lelee ngwaọrụ VK site na teknụzụ.

FAQ na ije na ọrụ nke VKontakte

Alexei Akulovich (AterCattus) onye nrụpụta azụ na otu VKontakte. Edemede nke akụkọ a bụ azịza mkpokọta maka ajụjụ ndị a na-ajụkarị gbasara ọrụ nke ikpo okwu, akụrụngwa, sava na mmekọrịta dị n'etiti ha, mana ọ bụghị maka mmepe, ya bụ. gbasara ígwè. Iche iche, banyere ọdụ data na ihe VK nwere kama, banyere ịnakọta ndekọ na nlekota oru dum n'ozuzu. Nkọwa n'okpuru ịkpụ.



Ihe karịrị afọ anọ m na-arụ ọrụ dị iche iche metụtara azụ azụ.

  • Na-ebugote, na-echekwa, nhazi, na-ekesa mgbasa ozi: video, ndụ gụgharia, ọdịyo, foto, akwụkwọ.
  • Akụrụngwa, ikpo okwu, nlekota onye nrụpụta, ndekọ, cache mpaghara, CDN, protocol RPC nke nwe ya.
  • Njikọ na ọrụ mpụga: ọkwa ntinye, ntule njikọ mpụga, ndepụta RSS.
  • Inyere ndị ọrụ ibe aka ajụjụ dị iche iche, azịza nke chọrọ mmiri mmiri n'ime koodu amaghị.

N'oge a, enwere m aka n'ọtụtụ akụkụ nke saịtị ahụ. Achọrọ m ịkọrọ ahụmịhe a.

General ije

Ihe niile, dị ka ọ dị na mbụ, na-amalite site na sava ma ọ bụ otu sava na-anabata arịrịọ.

Ihe nkesa n'ihu

Ihe nkesa dị n'ihu na-anabata arịrịọ site na HTTPS, RTMP na WSS.

HTTPS - Ndị a bụ arịrịọ maka isi na ụdị weebụ mkpanaka nke saịtị ahụ: vk.com na m.vk.com, yana ndị ọrụ gọọmentị na ndị na-abụghị ndị ahịa API anyị: ndị ahịa mkpanaka, ndị ozi. Anyị nwere nnabata RTMP-traffic maka Live mgbasa ozi na iche iche n'ihu sava na WSS- njikọ maka API gụgharia.

Maka HTTPS na WSS na sava ọ bara uru nginx. Maka mgbasa ozi RTMP, anyị gbanwere na nso nso a gaa na ngwọta nke anyị nri, mana ọ gafere oke akụkọ a. Maka nnabata mmejọ, sava ndị a na-akpọsa adreesị IP nkịtị ma na-eme ihe n'ìgwè ka ọ bụrụ na enwere nsogbu na otu sava ahụ, arịrịọ onye ọrụ anaghị efu. Maka HTTPS na WSS, otu sava ndị a na-ezochi okporo ụzọ iji were akụkụ nke ibu CPU n'onwe ha.

Anyị agaghị ekwu n'ihu maka WSS na RTMP, kama ọ bụ naanị maka arịrịọ HTTPS ọkọlọtọ, nke a na-ejikọta ya na ọrụ weebụ.

Backend

N'azụ ihu a na-enwekarị sava azụ azụ. Ha na-ahazi arịrịọ nke sava ihu na-enweta n'aka ndị ahịa.

a sava kPHP, nke HTTP daemon na-arụ ọrụ, n'ihi na HTTPS emebielarị. kPHP bụ ihe nkesa na-arụ ọrụ ụdị prefork: na-amalite usoro nna ukwu, ọtụtụ usoro ụmụaka, na-agafe oghere na-ege ha ntị ma na-edozi arịrịọ ha. N'okwu a, usoro anaghị ebido n'etiti arịrịọ ọ bụla sitere n'aka onye ọrụ, mana naanị tọgharịa steeti ha na steeti efu efu mbụ - ịrịọ arịrịọ mgbe arịrịọ, kama ịmalitegharị.

Ibu nkesa

All backends anyị abụghị nnukwu ọdọ mmiri nke igwe nwere ike hazie arịrịọ ọ bụla. Anyị ha kewara n'ime otu dị iche iche: izugbe, mkpanaka, api, vidiyo, nhazi ... Nsogbu dị na igwe igwe dị iche iche agaghị emetụta ndị ọzọ niile. N'ọnọdụ nsogbu na vidiyo, onye ọrụ na-ege egwu agaghị ama ọbụna nsogbu ndị ahụ. Kedu azụ azụ iji zipu arịrịọ ahụ bụ nginx na-ekpebi n'ihu dịka nhazi ahụ.

Nchịkọta metric na nhazigharị

Iji ghọta ụgbọ ala ole anyị kwesịrị inwe na otu ọ bụla, anyị adaberela na QPS. Azụ azụ dị iche iche, ha nwere arịrịọ dị iche iche, arịrịọ ọ bụla nwere mgbagwoju anya dị iche iche nke ịgbakọ QPS. Ya mere anyị anyị na-arụ ọrụ na echiche nke ibu na ihe nkesa n'ozuzu - na CPU na perf.

Anyị nwere ọtụtụ puku sava ndị dị otú ahụ. Ihe nkesa anụ ahụ ọ bụla na-agba otu kPHP iji megharịa cores niile (n'ihi na kPHP bụ otu eri).

Ihe nkesa ọdịnaya

CS ma ọ bụ ihe nkesa ọdịnaya bụ nchekwa. CS bụ ihe nkesa na-echekwa faịlụ ma na-ahazi faịlụ ndị ebugoro na ụdị ọrụ mmekọrịta ndabere na mpaghara nke isi webụ na-ekenye ya.

Anyị nwere iri puku kwuru iri puku sava anụ ahụ na-echekwa faịlụ. Ndị ọrụ na-enwe mmasị bulite faịlụ, ọ na-amasịkwa anyị ịchekwa ma kesaa ha. A na-emechi ụfọdụ sava ndị a site na sava pu/pp pụrụ iche.

pu/pp

Ọ bụrụ na imepee taabụ netwọk na VK, ị hụrụ pu/pp.

FAQ na ije na ọrụ nke VKontakte

Kedu ihe bụ pu/pp? Ọ bụrụ na anyị na-emechi otu ihe nkesa na-esote, mgbe ahụ enwere nhọrọ abụọ maka ibugo na nbudata faịlụ na ihe nkesa ahụ mechiri: ozugbo site http://cs100500.userapi.com/path ma ọ bụ site na nkesa etiti - http://pu.vk.com/c100500/path.

Pu bụ aha akụkọ ihe mere eme maka bulite foto, na pp bụ foto proxy. Ya bụ, otu ihe nkesa bụ maka ibugo foto, nke ọzọ bụ maka ibugote. Ugbu a, ọ bụghị naanị foto ka a na-ebugo, mana echekwara aha ahụ.

Sava ndị a kwụsị oge HTTPSiji wepu ibu ihe nhazi na nchekwa. Ọzọkwa, ebe ọ bụ na a na-ahazi faịlụ onye ọrụ na sava ndị a, ozi na-adịchaghị mma echekwara na igwe ndị a, ka mma. Dịka ọmụmaatụ, igodo nzuzo HTTPS.

Ebe ọ bụ na igwe ndị ọzọ na-emechi igwe ndị ahụ, anyị nwere ike ịghara inye ha IP mpụga "ọcha", yana nye "isi awọ". Otu a anyị si echekwa na ọdọ mmiri IP ma kwe nkwa na anyị ga-echebe igwe ndị ahụ site na ịnweta mpụga - ọ nweghị IP iji banye na ya.

Nkwụghachi azụ karịa IP nkekọrịta. N'ihe gbasara nnabata mmejọ, atụmatụ ahụ na-arụ ọrụ otu - ọtụtụ sava anụ ahụ nwere IP nkịtị, na ngwaike dị n'ihu ha na-ahọrọ ebe izipu arịrịọ ahụ. Aga m ekwu maka nhọrọ ndị ọzọ ma emechaa.

Isi okwu na-ese okwu bụ na na nke a onye ahịa na-edobe njikọ ole na ole. Ọ bụrụ na e nwere otu IP maka ọtụtụ igwe - ya na otu onye ọbịa: pu.vk.com ma ọ bụ pp.vk.com, ihe nchọgharị ndị ahịa nwere oke na ọnụ ọgụgụ nke arịrịọ n'otu oge maka otu onye ọbịa. Mana n'oge HTTP/2 juru ebe niile, ekwere m na nke a adịkwaghị mkpa.

Ihe ọghọm doro anya nke atụmatụ ahụ bụ na ọ ga-emerịrị ya gbapụta okporo ụzọ niile, nke na-aga na nchekwa, site na ihe nkesa ọzọ. Ebe ọ bụ na anyị na-eji igwe na-ebugharị okporo ụzọ, anyị enweghị ike ịgbanye nnukwu okporo ụzọ, dịka ọmụmaatụ, vidiyo, na-eji otu atụmatụ ahụ. Anyị na-ebunye ya ozugbo - njikọ dị iche maka nchekwa dị iche iche maka vidiyo. Anyị na-ebufe ọdịnaya dị mfe site na proxy.

N'oge na-adịbeghị anya, anyị nwetara ụdị proxy emelitere. Ugbu a, m ga-agwa gị otú ha si dị iche na ndị nkịtị na ihe kpatara nke a ji dị mkpa.

Sun

Na Septemba 2017, Oracle, nke zụtaburu Sun, chụrụ ọtụtụ ndị ọrụ Sun n'ọrụ. Anyị nwere ike ịsị na n'oge a, ụlọ ọrụ ahụ kwụsịrị ịdị adị. Mgbe ị na-ahọrọ aha maka usoro ọhụrụ, ndị nchịkwa anyị kpebiri ịkwụ ụtụ maka ebe nchekwa nke ụlọ ọrụ a ma kpọọ aha usoro ọhụrụ Sun. N'ime onwe anyị, anyị na-akpọ ya "anyanwụ".

FAQ na ije na ọrụ nke VKontakte

pp nwere nsogbu ole na ole. Otu IP kwa otu - cache na-adịghị arụ ọrụ. Ọtụtụ sava anụ ahụ na-ekekọrịta adreesị IP nkịtị, ọ nweghịkwa ụzọ ijikwa nke nkesa nke arịrịọ ahụ ga-aga. Ya mere, ọ bụrụ na ndị ọrụ dị iche iche na-abịa maka otu faịlụ ahụ, mgbe ahụ ọ bụrụ na enwere cache na sava ndị a, faịlụ ahụ na-agwụ na cache nke ihe nkesa ọ bụla. Nke a bụ atụmatụ na-adịghị mma, mana ọ nweghị ihe a ga-eme.

N'ihi ya - anyị enweghị ike imebi ọdịnaya, n'ihi na anyị enweghị ike ịhọrọ otu ihe nkesa maka otu a - ha nwere IP nkịtị. Ọzọkwa maka ụfọdụ esịtidem ihe mere anyị nwere ọ gaghị ekwe omume ịwụnye ụdị nkesa na mpaghara. Ha guzo naanị na St. Petersburg.

Site na anyanwụ, anyị gbanwere usoro nhọrọ. Ugbu a, anyị nwere ọ bụlacast routing: dynamic routing, anycast, daemon na-enyocha onwe ya. Ihe nkesa ọ bụla nwere IP nke ya, mana subnet nkịtị. A na-ahazi ihe niile n'ụzọ na ọ bụrụ na otu ihe nkesa daa, a na-agbasa okporo ụzọ na sava ndị ọzọ nke otu ìgwè na-akpaghị aka. Ugbu a, ọ ga-ekwe omume ịhọrọ otu ihe nkesa, enweghị nnukwu caching, na ntụkwasị obi emetụtaghị.

Nkwado arọ. Ugbu a, anyị nwere ike ịwụnye igwe nke ike dị iche iche dị ka ọ dị mkpa, nakwa, ọ bụrụ na nsogbu nwa oge, gbanwee ihe dị arọ nke "anyanwụ" na-arụ ọrụ iji belata ibu dị na ha, ka ha wee "ezu ike" ma malite ịrụ ọrụ ọzọ.

Ịkekọrịta site na id ọdịnaya. Ihe na-atọ ọchị banyere sharding: anyị na-emekarị shard ọdịnaya ka ndị ọrụ dị iche iche gaa n'otu faịlụ site na otu "anyanwụ" ka ha nwee oghere nkịtị.

N'oge na-adịbeghị anya, anyị malitere ngwa "Clover". Nke a bụ ajụjụ ịntanetị na mgbasa ozi na-ebi ndụ, ebe onye ọbịa na-ajụ ajụjụ na ndị ọrụ na-aza ozugbo, na-ahọrọ nhọrọ. Ngwa nwere nkata ebe ndị ọrụ nwere ike ịkparịta ụka. Enwere ike jikọọ na mgbasa ozi n'otu oge ihe karịrị 100 puku mmadụ. Ha niile na-ede ozi ezigara ndị niile sonyere, na avatar na-abịa yana ozi ahụ. Ọ bụrụ na 100 puku mmadụ na-abịa maka otu avatar na otu "anyanwụ", mgbe ahụ ọ nwere ike tụgharịa n'azụ igwe ojii.

Iji nagide mgbawa nke arịrịọ maka otu faịlụ ahụ, ọ bụ maka ụfọdụ ụdị ọdịnaya ka anyị na-agbanye atụmatụ nzuzu na-agbasa faịlụ na "anyanwụ" niile dị na mpaghara ahụ.

Anyanwụ si n'ime

Weghachite proxy na nginx, cache ma ọ bụ na RAM ma ọ bụ na diski Optane/NVMe ngwa ngwa. Ọmụmaatụ: http://sun4-2.userapi.com/c100500/path - njikọ na "anyanwụ", nke dị na mpaghara nke anọ, ìgwè nkesa nke abụọ. Ọ na-emechi faịlụ ụzọ, nke dabere na ihe nkesa 100500.

cover

Anyị na-agbakwunye otu ọnụ na atụmatụ ihe owuwu anyị - gburugburu ebe nchekwa.

FAQ na ije na ọrụ nke VKontakte

N'okpuru bụ eserese nhazi mpaghara cache, e nwere ihe dị ka iri abụọ n’ime ha. Ndị a bụ ebe nchekwa na "anyanwụ" dị, nke nwere ike ịchekwa okporo ụzọ site na onwe ha.

FAQ na ije na ọrụ nke VKontakte

Nke a bụ caching nke ọdịnaya multimedia; ọ nweghị data onye ọrụ echekwara ebe a - naanị egwu, vidiyo, foto.

Iji chọpụta mpaghara onye ọrụ, anyị anyị na-anakọta prefixes netwọk BGP ekwuputara na mpaghara. N'ihe banyere ọdịda, anyị ga-enyochakwa nchekwa data geoip ma ọ bụrụ na anyị enweghị ike ịchọta IP site na prefixes. Anyị na-ekpebi mpaghara ahụ site na IP onye ọrụ. Na koodu ahụ, anyị nwere ike ilele otu mpaghara ma ọ bụ karịa nke onye ọrụ - isi ihe ndị ọ kacha nso na geographically.

Olee otú ọ na-arụ ọrụ?

Anyị na-agụ ewu ewu nke faịlụ site na mpaghara. Enwere ọnụọgụ cache mpaghara ebe onye ọrụ dị, yana njirimara faịlụ - anyị na-ewere ụzọ abụọ a wee bulie ọkwa na nbudata ọ bụla.

N'otu oge ahụ, ndị mmụọ ọjọọ - ọrụ na mpaghara - site n'oge ruo n'oge na-abịa API wee sị: "Abụ m ndị dị otú ahụ na ndị dị otú ahụ cache, nye m ndepụta nke kasị ewu ewu faịlụ na mpaghara m na-erubeghị m. ” API na-ebuga ụyọkọ faịlụ ahaziri site na ọkwa, daemon na-ebudata ha, na-ebuga ha na mpaghara ma na-ebuga faịlụ ndị ahụ n'ebe ahụ. Nke a bụ isi ihe dị iche n'etiti pu/pp na Sun site na cache: ha na-enye faịlụ ahụ n'onwe ha ozugbo, ọbụlagodi na faịlụ a adịghị na cache, cache na-ebu ụzọ budata faịlụ ahụ n'onwe ya, wee malite inyeghachi ya.

N'okwu a, anyị ga-enweta ọdịnaya nso ndị ọrụ na ịgbasa ibu netwọkụ. Dịka ọmụmaatụ, naanị site na cache Moscow anyị na-ekesa ihe karịrị 1 Tbit / s n'oge awa kacha elu.

Mana enwere nsogbu - sava cache abụghị roba. Maka ọdịnaya ama ama nke ukwuu, mgbe ụfọdụ enweghị netwọk zuru oke maka sava dị iche. Sava cache anyị bụ 40-50 Gbit/s, mana enwere ọdịnaya na-egbochi ọwa ahụ kpamkpam. Anyị na-aga n'ihu iji mejuputa nchekwa nke ihe karịrị otu faịlụ ndị ama ama na mpaghara. Enwere m olileanya na anyị ga-emejuputa ya na njedebe nke afọ.

Anyị lere anya na ụlọ ọrụ izugbe.

  • Sava n'ihu na-anabata arịrịọ.
  • Na-akwado arịrịọ usoro ahụ.
  • Ebe nchekwa ejiri ụdị proxies abụọ mechie.
  • Cache mpaghara.

Kedu ihe na-efu na eserese a? N'ezie, ọdụ data nke anyị na-echekwa data.

Databases ma ọ bụ engines

Anyị na-akpọ ha ọ bụghị ọdụ data, kama engines - Engines, n'ihi na anyị na-adịghị enwe ọdụ data n'ozuzu anabata n'echiche.

FAQ na ije na ọrụ nke VKontakte

Nke a bụ ihe dị mkpa. Nke a mere n'ihi na na 2008-2009, mgbe VK nwere ihe mgbawa ibu na ewu ewu, oru ngo na-arụ ọrụ kpamkpam na MySQL na Memcache na e nwere nsogbu. MySQL nwere mmasị ịkụda ma mebie faịlụ, mgbe nke ahụ gasịrị, ọ gaghị agbake, na Memcache ji nwayọọ nwayọọ mebie na arụmọrụ ma malitegharịa.

Ọ na-apụta na ọrụ na-ewu ewu na-arịwanye elu nwere nchekwa na-adịgide adịgide, nke na-emebi data, na cache, nke na-ebelata. N'ọnọdụ ndị dị otú ahụ, ọ na-esiri ike ịmepụta ọrụ na-eto eto. E kpebiri na anyị ga-anwa idegharị ihe ndị dị oké mkpa nke ọrụ ahụ lekwasịrị anya na ịnyịnya ígwè anyị.

Ihe ngwọta ya gara nke ọma. Enwere ohere iji mee nke a, yana oke mkpa, n'ihi na ụzọ ndị ọzọ nke scaling adịghị adị n'oge ahụ. Enweghị ụyọkọ ọdụ data, NoSQL adịbeghị, enwere naanị MySQL, Memcache, PostrgreSQL - na ọ bụ ya.

Ọrụ zuru ụwa ọnụ. Ndị otu anyị na-emepụta C na-eduzi mmepe ahụ ma mee ihe niile n'ụzọ na-agbanwe agbanwe. N'agbanyeghị injin ahụ, ha niile nwere ihe dịka otu faịlụ nke edere na diski, otu mmalite mmalite, nhazi akara n'otu ụzọ ahụ, ma na-akpa àgwà dịka otu ihe ahụ ma ọ bụrụ na ọnọdụ ihu na nsogbu dị. Site na uto nke engines, ọ dị mfe maka ndị nchịkwa iji rụọ ọrụ usoro - ọ dịghị ụlọ zoo nke kwesịrị ịnọgide na-enwe, ha ga-amụtakwa ka esi arụ ọrụ nchekwa data ọhụrụ nke ndị ọzọ, nke mere ka o kwe omume ngwa ngwa na adaba mụbaa nọmba ha.

Ụdị nke igwe

Ndị otu ahụ dere nnọọ igwe ole na ole. Nke a bụ ụfọdụ n'ime ha: enyi, hints, onyonyo, ipdb, mkpụrụedemede, ndepụta, ndekọ, memcached, meowdb, akụkọ, nostradamus, foto, listi ọkpụkpọ, pmemcached, igbe igbe, ọchụchọ, nchekwa, mmasị, ọrụ,…

Maka ọrụ ọ bụla nke chọrọ usoro data akọwapụtara ma ọ bụ usoro arịrịọ a na-ahụkarị, ndị otu C na-ede injin ọhụrụ. Gịnị mere.

Anyị nwere injin dị iche kpochapụrụ, nke yiri nke a na-emekarị, ma na ụyọkọ ihe ọma, na nke na-adịghị akwụsịlata. Ọ bụghị ClickHouse, mana ọ na-arụkwa ọrụ. Dị iche pmemcached Ndi na-adịgide adịgide memcached, nke nwekwara ike ịchekwa data na diski, Ọzọkwa, karịa ka ọ dabara na RAM, ka ị ghara ida data mgbe ịmalitegharịa. Enwere engines dị iche iche maka ọrụ onye ọ bụla: kwụ n'ahịrị, ndepụta, setịpụ - ihe niile ọrụ anyị chọrọ.

ụyọkọ

Site n'echiche koodu, ọ dịghị mkpa iche echiche maka engines ma ọ bụ ọdụ data dị ka usoro, ụlọ ọrụ, ma ọ bụ ihe atụ. Koodu na-arụ ọrụ kpọmkwem na ụyọkọ, yana otu igwe - otu ụdị kwa ụyọkọ. Ka anyị kwuo na enwere ụyọkọ memcached - ọ bụ naanị otu igwe.

Koodu ahụ achọghị ịma ebe anụ ahụ, nha, ma ọ bụ ọnụọgụ nke sava ma ọlị. Ọ na-eji otu njirimara na-aga ụyọkọ ahụ.

Iji mee nke a, ịkwesịrị ịgbakwunye otu ihe ọzọ dị n'etiti koodu na engines - proxy.

Onye nnọchi anya RPC

Proxy njikọ ụgbọ ala, nke fọrọ nke nta ka ọ bụrụ saịtị niile na-agba ọsọ. N'otu oge ahụ anyị nwere enweghị nchọpụta ọrụ - kama, enwere nhazi maka proxy a, nke maara ebe ụyọkọ niile na chard niile nke ụyọkọ a. Nke a bụ ihe admins na-eme.

Ndị mmemme anaghị echebara ego ole, ebe na ihe ọ na-efu - ha na-aga na ụyọkọ ahụ. Nke a na-enye anyị ohere nke ukwuu. Mgbe ị na-enweta arịrịọ, onye nnọchiteanya na-emegharị arịrịọ ahụ, mara ebe - ọ na-ekpebi nke a n'onwe ya.

FAQ na ije na ọrụ nke VKontakte

N'okwu a, proxy bụ ebe nchekwa megide ọdịda ọrụ. Ọ bụrụ na ụfọdụ engine na-akwụsịlata ma ọ bụ daa, mgbe ahụ, onye nnọchiteanya ahụ ghọtara nke a ma zaghachi ya n'akụkụ ndị ahịa. Nke a na-enye gị ohere iwepụ oge nkwụsị - koodu ahụ anaghị echere ka engine ahụ zaghachi, ma ọ ghọtara na ọ naghị arụ ọrụ ma ọ dị mkpa ka ọ na-akpa àgwà n'ụzọ ụfọdụ. A ghaghị ịkwado koodu ahụ maka eziokwu ahụ na ọdụ data anaghị arụ ọrụ mgbe niile.

Mmejuputa a kapịrị ọnụ

Mgbe ụfọdụ, anyị ka na-achọ n'ezie inwe ụfọdụ ụdị ngwọta na-abụghị ọkọlọtọ dị ka engine. N'otu oge ahụ, e kpebiri na anyị agaghị eji rpc-proxy anyị dị njikere, nke emepụtara kpọmkwem maka engines anyị, kama ịme proxy dị iche maka ọrụ ahụ.

Maka MySQL, nke anyị ka nwere ebe a na ebe ahụ, anyị na-eji db-proxy, yana maka ClickHouse - Ụlọ kichin.

Ọ na-arụ ọrụ n'ozuzu dị ka nke a. Enwere ụfọdụ ihe nkesa, ọ na-agba kPHP, Go, Python - n'ozuzu, koodu ọ bụla nwere ike iji usoro RPC anyị. Koodu a na-agba na mpaghara na proxy RPC - nkesa ọ bụla ebe koodu dị na-agba proxy mpaghara nke ya. Mgbe a rịọrọ ya, onye nnọchiteanya ahụ ghọtara ebe ọ ga-aga.

FAQ na ije na ọrụ nke VKontakte

Ọ bụrụ na otu engine chọrọ ịga na nke ọzọ, ọ bụrụgodị na ọ bụ onye agbata obi, ọ na-aga site na proxy, n'ihi na onye agbata obi nwere ike ịnọ na ebe data ọzọ. Igwe ahụ ekwesịghị ịdabere n'ịmara ebe ihe ọ bụla ọzọ karịa onwe ya - nke a bụ ngwọta ọkọlọtọ anyị. Mana n'ezie enwere ihe ndị ọzọ :)

Ihe atụ nke TL-atụmatụ dị ka nke niile engines na-arụ ọrụ.

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;

Nke a bụ usoro ọnụọgụ abụọ, analog nke kacha nso bụ protobuf. Atụmatụ ahụ na-akọwapụta mpaghara nhọrọ, ụdị mgbagwoju anya - ndọtị nke scalars arụnyere, na ajụjụ. Ihe niile na-arụ ọrụ dịka protocol a si dị.

RPC karịrị TL n'elu TCP/UDP… UDP?

Anyị nwere protocol RPC maka imezu arịrịọ injin na-aga n'elu atụmatụ TL. Ihe a niile na-arụ ọrụ na njikọ TCP/UDP. TCP bụ ihe kwere nghọta, mana gịnị kpatara anyị ji achọ UDP mgbe mgbe?

UDP na-enyere aka zere nsogbu nke ọnụ ọgụgụ dị ukwuu nke njikọ n'etiti sava. Ọ bụrụ na nkesa ọ bụla nwere proxy RPC na, n'ozuzu, ọ nwere ike ịga na engine ọ bụla, mgbe ahụ enwere iri puku kwuru iri puku njikọ TCP kwa nkesa. Enwere ibu, ma ọ baghị uru. N'ihe banyere UDP, nsogbu a adịghị.

Enweghị mmeghari aka TCP. Nke a bụ nsogbu a na-ahụkarị: mgbe arụpụtara engine ọhụrụ ma ọ bụ ihe nkesa ọhụrụ, ọtụtụ njikọ TCP na-eguzobe ozugbo. Maka obere arịrịọ dị fechaa, dịka ọmụmaatụ, ụgwọ ọrụ UDP, nkwukọrịta niile dị n'etiti koodu na injin bụ ngwugwu UDP abụọ: otu na-efe n’otu ụzọ, nke abụọ n’akụkụ nke ọzọ. Otu njem njem - na koodu natara nzaghachi site na engine na-enweghị aka.

Ee, ihe niile na-arụ ọrụ na obere mfu ngwugwu. Usoro ahụ nwere nkwado maka retransmits na oge nkwụsị, ma ọ bụrụ na anyị efunahụ ọtụtụ ihe, anyị ga-enweta ihe fọrọ nke nta ka ọ bụrụ TCP, nke na-abaghị uru. Anyị anaghị ebu UDP gafee oke osimiri.

Anyị nwere ọtụtụ puku sava ndị dị otú ahụ, atụmatụ ahụ bụkwa otu: a na-etinye mkpọ engine na nkesa anụ ahụ ọ bụla. Ha na-abụkarị otu-threaded ka ọ na-agba ọsọ ọsọ ọsọ na-enweghị igbochi, ma na-akpụ akpụ dị ka ngwọta nke otu eriri. N'otu oge ahụ, anyị enweghị ihe ọ bụla a pụrụ ịdabere na ya karịa engines ndị a, a na-akwụkwa ọtụtụ nlebara anya na nchekwa data na-adịgide adịgide.

Nchekwa data na-adịgide adịgide

Ndị injin na-ede binlog. Binlog bụ faịlụ na njedebe nke etinyere ihe omume maka mgbanwe na steeti ma ọ bụ data. Na ngwọta dị iche iche a na-akpọ ya dị iche iche: ọnụọgụ ọnụọgụ abụọ, Wal, AOF, ma ụkpụrụ bụ otu ihe ahụ.

Iji gbochie engine ka ọ na-agụgharị binlog dum ruo ọtụtụ afọ mgbe ịmalitegharịa, engines na-ede snapshots - ọnọdụ dị ugbu a. Ọ bụrụ na ọ dị mkpa, ha na-ebu ụzọ gụọ ya, wee gụchaa na binlog. Edere binlogs niile n'otu usoro ọnụọgụ abụọ - dịka atụmatụ TL siri dị, ka ndị nchịkwa wee nwee ike ijikwa ngwaọrụ ha na-elekọta ha n'otu aka ahụ. Ọ dịghị mkpa dị otú ahụ maka snapshots. Enwere nkụnye eji isi mee n'ozuzu nke na-egosi onye foto ya bụ int, anwansi nke injin, na nke ahụ adịghị mkpa nye onye ọ bụla. Nke a bụ nsogbu njin nke dekọtara foto ahụ.

M ga-akọwa ngwa ngwa ụkpụrụ nke ọrụ. Enwere sava nke injin na-agba. Ọ na-emepe binlog efu ọhụrụ maka ide wee dee ihe omume maka mgbanwe na ya.

FAQ na ije na ọrụ nke VKontakte

N'oge ụfọdụ, ọ na-ekpebi ịse foto n'onwe ya, ma ọ bụ na-enweta akara ngosi. Ihe nkesa na-emepụta faịlụ ọhụrụ, na-edepụta ọnọdụ ya niile n'ime ya, na-agbakwunye ọnụọgụ binlog dị ugbu a - nkwụsị - na njedebe nke faịlụ ahụ, ma na-aga n'ihu na-ede akwụkwọ n'ihu. Emebeghi binlog ọhụrụ.

FAQ na ije na ọrụ nke VKontakte

N'oge ụfọdụ, mgbe engine maliteghachiri, a ga-enwe ma binlog na foto na diski. Injin ahụ na-agụpụta foto niile wee bulie ọnọdụ ya n'otu ebe.

FAQ na ije na ọrụ nke VKontakte

Ọ na-agụ ọnọdụ dị n'oge a na-emepụta foto na nha nke binlog.

FAQ na ije na ọrụ nke VKontakte

Na-agụ njedebe nke binlog iji nweta ọnọdụ dị ugbu a wee gaa n'ihu na-ede ihe omume ndị ọzọ. Nke a bụ atụmatụ dị mfe, injin anyị niile na-arụ ọrụ dịka ya si dị.

Ntugharị data

N'ihi ya, data replication na anyị dabere na nkwupụta - anyị na-ede na binlog ọ bụghị mgbanwe ọ bụla na ibe, ma ya bụ gbanwee arịrịọ. Yiri nnọọ ihe na-abịa na netwọkụ ahụ, ọ bụ naanị ntakịrị gbanwetụrụ.

A na-eji otu atụmatụ ahụ eme ihe ọ bụghị naanị maka ịmegharị, kamakwa iji mepụta ndabere. Anyị nwere injin - nna ukwu na-ede akwụkwọ na-edegara binlog. N'ebe ọ bụla ndị admins haziri ya, a na-eṅomi binlog a, nke ahụ bụkwa ya - anyị nwere nkwado ndabere.

FAQ na ije na ọrụ nke VKontakte

Ọ bụrụ na ọ dị mkpa agụ oyiriIji belata ibu ọgụgụ CPU, a na-ewepụta injin ọgụgụ, nke na-agụ njedebe nke binlog ma na-eme iwu ndị a na mpaghara.

Lag ebe a dị nnọọ obere, na ọ ga-ekwe omume ịchọpụta ole oyiri lags n'azụ nna ukwu.

Ịkekọrịta data na proxy RPC

Kedu ka sharding si arụ ọrụ? Kedu ka onye nnọchiteanya si aghọta ụyọkọ shard ọ ga-ezigara? Koodu anaghị ekwu: “Zipu maka shards 15!” - mba, nke a bụ onye nnọchiteanya.

Usoro kachasị mfe bụ nke mbụ - nọmba mbụ na arịrịọ ahụ.

get(photo100_500) => 100 % N.

Nke a bụ ọmụmaatụ maka usoro ederede ederede dị mfe memcached, mana, n'ezie, ajụjụ nwere ike ịdị mgbagwoju anya na ahaziri ya. Ọmụmaatụ na-ewere nọmba mbụ na ajụjụ a yana nke fọdụrụ mgbe ejiri nha ụyọkọ kewara ya.

Nke a bara uru mgbe anyị chọrọ ịnwe data data nke otu ihe. Ka anyị kwuo 100 bụ ID onye ọrụ ma ọ bụ otu, na anyị chọrọ ka data niile nke otu ụlọ ọrụ dịrị n'otu shard maka ajụjụ dị mgbagwoju anya.

Ọ bụrụ na anyị achọghị ịma ka esi agbasa arịrịọ n'ofe ụyọkọ ahụ, enwere nhọrọ ọzọ - na-ekpuchi shard dum.

hash(photo100_500) => 3539886280 % N

Anyị na-enwetakwa hash, nke fọdụrụ na nkewa na nọmba shard.

Nhọrọ abụọ a na-arụ ọrụ naanị ma ọ bụrụ na anyị dị njikere maka eziokwu ahụ bụ na mgbe anyị na-abawanye ụba nke ụyọkọ ahụ, anyị ga-ekewa ya ma ọ bụ mụbaa ya ugboro ugboro. Dịka ọmụmaatụ, anyị nwere shards 16, anyị enweghị ezuru, anyị chọrọ karịa - anyị nwere ike nweta 32 n'enweghị nsogbu. Ọ bụrụ na anyị chọrọ ịbawanye ọ bụghị otutu, a ga-enwe oge nkwụsị, n'ihi na anyị agaghị enwe ike kewaa ihe niile n'ụzọ ziri ezi na-enweghị mfu. Nhọrọ ndị a bara uru, ma ọ bụghị mgbe niile.

Ọ bụrụ na anyị kwesịrị ịgbakwunye ma ọ bụ wepụ ọnụ ọgụgụ sava aka ike, anyị na-eji Hashing na-agbanwe agbanwe na mgbanaka a la Ketama. Ma n'otu oge ahụ, anyị na-efunahụ ebe data ahụ kpamkpam; anyị ga-ejikọta arịrịọ ahụ na ụyọkọ ahụ ka ibe ọ bụla weghachi obere nzaghachi nke ya, wee jikọta nzaghachi na proxy.

Enwere arịrịọ ndị akọwapụtara nke ọma. Ọ dị ka nke a: onye nnọchi anya RPC na-anata arịrịọ ahụ, chọpụta ụyọkọ nke ị ga-aga wee chọpụta shard. Mgbe ahụ enwere ndị nna ukwu na-ede akwụkwọ, ma ọ bụ, ọ bụrụ na ụyọkọ ahụ nwere nkwado oyiri, ọ na-ezigara na oyiri na-achọ. Onye nnọchiteanya na-eme ihe a niile.

FAQ na ije na ọrụ nke VKontakte

Ndekọ

Anyị na-ede ndekọ n'ọtụtụ ụzọ. Nke kacha pụta ìhè na dị mfe bụ dee ndekọ na memcache.

ring-buffer: prefix.idx = line

Enwere prefix isi - aha ndekọ, ahịrị, na enwere nha nke ndekọ a - ọnụọgụ nke ahịrị. Anyị na-ewere nọmba random site na 0 gaa na ọnụọgụ nke ahịrị mwepu 1. Igodo dị na memcache bụ prefix jikọtara ya na nọmba enweghị usoro a. Anyị na-echekwa ahịrị log na oge ugbu a na uru.

Mgbe ọ dị mkpa ịgụ ndekọ, anyị na-ebu Multi nweta igodo niile, nke a na-ahazi site na oge, wee si otú ahụ nweta ndekọ mmepụta na ozugbo. A na-eji atụmatụ ahụ eme ihe mgbe ịchọrọ ịmegharị ihe na mmepụta na ozugbo, n'emebighị ihe ọ bụla, na-akwụsịghị ma ọ bụ kwe ka okporo ụzọ gaa na igwe ndị ọzọ, mana log a anaghị adịte aka.

Maka nchekwa nchekwa nke ndekọ, anyị nwere engine log-igwe. Nke a bụ kpọmkwem ihe mere e ji kee ya ma jiri ya mee ihe n'ọtụtụ ụyọkọ. Ụyọkọ kasịnụ m maara na-echekwa TB 600 nke akwụkwọ ndekọ ọnụ.

Injin ahụ emeela agadi, enwere ụyọkọ ndị dịlarị afọ 6-7. Enwere nsogbu na ya anyị na-agbalị idozi, dịka ọmụmaatụ, anyị malitere iji ClickHouse na-arụsi ọrụ ike iji chekwaa ndekọ.

Na-anakọta ndekọ na ClickHouse

Eserese a na-egosi ka anyị si abanye n'ime igwe anyị.

FAQ na ije na ọrụ nke VKontakte

Enwere koodu na-aga na mpaghara site na RPC gaa na RPC-proxy, ma ọ ghọtara ebe aga na engine. Ọ bụrụ na anyị chọrọ ide ndekọ na ClickHouse, anyị kwesịrị ịgbanwe akụkụ abụọ na atụmatụ a:

  • dochie ụfọdụ engine na ClickHouse;
  • dochie proxy RPC, nke na-enweghị ike ịnweta ClickHouse, na ụfọdụ ngwọta nwere ike, yana site na RPC.

Igwe ahụ dị mfe - anyị na-eji ihe nkesa ma ọ bụ ụyọkọ nke sava dochie ya na ClickHouse.

Na ịga ClickHouse, anyị mere Ụlọ Kitten. Ọ bụrụ na anyị esi na KittenHouse gaa ClickHouse ozugbo, ọ gaghị anagide ya. Ọbụna na-enweghị arịrịọ, ọ na-agbakwụnye site na njikọ HTTP nke ọnụ ọgụgụ dị ukwuu nke igwe. Ka atụmatụ ahụ rụọ ọrụ, na sava nwere ClickHouse A na-ewelite proxy reverse local, nke e dere n'ụzọ nke na ọ nwere ike iguzogide mpịakọta njikọ achọrọ. Ọ nwekwara ike chekwaa data n'ime onwe ya nke ọma.

FAQ na ije na ọrụ nke VKontakte

Mgbe ụfọdụ, anyị achọghị imejuputa atụmatụ RPC na ngwọta na-abụghị ọkọlọtọ, dịka ọmụmaatụ, na nginx. Ya mere, KittenHouse nwere ikike ịnata ndekọ site na UDP.

FAQ na ije na ọrụ nke VKontakte

Ọ bụrụ na onye na-ezipụ na onye natara ndekọ na-arụ ọrụ n'otu igwe ahụ, mgbe ahụ, ohere nke ịla n'iyi UDP ngwugwu n'ime onye na-elekọta obodo dị nnọọ ala. Dị ka nkwekọrịta n'etiti mkpa iji mejuputa RPC na ngwọta nke atọ na ntụkwasị obi, anyị na-eji naanị izipu UDP. Anyị ga-alaghachi na atụmatụ a ma emechaa.

Nlekota oru

Anyị nwere ụdị ndekọ abụọ: ndị nchịkwa na-anakọta na sava ha na nke ndị mmepe dere site na koodu. Ha dabara na ụdị metrics abụọ: usoro na ngwaahịa.

Usoro metrik

Ọ na-arụ ọrụ na sava anyị niile netdata, nke na-anakọta ọnụ ọgụgụ na-ezigara ha Carbon eserese. Ya mere, a na-eji ClickHouse dị ka usoro nchekwa, ọ bụghị Whisper, dịka ọmụmaatụ. Ọ bụrụ na ọ dị mkpa, ị nwere ike ịgụ ozugbo site na ClickHouse, ma ọ bụ jiri Grafana maka metrik, eserese na akụkọ. Dịka ndị mmepe, anyị nwere ohere zuru ezu na Netdata na Grafana.

Usoro ngwaahịa

Maka ịdị mma, anyị edeela ọtụtụ ihe. Dịka ọmụmaatụ, enwere usoro ọrụ nkịtị na-enye gị ohere ide Counts, UniqueCounts ụkpụrụ n'ime ọnụ ọgụgụ, nke ezigara ebe ọzọ.

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

$stats = statlogsStatData($params)

N'ikpeazụ, anyị nwere ike iji nhazi na nchịkọta ihe nzacha ma mee ihe niile anyị chọrọ site na ọnụ ọgụgụ - wuo eserese, hazie Watchdogs.

Anyị na-ede nke ukwuu ọtụtụ metrik Ọnụ ọgụgụ nke ihe omume sitere na ijeri 600 ruo 1 trillion kwa ụbọchị. Agbanyeghị, anyị chọrọ idobe ha opekata mpe afọ ole na oleịghọta usoro na metrik. Ikpokọta ya niile bụ nnukwu nsogbu anyị edozibeghị. Aga m agwa gị otu o si arụ ọrụ kemgbe afọ ole na ole gara aga.

Anyị nwere ọrụ na-ede metrik ndị a na mpaghara memcacheiji belata ọnụ ọgụgụ ntinye. N'otu oge, n'ime obere oge na mpaghara ulo oru stats-daemon na-anakọta ndekọ niile. Na-esote, mmụọ ọjọọ na-ejikọta metrics n'ime ọkwa abụọ nke sava ndị na-anakọta osisi, nke na-ejikọta ọnụ ọgụgụ sitere na ụyọkọ igwe anyị ka oyi akwa dị n'azụ ha ghara ịnwụ.

FAQ na ije na ọrụ nke VKontakte

Ọ bụrụ na ọ dị mkpa, anyị nwere ike idegara ndị na-anakọta ndekọ aha ozugbo.

FAQ na ije na ọrụ nke VKontakte

Mana ide site na koodu ozugbo na ndị na-anakọta, ịgafe stas-daemom, bụ ihe ngwọta na-adịghị mma nke na-adịghị mma n'ihi na ọ na-abawanye ibu na onye nchịkọta. Ihe ngwọta dị mma naanị ma ọ bụrụ na n'ihi ihe ụfọdụ anyị enweghị ike ibuli memcache stats-daemon na igwe, ma ọ bụ ọ dara na anyị gara ozugbo.

Na-esote, ndị nchịkọta ndekọ na-ejikọta ọnụ ọgụgụ n'ime meowDB - nke a bụ nchekwa data anyị, nke nwekwara ike ịchekwa metrik.

FAQ na ije na ọrụ nke VKontakte

Mgbe ahụ, anyị nwere ike ịme nhọrọ ọnụọgụ abụọ "near-SQL" site na koodu.

FAQ na ije na ọrụ nke VKontakte

Nlele

N'oge okpomọkụ nke 2018, anyị nwere hackathon dị n'ime, echiche ahụ wee gbalịa iji dochie akụkụ uhie nke eserese ahụ na ihe nwere ike ịchekwa metrics na ClickHouse. Anyị nwere ndekọ na ClickHouse - gịnị ma ị nwaa ya?

FAQ na ije na ọrụ nke VKontakte

Anyị nwere atụmatụ nke na-ede ndekọ site na KittenHouse.

FAQ na ije na ọrụ nke VKontakte

Anyị kpebiri tinye "* Ụlọ" ọzọ na eserese ahụ, nke ga-enweta kpọmkwem metrics na usoro dị ka koodu anyị na-ede ha site na UDP. Mgbe ahụ * Ụlọ a na-atụgharị ha ka ọ bụrụ ntinye, dị ka ndekọ, nke KittenHouse ghọtara. Ọ nwere ike ịnyefe ndekọ ndị a n'ụzọ zuru oke na ClickHouse, nke ga-enwe ike ịgụ ha.

FAQ na ije na ọrụ nke VKontakte

A na-eji nke a dochie atụmatụ ahụ nwere memcache, stats-daemon na logs-collectors database.

FAQ na ije na ọrụ nke VKontakte

A na-eji nke a dochie atụmatụ ahụ nwere memcache, stats-daemon na logs-collectors database.

  • Enwere ozi sitere na koodu ebe a, nke edere na mpaghara na StatsHouse.
  • StatsHouse na-ede metrics UDP, atụgharịlarị na ntinye SQL, na KittenHouse na batches.
  • KittenHouse na-eziga ha na ClickHouse.
  • Ọ bụrụ na anyị chọrọ ịgụ ha, anyị na-agụ ha na-agafe StatsHouse - ozugbo site ClickHouse iji SQL mgbe niile.

Ọ ka dị nnwale, ma anyị na-amasị otú ọ na-eme. Ọ bụrụ na anyị edozi nsogbu ahụ na atụmatụ ahụ, mgbe ahụ ikekwe anyị ga-agbanwe ya kpamkpam. Onwe m, enwere m olileanya.

Atụmatụ ahụ adịghị echekwa ígwè. Sava dị ole na ole achọrọ, stats-daemons na logs-collectors adịghị mkpa, mana ClickHouse chọrọ sava buru ibu karịa ndị nọ na atụmatụ ugbu a. Sava dị ole na ole ka achọrọ, mana ha ga-abụrịrị ọnụ na ike karịa.

Nyefee

Nke mbụ, ka anyị leba anya na ntinye PHP. Anyị na-emepe emepe gaa: eji GitLab и TeamCity maka itinye n'ọrụ. A na-ejikọta alaka mmepe na ngalaba nna ukwu, site na nna ukwu maka ule a na-ejikọta ha na nhazi, na site na nhazi na mmepụta.

Tupu ebuga ya, a na-ewere alaka ụlọ ọrụ dị ugbu a na nke gara aga, a na-atụle faịlụ dị iche iche na ha - mgbanwe: kere, ehichapụ, gbanwee. A na-edekọ mgbanwe a na binlog nke injin oyiri pụrụ iche, nke nwere ike ịmegharị mgbanwe ngwa ngwa na ụgbọ mmiri sava anyị niile. Ihe a na-eji ebe a abụghị iṅomi ozugbo, kama ikwugharị asịrị, mgbe otu ihe nkesa na-eziga mgbanwe na ndị agbata obi ya kacha nso, ndị agbata obi ha, na ihe ndị ọzọ. Nke a na-enye gị ohere imelite koodu ahụ na iri na nkeji nkeji n'ofe ụgbọ mmiri niile. Mgbe mgbanwe ahụ ruru oyiri mpaghara, ọ na-etinye patches ndị a na ya usoro faịlụ mpaghara. A na-emekwa mpịakọta azụ dịka otu atụmatụ ahụ siri dị.

Anyị na-ebukwa kPHP ọtụtụ ma nwee mmepe nke ya gaa dị ka eserese dị n'elu. Ebe ọ bụ na nke a ọnụọgụ abụọ nkesa HTTP, mgbe ahụ anyị enweghị ike ịmepụta diff - ọnụọgụ abụọ ntọhapụ na-atụ ọtụtụ narị MB. Ya mere, enwere nhọrọ ọzọ ebe a - edere ya na nsụgharị ahụ binlog oyiri. Na nke ọ bụla na-ewu ya na-abawanye, na n'oge a na-atụgharị ya na-abawanye. Ụdị oyiri na sava. Ndị na-edegharị akwụkwọ na mpaghara ahụ na-ahụ na ụdị ọhụrụ abanyela na binlog, na site na otu asịrị ahụ, ha na-ewere ụdị ọnụọgụ abụọ kachasị ọhụrụ maka onwe ha, na-enweghị ike ọgwụgwụ nna anyị ukwu, ma jiri nlezianya gbasaa ibu ahụ n'ofe netwọk. Ihe na-esote mma mmalite maka ụdị ọhụrụ ahụ.

Maka injin anyị, nke bụkwa ọnụọgụ abụọ, atụmatụ a yiri nke a:

  • git master alaka;
  • ọnụọgụ abụọ na .deb;
  • Edere ụdị a na binlog copyfast;
  • emegharị na sava;
  • ihe nkesa na-adọta ọhụrụ .dep;
  • dpkg -i;
  • mweghachi nke ọma na ụdị ọhụrụ.

Ihe dị iche bụ na a na-etinye ọnụọgụ abụọ anyị na ebe nchekwa .deb, na mgbe ha na-agbapụta ha dpkg -i na-etinye na usoro. Kedu ihe kpatara eji etinye kPHP dị ka ọnụọgụ abụọ, a na-ebunye injin dị ka dpkg? O mere otú ahụ. Ọ na-arụ ọrụ - emetụla ya aka.

Njikọ njikọ bara uru:

Alexei Akulovich bụ otu n'ime ndị na-enyere aka, dị ka akụkụ nke Kọmitii Mmemme PHP Russia na Mee 17th ga-abụ mmemme kachasị ukwuu maka ndị mmepe PHP n'oge na-adịbeghị anya. Lee ihe PC dị mma anyị nwere, kedu ndị na-ekwu okwu (abụọ n'ime ha na-emepe emepe PHP isi!) - dị ka ihe ị na-agaghị echefu ma ọ bụrụ na ị dee PHP.

isi: www.habr.com

Tinye a comment