Ceistean Cumanta air ailtireachd agus obair VKontakte

Tha eachdraidh cruthachadh VKontakte air Wikipedia; chaidh innse dha le Pavel fhèin. Tha e coltach gu bheil a h-uile duine eòlach oirre mu thràth. Mu dheidhinn taobh a-staigh, ailtireachd agus structar na làraich air HighLoad++ Pavel dh’ innis mi air ais ann an 2010. Tha mòran de luchd-frithealaidh air a dhol a-mach bhon uairsin, agus mar sin bheir sinn ùrachadh air an fhiosrachadh: bidh sinn ga sgaradh, a 'toirt a-mach an taobh a-staigh, ga chuideam, agus a' coimhead air an inneal VK bho shealladh teignigeach.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Alexei Akulovich (Atar Cattus) leasaiche backend anns an sgioba VKontakte. Tha tar-sgrìobhadh na h-aithisge seo na fhreagairt choitcheann do cheistean cumanta mu obrachadh an àrd-ùrlair, bun-structar, frithealaichean agus eadar-obrachadh eatorra, ach chan ann mu leasachadh, is e sin mu iarann. Air leth, mu stòran-dàta agus na tha aig VK na àite, mu bhith a 'tional logaichean agus a' cumail sùil air a 'phròiseact air fad gu h-iomlan. Mion-fhiosrachadh fon ghearradh.



Airson còrr is ceithir bliadhna tha mi air a bhith a’ dèiligeadh ri gach seòrsa gnìomh co-cheangailte ris an deireadh-sheachdain.

  • A’ luchdachadh suas, a’ stòradh, a’ giullachd, a’ sgaoileadh mheadhanan: bhidio, sruthadh beò, claisneachd, dealbhan, sgrìobhainnean.
  • Bun-structar, àrd-ùrlar, sgrùdadh leasaiche, logaichean, caches roinneil, CDN, protocol RPC seilbh.
  • Amalachadh le seirbheisean taobh a-muigh: brathan putaidh, parsadh ceangail taobh a-muigh, biadhadh RSS.
  • A 'cuideachadh co-oibrichean le diofar cheistean, na freagairtean a dh'fheumas dàibheadh ​​​​a-steach unknown còd.

Rè na h-ùine seo, bha làmh agam ann am mòran phàirtean den làrach. Tha mi airson an t-eòlas seo a cho-roinn.

Ailtireachd coitcheann

Bidh a h-uile càil, mar as àbhaist, a’ tòiseachadh le frithealaiche no buidheann de luchd-frithealaidh a ghabhas ri iarrtasan.

Frithealaiche aghaidh

Bidh am frithealaiche aghaidh a’ gabhail ri iarrtasan tro HTTPS, RTMP agus WSS.

https - is iad sin iarrtasan airson na prìomh dhreachan lìn agus gluasadach den làrach: vk.com agus m.vk.com, agus teachdaichean oifigeil is neo-oifigeil eile den API againn: teachdaichean gluasadach, teachdairean. Tha cuirm againn RTMP-trafaic airson craolaidhean beò le frithealaichean aghaidh fa-leth agus WSS- ceanglaichean airson Streaming API.

Airson HTTPS agus WSS air frithealaichean is fhiach e nginx. Airson craolaidhean RTMP, thionndaidh sinn gu ar fuasgladh fhèin o chionn ghoirid cith, ach tha e taobh a-muigh raon na h-aithisg. Airson fulangas sgàinidhean, bidh na frithealaichean sin a’ sanasachadh sheòlaidhean IP cumanta agus ag obair ann am buidhnean gus nach tèid iarrtasan luchd-cleachdaidh air chall ma tha duilgheadas ann air aon de na frithealaichean. Airson HTTPS agus WSS, bidh na h-aon luchd-frithealaidh sin a’ cuairteachadh trafaic gus pàirt den luchd CPU a ghabhail orra fhèin.

Cha bhith sinn a’ bruidhinn tuilleadh mu WSS agus RTMP, ach dìreach mu iarrtasan àbhaisteach HTTPS, a tha mar as trice co-cheangailte ri pròiseact lìn.

Backend

Air cùl an aghaidh mar as trice tha frithealaichean backend. Bidh iad a’ làimhseachadh iarrtasan a gheibh am frithealaiche aghaidh bho luchd-dèiligidh.

seo frithealaichean kPHP, air a bheil an deamhan HTTP a’ ruith, leis gu bheil HTTPS air a dhì-chrioptachadh mu thràth. 'S e frithealaiche a tha a' ruith air adhart a tha ann an kPHP modalan prefork: a’ tòiseachadh prìomh phròiseas, dòrlach de phròiseasan cloinne, a’ dol seachad air socaidean èisteachd agus bidh iad a’ làimhseachadh na h-iarrtasan aca. Anns a 'chùis seo, chan eil pròiseasan air an ath-thòiseachadh eadar gach iarrtas bhon neach-cleachdaidh, ach dìreach ath-shuidheachadh an stàit chun an stàit luach neoni tùsail - iarrtas às dèidh iarrtas, an àite ath-thòiseachadh.

Sgaoileadh luchdan

Chan e cruinneachadh mòr de dh’ innealan a th’ anns na backends againn uile as urrainn dèiligeadh ri iarrtas sam bith. Sinn iad air a roinn ann am buidhnean fa leth: coitcheann, gluasadach, api, bhidio, stèidse... Cha toir an duilgheadas air buidheann eadar-dhealaichte de dh'innealan buaidh air càch. Ma tha duilgheadasan ann le bhidio, cha bhi fios aig an neach-cleachdaidh a bhios ag èisteachd ri ceòl eadhon mu na duilgheadasan. Dè an cùl-taic airson an t-iarrtas a chuir thuige air a cho-dhùnadh le nginx air an aghaidh a rèir an config.

Cruinneachadh meatrach agus ath-chothromachadh

Gus tuigsinn cia mheud càr a dh'fheumas a bhith againn anns gach buidheann, bidh sinn na bi an urra ri QPS. Tha na backends eadar-dhealaichte, tha iarrtasan eadar-dhealaichte aca, tha iom-fhillteachd eadar-dhealaichte aig gach iarrtas airson àireamhachadh QPS. Sin as coireach gu bheil sinn bidh sinn ag obair leis a’ bhun-bheachd de luchd air an fhrithealaiche gu h-iomlan - air an CPU agus perf.

Tha mìltean de luchd-frithealaidh mar sin againn. Bidh gach frithealaiche fiosaigeach a’ ruith buidheann kPHP gus na coraichean gu lèir ath-chuairteachadh (seach gu bheil kPHP le snàithlean singilte).

Frithealaiche susbaint

Tha CS no Content Server na stòradh. Is e frithealaiche a th’ ann an CS a bhios a’ stòradh fhaidhlichean agus cuideachd a’ pròiseasadh fhaidhlichean a chaidh a luchdachadh suas agus a h-uile seòrsa gnìomh sioncronaich cùl-fhiosrachaidh a bhios am prìomh aghaidh lìn a’ sònrachadh dha.

Tha deichean de mhìltean de luchd-frithealaidh fiosaigeach againn a bhios a’ stòradh fhaidhlichean. Is toil le luchd-cleachdaidh faidhlichean a luchdachadh suas, agus is toil leinn a bhith gan stòradh agus gan roinn. Tha cuid de na frithealaichean sin dùinte le frithealaichean sònraichte pu/pp.

pu/pp

Ma dh'fhosgail thu an taba lìonra ann an VK, chunnaic thu pu/pp.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Dè th' ann am pu/pp? Ma dhùineas sinn aon fhrithealaiche às deidh fear eile, tha dà roghainn ann airson faidhle a luchdachadh suas agus a luchdachadh sìos chun t-seirbheisiche a chaidh a dhùnadh: gu dìreach через http://cs100500.userapi.com/path no tro fhrithealaiche eadar-mheadhanach - http://pu.vk.com/c100500/path.

Is e Pu an t-ainm eachdraidheil airson luchdachadh suas dhealbhan, agus tha pp na neach-ionaid dhealbhan. Is e sin, tha aon fhrithealaiche airson dealbhan a luchdachadh suas, agus fear eile airson luchdachadh suas. A-nis chan e a-mhàin gu bheil dealbhan air an luchdachadh, ach tha an t-ainm air a ghleidheadh.

Na frithealaichean seo cuir crìoch air seiseanan HTTPSgus an luchd pròiseasar a thoirt air falbh bhon stòradh. Cuideachd, leis gu bheil faidhlichean luchd-cleachdaidh air an giullachd air na frithealaichean sin, mar as lugha de fhiosrachadh mothachail a tha air a stòradh air na h-innealan sin, ’s ann as fheàrr. Mar eisimpleir, iuchraichean crioptachaidh HTTPS.

Leis gu bheil na h-innealan dùinte leis na h-innealan eile againn, is urrainn dhuinn gun a bhith a’ toirt seachad IPan “geal” a-muigh, agus thoir "liath". San dòigh seo shàbhail sinn air an amar IP agus gheall sinn na h-innealan a dhìon bho ruigsinneachd taobh a-muigh - dìreach chan eil IP ann airson faighinn a-steach ann.

Seasmhachd thairis air IPan co-roinnte. A thaobh fulangas sgàinidhean, tha an sgeama ag obair mar an ceudna - tha IP corporra cumanta aig grunn luchd-frithealaidh corporra, agus tha am bathar-cruaidh air am beulaibh a’ taghadh càite an cuir iad an t-iarrtas. Bruidhnidh mi mu roghainnean eile nas fhaide air adhart.

Is e am puing connspaideach sa chùis seo bidh an neach-dèiligidh a’ cumail nas lugha de cheanglaichean. Ma tha an aon IP ann airson grunn innealan - leis an aon aoigh: pu.vk.com no pp.vk.com, tha cuingealachadh aig brabhsair an neach-dèiligidh air an àireamh de dh’ iarrtasan aig an aon àm gu aon aoigh. Ach ann an àm HTTP/2 uile-làthaireach, tha mi a’ creidsinn nach eil seo cho buntainneach tuilleadh.

Is e ana-cothrom follaiseach an sgeama gum feum e pump a h-uile trafaic, a thèid dhan stòradh, tro fhrithealaiche eile. Leis gu bheil sinn a’ pumpadh trafaic tro innealan, chan urrainn dhuinn fhathast trafaic throm a phumpadh, mar eisimpleir, bhidio, a’ cleachdadh an aon sgeama. Bidh sinn ga chuir gu dìreach - ceangal dìreach fa leth airson stòradh air leth gu sònraichte airson bhidio. Bidh sinn a’ sgaoileadh susbaint nas aotroime tro neach-ionaid.

O chionn ghoirid fhuair sinn dreach leasaichte de neach-ionaid. A-nis innsidh mi dhut mar a tha iad eadar-dhealaichte bhon fheadhainn àbhaisteach agus carson a tha seo riatanach.

Sun

San t-Sultain 2017, Oracle, a bha air a cheannach roimhe Sun, losgadh air àireamh mhòr de luchd-obrach Sun. Faodaidh sinn a ràdh gu bheil a 'chompanaidh air sgur a bhith ann aig an àm seo. Nuair a thagh iad ainm airson an t-siostam ùr, chuir ar luchd-rianachd romhpa ùmhlachd a thoirt do chuimhne a’ chompanaidh seo agus dh’ainmich iad an siostam ùr Sun. Am measg sinn fhèin tha sinn dìreach ag ainmeachadh “grèine” oirre.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Bha beagan dhuilgheadasan aig pp. Aon IP gach buidheann - tasgadan neo-èifeachdach. Bidh grunn luchd-frithealaidh fiosaigeach a 'co-roinn seòladh IP cumanta, agus chan eil dòigh ann smachd a chumail air dè am frithealaiche a thèid an t-iarrtas. Mar sin, ma thig luchd-cleachdaidh eadar-dhealaichte airson an aon fhaidhle, an uairsin ma tha tasgadan air na frithealaichean sin, thig am faidhle gu crìch ann an tasgadan gach frithealaiche. Is e sgeama gu math neo-èifeachdach a tha seo, ach cha ghabh dad a dhèanamh.

Mar thoradh air - chan urrainn dhuinn susbaint a ghearradh, a chionn 's nach urrainn dhuinn frithealaiche sònraichte a thaghadh airson a' chuantail seo - tha IP cumanta aca. Cuideachd airson adhbharan taobh a-staigh a tha againn cha robh e comasach na frithealaichean sin a stàladh ann an roinnean. Sheas iad a-mhàin ann an St Petersburg.

Leis a 'ghrian, dh'atharraich sinn an siostam taghaidh. A-nis tha againn slighe sam bith: ruitheam fiùghantach, anycast, deamhan fèin-seic. Tha a IP fa leth fhèin aig gach frithealaiche, ach subnet cumanta. Tha a h-uile càil air a rèiteachadh ann an dòigh gus ma dh’ fhailicheas aon fhrithealaiche, thèid an trafaic a sgaoileadh thairis air na frithealaichean eile san aon bhuidheann gu fèin-ghluasadach. A-nis tha e comasach frithealaiche sònraichte a thaghadh, gun tasgadh gun fheum, agus cha deach buaidh a thoirt air earbsachd.

Taic cuideam. A-nis is urrainn dhuinn innealan de chumhachd eadar-dhealaichte a chuir a-steach mar a dh ’fheumar, agus cuideachd, ma tha duilgheadasan sealach ann, atharraich cuideaman“ grèine ”ag obair gus an luchd orra a lughdachadh, gus am bi iad“ a ’gabhail fois” agus a ’tòiseachadh ag obair a-rithist.

Roinneadh le id susbaint. Rud èibhinn mu bhith a’ rùsgadh: mar as trice bidh sinn a’ rùsgadh susbaint gus am bi luchd-cleachdaidh eadar-dhealaichte a’ dol chun an aon fhaidhle tron ​​​​aon “ghrian” gus am bi tasgadan cumanta aca.

Chuir sinn air bhog an tagradh “Seamair” o chionn ghoirid. Is e ceisteachan air-loidhne a tha seo ann an craoladh beò, far am bi an aoigh a’ faighneachd cheistean agus luchd-cleachdaidh a’ freagairt ann an àm fìor, a’ taghadh roghainnean. Tha cabadaich aig an aplacaid far am faod luchd-cleachdaidh cabadaich. Is urrainn ceangal a dhèanamh ris a’ chraoladh aig an aon àm còrr is 100 mìle neach. Bidh iad uile a’ sgrìobhadh teachdaireachdan a thèid a chuir chun a h-uile com-pàirtiche, agus thig avatar còmhla ris an teachdaireachd. Ma thig 100 mìle neach airson aon avatar ann an aon “ghrian”, faodaidh e uaireannan roiligeadh air cùl sgòth.

Gus seasamh an aghaidh iarrtasan airson an aon fhaidhle, is ann airson seòrsa sònraichte de shusbaint a bhios sinn a’ tionndadh air sgeama gòrach a bhios a’ sgaoileadh fhaidhlichean thairis air a h-uile “suns” a tha ri fhaighinn san roinn.

A 'ghrian bhon taobh a-staigh

Proxy air ais air nginx, tasgadan an dàrna cuid ann an RAM no air diosgan luath Optane / NVMe. Eisimpleir: http://sun4-2.userapi.com/c100500/path - ceangal ris an “ghrian”, a tha suidhichte sa cheathramh roinn, an dàrna buidheann frithealaiche. Bidh e a’ dùnadh am faidhle slighe, a tha gu corporra na laighe air frithealaiche 100500.

còmhdach

Bidh sinn a’ cur aon nód eile ris an sgeama ailtireachd againn - an àrainneachd caching.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Gu h-ìosal tha an sgeama cruth caches roinneil, tha mu 20 dhiubh ann. Is iad sin na h-àiteachan far a bheil caches agus “suns” suidhichte, as urrainn trafaic a thasgadh troimhe fhèin.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Is e seo tasgadh de shusbaint ioma-mheadhain; chan eil dàta cleachdaiche air a stòradh an seo - dìreach ceòl, bhidio, dealbhan.

Gus sgìre an neach-cleachdaidh a dhearbhadh, bidh sinn bidh sinn a’ cruinneachadh ro-leasachain lìonra BGP a chaidh ainmeachadh anns na roinnean. Ma thachras tuiteam air ais, feumaidh sinn cuideachd an stòr-dàta geoip a pharsadh mura b’ urrainn dhuinn an IP a lorg le ro-leasachain. Bidh sinn a’ dearbhadh na sgìre a rèir IP an neach-cleachdaidh. Anns a 'chòd, is urrainn dhuinn coimhead air aon no barrachd roinnean den neach-cleachdaidh - na puingean sin air a bheil e nas fhaisge air cruinn-eòlas.

Ciamar a dh'obraicheas e?

Bidh sinn a’ cunntadh cho mòr sa tha na faidhlichean a rèir sgìre. Tha grunn den tasgadan roinneil far a bheil an neach-cleachdaidh suidhichte, agus aithnichear faidhle - bidh sinn a’ toirt a’ phaidhir seo agus a’ meudachadh an rangachadh le gach luchdachadh sìos.

Aig an aon àm, bidh deamhain - seirbheisean ann an roinnean - bho àm gu àm a’ tighinn chun API agus ag ràdh: “Is mise agus an leithid de thasgadh, thoir dhomh liosta de na faidhlichean as mòr-chòrdte san sgìre agam nach eil fhathast orm. ” Bidh an API a’ lìbhrigeadh dòrlach de fhaidhlichean air an òrdachadh a rèir rangachadh, bidh an deamhan gan luchdachadh sìos, gan toirt gu na roinnean agus a’ lìbhrigeadh na faidhlichean às an sin. Is e seo an eadar-dhealachadh bunaiteach eadar pu / pp agus Sun bho caches: bidh iad a’ toirt seachad am faidhle troimhe fhèin sa bhad, eadhon mura h-eil am faidhle seo san tasgadan, agus bidh an tasgadan a ’luchdachadh sìos am faidhle thuige fhèin an toiseach, agus an uairsin a’ tòiseachadh ga thoirt air ais.

Anns a 'chùis seo gheibh sinn susbaint nas fhaisge air luchd-cleachdaidh agus a’ sgaoileadh an luchd lìonraidh. Mar eisimpleir, dìreach bho tasgadan Moscow bidh sinn a’ cuairteachadh barrachd air 1 Tbit / s aig amannan as àirde.

Ach tha trioblaidean ann - chan e rubair a th’ ann an frithealaichean tasgadan. Airson susbaint mòr-chòrdte, uaireannan chan eil lìonra gu leòr ann airson frithealaiche air leth. Tha na frithealaichean tasgadan againn 40-50 Gbit / s, ach tha susbaint ann a tha gu tur a’ dùnadh a leithid de sheanal. Tha sinn a’ gluasad a dh’ionnsaigh stòradh barrachd air aon leth-bhreac de fhaidhlichean mòr-chòrdte san roinn. Tha mi an dòchas gun cuir sinn an gnìomh e ro dheireadh na bliadhna.

Thug sinn sùil air an ailtireachd coitcheann.

  • Frithealaichean aghaidh a ghabhas ri iarrtasan.
  • A’ cur cùl ris na h-iarrtasan pròiseas sin.
  • Stòran a tha dùinte le dà sheòrsa proxies.
  • Tasgaidhean roinneil.

Dè tha a dhìth anns an diagram seo? Gu dearbh, na stòran-dàta anns a bheil sinn a 'stòradh dàta.

Stòr-dàta no einnseanan

Chan e stòran-dàta a chanas sinn riutha, ach einnseanan - Einnseanan, oir cha mhòr nach eil stòran-dàta againn anns an t-seadh coitcheann.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Is e tomhas riatanach a tha seo. Thachair seo oir ann an 2008-2009, nuair a bha fàs mòr-chòrdte aig VK, bha am pròiseact ag obair gu tur air MySQL agus Memcache agus bha duilgheadasan ann. Bha MySQL dèidheil air a bhith a’ tuiteam às a chèile agus a’ truailleadh fhaidhlichean, agus às deidh sin cha deidheadh ​​​​air ais, agus chaidh Memcache sìos mean air mhean ann an coileanadh agus dh’ fheumadh e ath-thòiseachadh.

Tha e a’ tionndadh a-mach gun robh stòradh leantainneach aig a’ phròiseact a bha a’ sìor fhàs mòr-chòrdte, a tha a’ truailleadh dàta, agus tasgadan, a tha a’ slaodadh sìos. Ann an leithid de shuidheachaidhean, tha e duilich pròiseact a tha a 'fàs a leasachadh. Chaidh co-dhùnadh feuchainn ri ath-sgrìobhadh a dhèanamh air na rudan deatamach air an robh am pròiseact ag amas air na baidhsagalan againn fhèin.

Bha am fuasgladh soirbheachail. Bha cothrom ann seo a dhèanamh, cho math ri fìor fheum, oir cha robh dòighean eile air sgèileadh ann aig an àm sin. Cha robh dòrlach de stòran-dàta ann, cha robh NoSQL ann fhathast, cha robh ann ach MySQL, Memcache, PostrgreSQL - agus sin agad e.

Obrachadh uile-choitcheann. Bha an leasachadh air a stiùireadh leis an sgioba againn de luchd-leasachaidh C agus chaidh a h-uile càil a dhèanamh ann an dòigh chunbhalach. Ge bith dè an einnsean, bha timcheall air an aon chruth faidhle aca uile air an sgrìobhadh gu diosc, na h-aon pharaimearan cur air bhog, comharran air an giullachd san aon dòigh, agus iad gan giùlan fhèin timcheall air an aon rud gun fhios nach biodh suidheachaidhean iomaill agus duilgheadasan ann. Le fàs einnseanan, tha e goireasach do luchd-rianachd an siostam obrachadh - chan eil sù a dh ’fheumar a chumail suas, agus feumaidh iad ath-ionnsachadh mar a dh’ obraicheas iad gach stòr-dàta treas-phàrtaidh ùr, a rinn e comasach gu sgiobalta agus àrdachadh gu h-iomchaidh air an àireamh aca.

Seòrsa einnseanan

Sgrìobh an sgioba grunn einnseanan. Seo dìreach cuid dhiubh: caraid, sanasan, ìomhaigh, ipdb, litrichean, liostaichean, logaichean, memcached, meowdb, naidheachdan, nostradamus, dealbh, liostaichean-cluiche, pmemcached, bogsa gainmhich, sgrùdadh, stòradh, rudan a tha dèidheil air, gnìomhan,…

Airson gach gnìomh a dh’ fheumas structar dàta sònraichte no pròiseasan iarrtasan neo-àbhaisteach, bidh sgioba C a’ sgrìobhadh einnsean ùr. Carson nach biodh.

Tha einnsean air leth againn memcached, a tha coltach ri fear àbhaisteach, ach le dòrlach de rudan math, agus nach eil a’ slaodadh sìos. Chan e ClickHouse, ach tha e ag obair cuideachd. Ri fhaighinn air leth pemcached A bheil memcached seasmhach, a dh’ fhaodas dàta a stòradh air diosc, a bharrachd air an sin, na tha a’ freagairt air RAM, gus nach caill thu dàta nuair a thèid ath-thòiseachadh. Tha diofar einnseanan ann airson gnìomhan fa leth: ciudha, liostaichean, seataichean - a h-uile dad a dh ’fheumas ar pròiseact.

Cnuasaichean

Bho shealladh còd, chan fheumar smaoineachadh air einnseanan no stòran-dàta mar phròiseasan, aonadan, no suidheachaidhean. Bidh an còd ag obair gu sònraichte le cruinneachaidhean, le buidhnean de einnseanan - aon seòrsa airson gach buidheann. Canaidh sinn gu bheil cruinneachadh memcached ann - chan eil ann ach buidheann de dh’ innealan.

Chan fheum an còd fios a bhith agad air an àite fiosaigeach, meud, no àireamh de luchd-frithealaidh idir. Bidh e a’ dol don bhuidheann a’ cleachdadh aithnichear sònraichte.

Gus seo a dhèanamh, feumaidh tu aon eintiteas eile a chuir ris a tha suidhichte eadar an còd agus na h-einnseanan - proxy.

Neach-ionaid RPC

Progsaidh bus ceangail, air a bheil cha mhòr an làrach gu lèir a 'ruith. Aig an aon àm tha againn gun lorg seirbheis - an àite sin, tha config ann airson an neach-ionaid seo, aig a bheil fios càite a bheil a h-uile cruinneachadh agus a h-uile pìos den bhuidheann seo. Is e seo a bhios luchd-rianachd a’ dèanamh.

Chan eil dragh aig luchd-prògramaidh dè an ìre, càite agus dè a chosgas e - bidh iad dìreach a’ dol don bhuidheann. Leigidh seo leinn tòrr. Nuair a gheibh e iarrtas, bidh an neach-ionaid ag ath-stiùireadh an iarrtais, le fios càite - bidh e a’ dearbhadh seo fhèin.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Anns a 'chùis seo, tha neach-ionaid na phuing dìon an aghaidh fàilligeadh seirbheis. Ma tha cuid de einnsean a 'slaodadh sìos no a' tuiteam, bidh an neach-ionaid a 'tuigsinn seo agus a' freagairt mar sin ri taobh an neach-dèiligidh. Leigidh seo leat an ùine-ama a thoirt air falbh - chan eil an còd a ’feitheamh ris an einnsean freagairt, ach tha e a’ tuigsinn nach eil e ag obair agus feumaidh e giùlan ann an dòigh eadar-dhealaichte. Feumaidh an còd ullachadh airson nach bi na stòran-dàta an-còmhnaidh ag obair.

Gnìomhan sònraichte

Aig amannan tha sinn fhathast ag iarraidh gum bi fuasgladh neo-àbhaisteach againn mar einnsean. Aig an aon àm, chaidh co-dhùnadh gun a bhith a 'cleachdadh ar rpc-proxy deiseil, a chaidh a chruthachadh gu sònraichte airson na h-einnseanan againn, ach gus neach-ionaid fa leth a dhèanamh airson na h-obrach.

Airson MySQL, a tha againn fhathast an seo agus an sin, bidh sinn a’ cleachdadh db-proxy, agus airson ClickHouse - Taigh-piseag.

Bidh e ag obair mar seo san fharsaingeachd. Tha frithealaiche sònraichte ann, bidh e a’ ruith kPHP, Go, Python - san fharsaingeachd, còd sam bith as urrainn ar protocol RPC a chleachdadh. Bidh an còd a’ ruith gu h-ionadail air neach-ionaid RPC - bidh gach frithealaiche far a bheil an còd suidhichte a’ ruith a neach-ionaid ionadail fhèin. Ma thèid iarraidh, tuigidh an neach-ionaid càite an tèid e.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Ma tha aon einnsean ag iarraidh a dhol gu fear eile, eadhon ged a tha e na nàbaidh, thèid e tro neach-ionaid, oir is dòcha gu bheil an nàbaidh ann an ionad dàta eile. Cha bu chòir don einnsean a bhith an urra ri fios a bhith agad càite a bheil dad ach e fhèin - is e seo am fuasgladh àbhaisteach againn. Ach gu dearbh tha eisgeachdan ann :)

Eisimpleir de sgeama TL a rèir a bheil a h-uile einnsean ag obair.

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;

Is e protocol binary a tha seo, agus is e an analogue as fhaisge dheth protobuf. Tha an sgeama a’ ro-innse raointean roghainneil, seòrsachan iom-fhillte - leudachadh air scalars togte, agus ceistean. Bidh a h-uile dad ag obair a rèir a’ phròtacal seo.

RPC thairis air TL thairis air TCP / UDP… UDP?

Tha protocol RPC againn airson a bhith a’ cur an gnìomh iarrtasan einnsein a tha a’ ruith a bharrachd air an sgeama TL. Bidh seo uile ag obair thairis air ceangal TCP / UDP. Tha TCP furasta a thuigsinn, ach carson a tha feum againn air UDP gu tric?

Bidh UDP a’ cuideachadh seachain duilgheadas àireamh mhòr de cheanglaichean eadar frithealaichean. Ma tha neach-ionaid RPC aig gach frithealaiche agus, san fharsaingeachd, faodaidh e a dhol gu einnsean sam bith, tha deichean de mhìltean de cheanglaichean TCP gach frithealaiche. Tha eallach ann, ach tha e gun fheum. Ann an cùis UDP chan eil an duilgheadas seo ann.

Gun crathadh làimhe TCP gun fheum. Is e duilgheadas àbhaisteach a tha seo: nuair a thèid einnsean ùr no frithealaiche ùr a chuir air bhog, thèid mòran cheanglaichean TCP a stèidheachadh aig an aon àm. Airson iarrtasan beaga aotrom, mar eisimpleir, UDP payload, tha a h-uile conaltradh eadar an còd agus an t-einnsean dà phacaid UDP: bidh aon ag itealaich ann an aon taobh, an dàrna fear chun an taobh eile. Aon turas cruinn - agus fhuair an còd freagairt bhon einnsean gun crathadh làimhe.

Tha, tha e uile dìreach ag obair le àireamh sa cheud glè bheag de chall pacaid. Tha taic aig a’ phròtacal airson ath-chraolaidhean agus amannan-ama, ach ma chailleas sinn mòran, gheibh sinn cha mhòr TCP, rud nach eil buannachdail. Cha bhith sinn a’ draibheadh ​​​​UDP thar chuantan.

Tha mìltean de luchd-frithealaidh mar sin againn, agus tha an sgeama mar an ceudna: tha pasgan einnseanan air a chuir a-steach air gach frithealaiche fiosaigeach. Tha iad mar as trice aon-snàithlean airson ruith cho luath 's as urrainn gun bhacadh, agus tha iad air an sgoltadh mar fhuasglaidhean aon-snàithlean. Aig an aon àm, chan eil dad nas earbsaiche againn na na h-einnseanan sin, agus thathas a ’toirt mòran aire do stòradh dàta leantainneach.

Stòradh dàta seasmhach

Bidh einnseanan a’ sgrìobhadh binlogs. Is e faidhle a th’ ann am binlog far a bheil tachartas airson atharrachadh stàite no dàta air a chur ris aig an deireadh. Ann an diofar fhuasglaidhean canar eadar-dhealaichte ris: log binary, WAL, AOF, ach tha am prionnsabal mar an ceudna.

Gus casg a chuir air an einnsean bho bhith ag ath-leughadh a’ bhiona gu lèir airson grunn bhliadhnaichean nuair a bhios e ag ath-thòiseachadh, bidh na h-einnseanan a’ sgrìobhadh snapshots - staid làithreach. Ma tha feum air, bidh iad a 'leughadh bhuaithe an toiseach, agus an uairsin a' crìochnachadh leughadh bhon bhiona. Tha a h-uile binlog air a sgrìobhadh san aon chruth dà-chànanach - a rèir sgeama TL, gus an urrainn do luchd-rianachd an rianachd gu co-ionann a’ cleachdadh an cuid innealan. Chan eil feum air leithid de dhealbhan. Tha bann-cinn coitcheann ann a tha a 'sealltainn cò an dealbh a th' ann, draoidheachd an einnsein, agus dè an corp nach eil cudromach do dhuine sam bith. Is e duilgheadas a tha seo leis an einnsean a chlàraich an dealbh.

Bheir mi cunntas gu sgiobalta air prionnsapal obrachaidh. Tha frithealaiche air a bheil an t-einnsean a 'ruith. Bidh e a’ fosgladh binlog ùr falamh airson sgrìobhadh agus a’ sgrìobhadh tachartas airson atharrachadh air.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Aig àm air choreigin, bidh e an dàrna cuid a’ co-dhùnadh dealbh a ghabhail e fhèin, no bidh e a’ faighinn comharra. Bidh am frithealaiche a’ cruthachadh faidhle ùr, a’ sgrìobhadh a staid gu lèir a-steach ann, a’ cur meud gnàthach binlog - air a chothromachadh - ri deireadh an fhaidhle, agus a’ leantainn air adhart a’ sgrìobhadh tuilleadh. Chan eil binlog ùr air a chruthachadh.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Aig àm air choreigin, nuair a thòisicheas an t-einnsean, bidh an dà chuid binlog agus dealbh air an diosg. Bidh an einnsean a 'leughadh an dealbh gu lèir agus a' togail a staid aig àm sònraichte.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Leugh an suidheachadh a bha aig an àm a chaidh an dealbh a chruthachadh agus meud a’ bhiona.

Ceistean Cumanta air ailtireachd agus obair VKontakte

A’ leughadh deireadh a’ bhiona gus an staid làithreach fhaighinn agus a’ leantainn air adhart a’ sgrìobhadh tuilleadh thachartasan. Is e sgeama sìmplidh a tha seo; bidh na h-einnseanan againn uile ag obair a rèir sin.

Ath-riochdachadh dàta

Mar thoradh air an sin, tha ath-riochdachadh dàta nar stèidhichte air aithris - bidh sinn a’ sgrìobhadh anns a’ bhiona nach atharraich duilleag sam bith, ach is e sin iarrtasan atharrachadh. Gu math coltach ris na thig thairis air an lìonra, dìreach air atharrachadh beagan.

Tha an aon sgeama air a chleachdadh chan ann a-mhàin airson ath-riochdachadh, ach cuideachd gus cùl-taic a chruthachadh. Tha einnsean againn - maighstir sgrìobhaidh a bhios a 'sgrìobhadh chun a' bhiona. Ann an àite sam bith eile far an do chuir an luchd-rianachd air dòigh e, tha am biona seo air a chopaigeadh, agus sin agad e - tha cùl-taic againn.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Ma tha feum air mac-samhail leughaidhGus an luchd leughaidh CPU a lughdachadh, tha an einnsean leughaidh dìreach air a chuir air bhog, a leughas deireadh a ’bhinelog agus a chuireas an gnìomh na h-òrdughan sin gu h-ionadail.

Tha an lag an seo glè bheag, agus tha e comasach faighinn a-mach dè an ìre gu bheil am mac-samhail air dheireadh air a’ mhaighstir.

Roinneadh dàta ann an neach-ionaid RPC

Ciamar a tha sgoltadh ag obair? Ciamar a tha an neach-ionaid a’ tuigsinn dè am brabhsair a bu chòir a chuir thuige? Chan eil an còd ag ràdh: “Cuir airson 15 shards!” — ni h-eadh, tha so air a dheanamh leis an neach-ionaid.

Is e an sgeama as sìmplidh an toiseach - a’ chiad àireamh san iarrtas.

get(photo100_500) => 100 % N.

Tha seo na eisimpleir airson protocol teacsa memcached sìmplidh, ach, gu dearbh, faodaidh ceistean a bhith iom-fhillte agus structarail. Tha an eisimpleir a’ gabhail a’ chiad àireamh anns a’ cheist agus an còrr nuair a thèid a roinn le meud a’ chnuasaich.

Tha seo feumail nuair a tha sinn airson sgìre dàta a bhith againn de aon eintiteas. Canaidh sinn gur e ID cleachdaiche no buidheann a th’ ann an 100, agus tha sinn airson gum bi an dàta gu lèir bho aon eintiteas air aon shard airson ceistean iom-fhillte.

Mura h-eil dragh againn ciamar a tha iarrtasan air an sgaoileadh thairis air a’ bhuidheann, tha roghainn eile ann - a' slugadh a' gharaidh gu lèir.

hash(photo100_500) => 3539886280 % N

Bidh sinn cuideachd a 'faighinn an hash, an còrr den roinn agus an àireamh shard.

Chan obraich an dà roghainn seo ach ma tha sinn deiseil airson nuair a mheudaicheas sinn meud a’ chnuasaich, gun roinn sinn e no gun àrdaich sinn e grunn thursan. Mar eisimpleir, bha 16 shards againn, chan eil gu leòr againn, tha sinn ag iarraidh barrachd - is urrainn dhuinn 32 fhaighinn gu sàbhailte gun ùine downt. Ma tha sinn airson chan e iomadan àrdachadh, bidh ùine downt ann, oir cha bhith e comasach dhuinn a h-uile càil a roinn gu ceart gun chall. Tha na roghainnean sin feumail, ach chan eil iad an-còmhnaidh.

Ma dh'fheumas sinn àireamh neo-riaghailteach de luchd-frithealaidh a chur ris no a thoirt air falbh, cleachdaidh sinn Hashing cunbhalach air an fhàinne a la Ketama. Ach aig an aon àm, bidh sinn gu tur a’ call sgìre an dàta; feumaidh sinn an t-iarrtas a chur còmhla ris a’ bhuidheann gus am bi gach pìos a’ tilleadh a fhreagairt bheag fhèin, agus an uair sin na freagairtean don neach-ionaid a chur còmhla.

Tha iarrtasan sònraichte sònraichte ann. Tha e a’ coimhead mar seo: bidh neach-ionaid RPC a’ faighinn an iarrtais, a’ dearbhadh dè am buidheann airson a dhol agus a’ dearbhadh an t-slat. An uairsin tha an dàrna cuid maighstirean sgrìobhaidh ann, no, ma tha mac-samhail taic aig a’ bhuidheann, bidh e a’ cur gu mac-samhail a rèir iarrtas. Bidh an neach-ionaid a’ dèanamh seo uile.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Logaichean

Bidh sinn a 'sgrìobhadh logaichean ann an grunn dhòighean. Is e am fear as soilleire agus as sìmplidh sgrìobh logaichean gu memcache.

ring-buffer: prefix.idx = line

Tha prìomh ro-leasachan ann - ainm an loga, loidhne, agus tha meud an loga seo - an àireamh de loidhnichean. Bheir sinn àireamh air thuaiream bho 0 gu àireamh nan loidhnichean às aonais 1. 'S e ro-leasachan co-cheangailte ris an àireamh thuaiream seo an iuchair ann am memcache. Sàbhailidh sinn an loidhne log agus an ùine làithreach chun luach.

Nuair a bhios feum air logaichean a leughadh, bidh sinn a’ coileanadh Faigh Ioma na h-iuchraichean uile, air an òrdachadh a rèir ùine, agus mar sin faigh loga cinneasachaidh ann an àm fìor. Tha an sgeama air a chleachdadh nuair a dh'fheumas tu rudeigin a dhì-bhugachadh ann an riochdachadh ann an àm fìor, gun a bhith a 'briseadh rud sam bith, gun a bhith a' stad no a 'ceadachadh trafaig gu innealan eile, ach chan eil an log seo a' mairsinn fada.

Airson stòradh earbsach de logaichean tha einnsean againn einnsean-log. Is e seo dìreach carson a chaidh a chruthachadh agus a chleachdadh gu farsaing ann an àireamh mhòr de bhuidhnean. Tha an cruinneachadh as motha as aithne dhomh de stòradh 600 TB de logaichean pacaichte.

Tha an einnsean gu math sean, tha cruinneachaidhean ann a tha mar-thà 6-7 bliadhna a dh'aois. Tha duilgheadasan ann leis a tha sinn a’ feuchainn ri fuasgladh, mar eisimpleir, thòisich sinn gu gnìomhach a’ cleachdadh ClickHouse gus logaichean a stòradh.

A’ cruinneachadh chlàran ann an ClickHouse

Tha an diagram seo a’ sealltainn mar a choisicheas sinn a-steach do na h-einnseanan againn.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Tha còd ann a tha a 'dol gu h-ionadail tro RPC chun an neach-ionaid RPC, agus tha e a' tuigsinn càite an tèid e dhan einnsean. Ma tha sinn airson logaichean a sgrìobhadh ann an ClickHouse, feumaidh sinn dà phàirt atharrachadh san sgeama seo:

  • Cuir ClickHouse an àite einnsean;
  • cuir an àite an neach-ionaid RPC, nach urrainn faighinn gu ClickHouse, le fuasgladh as urrainn, agus tro RPC.

Tha an einnsean sìmplidh - bidh sinn na àite le frithealaiche no buidheann de luchd-frithealaidh le ClickHouse.

Agus airson a dhol gu ClickHouse, rinn sinn sin Taigh a' Phiseag. Ma thèid sinn gu dìreach bho KittenHouse gu ClickHouse, cha dèilig e. Fiù 's às aonais iarrtasan, tha e a' cur suas bho cheanglaichean HTTP àireamh mhòr de dh'innealan. Airson an sgeama a bhith ag obair, air frithealaiche le ClickHouse tha neach-ionaid cùl ionadail air a thogail, a tha sgrìobhte ann an dòigh gus an seas e ris na h-àireamhan de cheanglaichean a tha a dhìth. Faodaidh e cuideachd dàta a chumail taobh a-staigh e fhèin gu ìre mhath earbsach.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Aig amannan chan eil sinn airson an sgeama RPC a chuir an gnìomh ann am fuasglaidhean neo-àbhaisteach, mar eisimpleir, ann an nginx. Mar sin, tha comas aig KittenHouse logaichean fhaighinn tro UDP.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Ma tha an neach a chuir agus a gheibh na logaichean ag obair air an aon inneal, tha an coltachd gun tèid pasgan UDP a chall taobh a-staigh an òstair ionadail gu math ìosal. Mar cho-rèiteachadh eadar an fheum air RPC a chuir an gnìomh ann am fuasgladh treas-phàrtaidh agus earbsachd, bidh sinn dìreach a’ cleachdadh cur UDP. Tillidh sinn chun sgeama seo nas fhaide air adhart.

Sgrùdadh

Tha dà sheòrsa de logaichean againn: an fheadhainn a chruinnich luchd-rianachd air na frithealaichean aca agus an fheadhainn a sgrìobh luchd-leasachaidh bhon chòd. Tha iad a 'freagairt ri dà sheòrsa slatan-tomhais: siostam agus toradh.

Meatairean siostam

Bidh e ag obair air na frithealaichean againn uile lìon-dàta, a bhios a’ cruinneachadh staitistig agus gan cur gu Graphite Carbon. Mar sin, tha ClickHouse air a chleachdadh mar shiostam stòraidh, agus chan e Whisper, mar eisimpleir. Ma tha feum air, faodaidh tu leughadh gu dìreach bho ClickHouse, no cleachdadh grafana airson meatrach, grafaichean agus aithisgean. Mar luchd-leasachaidh, tha cothrom gu leòr againn air Netdata agus Grafana.

Meudan toraidh

Airson goireasachd, tha sinn air tòrr rudan a sgrìobhadh. Mar eisimpleir, tha seata de ghnìomhan àbhaisteach ann a leigeas leat Cunnt, luachan UniqueCounts a sgrìobhadh gu staitistig, a thèid a chuir am badeigin nas fhaide air adhart.

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

$stats = statlogsStatData($params)

Às deidh sin, is urrainn dhuinn sìoltachain a sheòrsachadh agus a chruinneachadh agus a h-uile dad a tha sinn ag iarraidh a dhèanamh bho staitistig - tog grafaichean, rèitich Watchdogs.

Bidh sinn a’ sgrìobhadh glè mòran mheatairean tha an àireamh de thachartasan bho 600 billean gu 1 trillean gach latha. Ach, tha sinn airson an cumail co-dhiù bliadhna no dhàgus gluasadan ann am meatrach a thuigsinn. Tha a bhith ga chur ri chèile na dhuilgheadas mòr nach eil sinn air fuasgladh fhaighinn fhathast. Innsidh mi dhut mar a tha e air a bhith ag obair airson na beagan bhliadhnaichean a dh’ fhalbh.

Tha gnìomhan againn a sgrìobhas na meatrach sin gu memcache ionadailgus an àireamh de chuir a-steach a lughdachadh. Aon uair ann an ùine ghoirid air a chuir air bhog gu h-ionadail stats-daemon a’ cruinneachadh a h-uile clàr. An uairsin, bidh an deamhan a ’cothlamadh na meatrach ann an dà shreath de luchd-frithealaidh luchd-cruinneachaidh logaichean, a bhios a’ cruinneachadh staitistig bho ghrunn de na h-innealan againn gus nach bàsaich an còmhdach air an cùlaibh.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Ma tha feum air, is urrainn dhuinn sgrìobhadh gu dìreach gu luchd-cruinneachaidh logaichean.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Ach tha sgrìobhadh bho chòd gu dìreach gu luchd-cruinneachaidh, a’ dol seachad air stas-daemom, na fhuasgladh nach gabh scalladh leis gu bheil e a’ meudachadh an luchd air an neach-cruinneachaidh. Chan eil am fuasgladh freagarrach ach mura h-urrainn dhuinn airson adhbhar air choireigin an memcache stats-daemon a thogail air an inneal, no gun do thuit e agus chaidh sinn gu dìreach.

An ath rud, bidh luchd-cruinneachaidh logaichean a’ cothlamadh staitistig a-steach meowDB - is e seo an stòr-dàta againn, a dh’ fhaodas metrics a stòradh cuideachd.

Ceistean Cumanta air ailtireachd agus obair VKontakte

An uairsin is urrainn dhuinn taghaidhean dà-chànanach “faisg airSQL” a dhèanamh bhon chòd.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Deuchainn

As t-samhradh 2018, bha hackathon a-staigh againn, agus thàinig am beachd gu bith feuchainn ri rudeigin a chuir an àite pàirt dearg an diagram a dh’ fhaodadh meatrach a stòradh ann an ClickHouse. Tha logaichean againn air ClickHouse - carson nach fheuch thu e?

Ceistean Cumanta air ailtireachd agus obair VKontakte

Bha sgeama againn a sgrìobh logaichean tro KittenHouse.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Cho-dhùin sinn cuir “*Taigh” eile ris an diagram, a gheibh dìreach na meatrach anns a’ chruth mar a bhios an còd againn gan sgrìobhadh tro UDP. An uairsin bidh an * Taigh seo gan tionndadh gu cuir a-steach, mar logaichean, a thuigeas KittenHouse. Is urrainn dha na logaichean sin a lìbhrigeadh gu foirfe gu ClickHouse, a bu chòir a bhith comasach air an leughadh.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Tha an sgeama seo le memcache, stats-daemon agus stòr-dàta logs-collectors ga chur na àite.

Ceistean Cumanta air ailtireachd agus obair VKontakte

Tha an sgeama seo le memcache, stats-daemon agus stòr-dàta logs-collectors ga chur na àite.

  • Tha fios bho chòd an seo, a tha sgrìobhte gu h-ionadail ann an StatsHouse.
  • Bidh StatsHouse a’ sgrìobhadh metrics UDP, air an tionndadh mar-thà gu cuir a-steach SQL, gu KittenHouse ann an baidsean.
  • Bidh KittenHouse gan cur gu ClickHouse.
  • Ma tha sinn airson an leughadh, leugh sinn iad a’ dol seachad air StatsHouse - gu dìreach bho ClickHouse a’ cleachdadh SQL àbhaisteach.

A bheil e fhathast deuchainn, ach is toil leinn mar a thionndaidheas e. Ma shocraicheas sinn na duilgheadasan leis an sgeama, is dòcha gun atharraich sinn thuige gu tur. Gu pearsanta, tha mi an dòchas gu bheil.

An sgeama chan eil ea 'sàbhaladh iarann. Tha feum air nas lugha de luchd-frithealaidh, chan eil feum air stats-daemons ionadail agus luchd-cruinneachaidh logaichean, ach tha feum aig ClickHouse air frithealaiche nas motha na an fheadhainn san sgeama làithreach. Tha feum air nas lugha de luchd-frithealaidh, ach feumaidh iad a bhith nas daoire agus nas cumhachdaiche.

Sgaoileadh

An toiseach, leig dhuinn sùil a thoirt air cleachdadh PHP. Tha sinn a’ leasachadh ann an git: cleachdadh GitLab и TeamCity airson cleachdadh. Tha meuran leasachaidh air an aonachadh a-steach don phrìomh mheur, bhon mhaighstir airson deuchainn tha iad air an aonachadh gu àrd-ùrlar, agus bho bhith gan cumail gu cinneasachadh.

Mus tèid an cleachdadh, thèid am meur riochdachaidh gnàthach agus an tè roimhe a ghabhail, agus thathas a ’beachdachadh air faidhlichean diff ann - atharrachaidhean: air an cruthachadh, air an toirt às, air an atharrachadh. Tha an t-atharrachadh seo air a chlàradh ann am binlog einnsean leth-bhreac sònraichte, a dh’ fhaodas atharrachaidhean a dhèanamh gu sgiobalta air a’ chabhlach frithealaiche againn gu lèir. Chan eil na tha air a chleachdadh an seo a 'dèanamh lethbhreac dìreach, ach ath-riochdachadh gossip, nuair a chuireas aon fhrithealaiche atharraichean gu na nàbaidhean as fhaisge air, iadsan gu na nàbaidhean aca, agus mar sin air adhart. Leigidh seo leat an còd ùrachadh ann an deichean is aonadan de dhiog air feadh a’ chabhlaich gu lèir. Nuair a ruigeas an t-atharrachadh am mac-samhail ionadail, cuiridh e na pìosan sin an sàs siostam faidhle ionadail. Thathas cuideachd a’ toirt air ais a rèir an aon sgeama.

Bidh sinn cuideachd a’ cleachdadh kPHP gu mòr agus tha leasachadh fhèin aige air git a rèir an dealbh gu h-àrd. Bhon seo Binary frithealaiche HTTP, an uairsin chan urrainn dhuinn diff a thoirt gu buil - tha cuideam ceudan de MB ann am binary fuasglaidh. Mar sin, tha roghainn eile an seo - tha an dreach air a sgrìobhadh gu leth-bhreac binlog. Le gach togail bidh e ag àrdachadh, agus nuair a thèid e air ais bidh e ag àrdachadh cuideachd. Tionndadh air ath-aithris gu frithealaichean. Bidh lethbhreacan-copaidh ionadail a’ faicinn gu bheil dreach ùr air a dhol a-steach don bhiona, agus leis an aon ath-riochdachadh gossip bidh iad a’ toirt an dreach as ùire den dàna dhaibh fhèin, gun a bhith a’ sgioblachadh ar prìomh fhrithealaiche, ach a’ sgaoileadh an luchd gu faiceallach air feadh an lìonraidh. Na leanas ath-chraoladh gràsmhor airson an tionndadh ùr.

Airson na h-einnseanan againn, a tha cuideachd gu ìre mhòr binaries, tha an sgeama glè choltach:

  • meur maighstir git;
  • binary a-steach .deb;
  • tha an dreach sgrìobhte gu binlog copyfast;
  • air ath-aithris gu seirbhisich;
  • bidh am frithealaiche a’ tarraing a-mach .dep ùr;
  • dpkg -i;
  • ath-chraoladh gràsmhor gu tionndadh ùr.

Is e an t-eadar-dhealachadh gu bheil ar binary air a phacaigeadh ann an tasglannan .deb, agus nuair a thèid iad a-mach dpkg -i air an cur air an t-siostam. Carson a tha kPHP air a chleachdadh mar dhàna, agus einnseanan air an cleachdadh mar dpkg? Thachair mar sin. Bidh e ag obair - na cuir suathadh air.

Ceanglaichean feumail:

Tha Alexei Akulovich air aon den fheadhainn a bhios, mar phàirt de Chomataidh a’ Phrògraim, a’ cuideachadh PHP an Ruis air 17 Cèitean gu bhith mar an tachartas as motha o chionn ghoirid airson luchd-leasachaidh PHP. Seall dè am PC fionnar a th’ againn, dè luchd-labhairt (tha dhà dhiubh a’ leasachadh PHP bunaiteach!) - tha e coltach ri rudeigin nach urrainn dhut a chall ma sgrìobhas tu PHP.

Source: www.habr.com

Cuir beachd ann