FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Keeb kwm ntawm kev tsim VKontakte yog nyob rau hauv Wikipedia; nws tau hais los ntawm Pavel nws tus kheej. Zoo li sawv daws twb paub nws lawm. Hais txog lub internals, architecture thiab qauv ntawm qhov chaw ntawm HighLoad ++ Pavel hais rau kuv rov qab rau xyoo 2010. Ntau lub servers tau xau txij thaum ntawd los, yog li peb yuav hloov kho cov ntaub ntawv: peb yuav txiav nws, tshem tawm sab hauv, ntsuas nws, thiab saib VK ntaus ntawv los ntawm kev pom.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Alexey Akulovich (AterCattus) backend developer hauv pab pawg VKontakte. Cov ntawv sau tseg ntawm tsab ntawv ceeb toom no yog cov lus teb rau cov lus nug nquag nug txog kev ua haujlwm ntawm lub platform, infrastructure, servers thiab kev sib cuam tshuam ntawm lawv, tab sis tsis yog hais txog kev txhim kho, uas yog. txog hlau. Cais, hais txog databases thiab dab tsi VK muaj es tsis txhob, txog kev sau cov cav thiab saib xyuas tag nrho qhov project tag nrho. Paub meej hauv qab txiav.



Tau ntau tshaj plaub xyoos kuv tau ua haujlwm nrog txhua yam haujlwm uas cuam tshuam nrog lub backend.

  • Uploading, khaws cia, processing, distributing media: video, live streaming, audio, photos, document.
  • Infrastructure, platform, developer monitoring, cav, regional caches, CDN, proprietary RPC protocol.
  • Kev koom ua ke nrog cov kev pabcuam sab nraud: thawb cov ntawv ceeb toom, sab nraud txuas parsing, RSS pub.
  • Pab cov npoj yaig nrog ntau cov lus nug, cov lus teb uas yuav tsum tau dhia mus rau hauv cov lej tsis paub.

Thaum lub sij hawm no, kuv muaj ib txhais tes nyob rau hauv ntau yam ntawm lub site. Kuv xav qhia qhov kev paub no.

General architecture

Txhua yam, raws li ib txwm, pib nrog ib tus neeg rau zaub mov lossis pab pawg ntawm cov servers uas lees txais kev thov.

Pem hauv ntej server

Lub server pem hauv ntej lees txais kev thov ntawm HTTPS, RTMP thiab WSS.

HTTPS - cov no yog kev thov rau lub vev xaib tseem ceeb thiab lub vev xaib ntawm lub vev xaib: vk.com thiab m.vk.com, thiab lwm tus neeg ua haujlwm thiab tsis raug cai ntawm peb API: cov neeg siv xov tooj ntawm tes, cov tub txib. Peb muaj kev txais tos RTMP-traffic rau Live broadcasts nrog cais pem hauv ntej servers thiab WSS- Kev sib txuas rau Streaming API.

Rau HTTPS thiab WSS ntawm servers nws tsim nyog nginx. Rau RTMP tshaj tawm, peb nyuam qhuav hloov mus rau peb tus kheej kev daws teeb meem kiv, tab sis nws yog dhau ntawm qhov kev tshaj tawm. Rau kev ua txhaum cai, cov servers no tshaj tawm cov chaw nyob IP thiab ua hauv pab pawg kom yog tias muaj teeb meem ntawm ib qho ntawm cov servers, cov neeg siv thov tsis ploj. Rau HTTPS thiab WSS, tib cov servers no encrypt cov tsheb khiav mus los txhawm rau koom nrog CPU load rau lawv tus kheej.

Peb yuav tsis tham ntxiv txog WSS thiab RTMP, tab sis tsuas yog hais txog tus qauv HTTPS thov, uas feem ntau cuam tshuam nrog lub vev xaib project.

backend

Qab pem hauv ntej muaj feem ntau backend servers. Lawv txheej txheem thov kom cov neeg rau zaub mov pem hauv ntej tau txais los ntawm cov neeg siv khoom.

no kPHP servers, uas HTTP daemon tab tom khiav, vim HTTPS twb decrypted lawm. kPHP yog lub server uas khiav ntawm prefork qauv: pib tus txheej txheem tswv, ib pawg ntawm cov txheej txheem me nyuam, dhau qhov kev mloog rau lawv thiab lawv ua lawv cov lus thov. Hauv qhov no, cov txheej txheem tsis rov pib dua ntawm txhua qhov kev thov los ntawm tus neeg siv, tab sis tsuas yog rov pib dua lawv lub xeev mus rau qhov qub zero-tus nqi xeev - thov tom qab thov, tsis yog rov pib dua.

Thauj khoom faib khoom

Tag nrho peb cov backends tsis yog lub pas dej loj ntawm cov cav tov uas tuaj yeem ua cov lus thov. Peb lawv muab faib ua pawg: general, mobile, api, video, staging... Qhov teeb meem ntawm ib pawg ntawm cov tshuab yuav tsis cuam tshuam rau lwm tus. Nyob rau hauv cov ntaub ntawv ntawm teeb meem nrog video, tus neeg siv uas mloog suab paj nruag yuav tsis txawm paub txog cov teeb meem. Qhov twg backend xa qhov kev thov rau yog txiav txim siab los ntawm nginx nyob rau pem hauv ntej raws li config.

Metric sau thiab rebalancing

Yuav kom nkag siab tias peb yuav tsum muaj pes tsawg lub tsheb hauv txhua pab pawg, peb tsis txhob cia siab rau QPS. Cov backends txawv, lawv muaj kev thov sib txawv, txhua qhov kev thov muaj qhov sib txawv ntawm kev suav QPS. Yog vim li cas peb peb ua haujlwm nrog lub tswv yim ntawm kev thauj khoom ntawm lub server tag nrho - ntawm CPU thiab perf.

Peb muaj ntau txhiab tus servers zoo li no. Txhua lub cev neeg rau zaub mov khiav ib pab pawg kPHP kom rov ua dua tag nrho cov cores (vim tias kPHP yog ib qho threaded).

Cov ntsiab lus Server

CS lossis Content Server yog qhov chaw cia. CS yog tus neeg rau zaub mov uas khaws cov ntaub ntawv thiab tseem ua cov ntaub ntawv upload thiab txhua hom kev ua haujlwm tom qab synchronous uas lub vev xaib tseem ceeb hauv ntej muab rau nws.

Peb muaj kaum tawm txhiab tus neeg siv lub cev uas khaws cov ntaub ntawv. Cov neeg siv nyiam upload cov ntaub ntawv, thiab peb nyiam khaws thiab qhia lawv. Qee cov servers no raug kaw los ntawm cov servers tshwj xeeb pu/pp.

puv/p

Yog tias koj qhib lub network tab hauv VK, koj pom pu / pp.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Pu/pp yog dab tsi? Yog tias peb kaw ib tus neeg rau zaub mov tom qab lwm qhov, ces muaj ob txoj hauv kev rau uploading thiab rub tawm cov ntaub ntawv mus rau lub server uas raug kaw: ncaj qha los ntawm http://cs100500.userapi.com/path los yog ntawm intermediate server - http://pu.vk.com/c100500/path.

Pu yog lub npe keeb kwm rau kev yees duab upload, thiab pp yog photo proxy. Ntawd yog, ib lub server yog rau uploading duab, thiab lwm qhov yog rau uploading. Tam sim no tsis tsuas yog cov duab raug thauj khoom, tab sis lub npe tau khaws cia.

Cov servers no xaus HTTPS ntukom tshem tawm cov processor load los ntawm kev cia. Tsis tas li ntawd, txij li cov neeg siv cov ntaub ntawv tau ua tiav ntawm cov servers, cov ntaub ntawv tsis tshua muaj txiaj ntsig khaws cia hauv cov tshuab no, qhov zoo dua. Piv txwv li, HTTPS encryption keys.

Txij li thaum lub tshuab raug kaw los ntawm peb lwm lub tshuab, peb muaj peev xwm them taus tsis pub lawv "dawb" IPs sab nraud, thiab muab "grey". Txoj kev no peb tau txais kev cawmdim ntawm lub pas dej IP thiab tau lees paub los tiv thaiv cov tshuab los ntawm kev nkag mus rau sab nraud - tsuas yog tsis muaj tus IP nkag mus rau hauv nws.

Resiliency dhau IPs sib koom. Hais txog kev ua txhaum cai, lub tswv yim ua haujlwm zoo ib yam - ob peb lub cev servers muaj ib qho IP lub cev, thiab cov khoom siv nyob rau hauv pem hauv ntej ntawm lawv xaiv qhov twg xa daim ntawv thov. Kuv mam li tham txog lwm yam kev xaiv tom qab.

Lub ntsiab lus tsis sib haum xeeb yog qhov no tus neeg siv khoom khaws kev sib txuas tsawg dua. Yog tias muaj tib tus IP rau ntau lub tshuab - nrog tib tus tswv tsev: pu.vk.com lossis pp.vk.com, tus neeg siv khoom browser muaj qhov txwv ntawm tus naj npawb ntawm kev thov ib txhij rau ib tus tswv tsev. Tab sis nyob rau hauv lub sij hawm ntawm ubiquitous HTTP / 2, kuv ntseeg hais tias qhov no tsis yog li ntawd tseem ceeb.

Qhov pom tseeb qhov tsis zoo ntawm lub tswv yim yog tias nws yuav tsum twj tso kua mis tag nrho cov tsheb, uas mus rau qhov chaw cia, los ntawm lwm tus neeg rau zaub mov. Txij li thaum peb tso tsheb khiav los ntawm cov cav tov, peb tseem tsis tau tso tsheb khiav hnyav, piv txwv li, video, siv tib lub tswv yim. Peb xa nws ncaj qha - ib qho kev sib txuas ncaj qha rau kev sib cais tshwj xeeb rau kev yees duab. Peb xa cov ntsiab lus sib dua los ntawm lub npe.

Tsis ntev tas los no peb tau txais kev txhim kho version ntawm npe. Tam sim no kuv yuav qhia koj seb lawv txawv li cas ntawm cov tib neeg thiab vim li cas qhov no yog qhov tsim nyog.

Tshav

Thaum lub Cuaj Hlis 2017, Oracle, uas yav tas los yuav Sun, tshem tawm ntau tus neeg ua haujlwm Sun. Peb tuaj yeem hais tias lub sijhawm no lub tuam txhab tau tso tseg. Thaum xaiv lub npe rau lub kaw lus tshiab, peb cov thawj coj txiav txim siab them se rau lub cim xeeb ntawm lub tuam txhab no thiab muab lub npe tshiab rau Sun. Ntawm peb tus kheej peb tsuas yog hu nws "suns".

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

pp muaj ob peb teeb meem. Ib tus IP rau ib pab pawg - tsis muaj txiaj ntsig cache. Ob peb lub cev servers sib koom ib qho chaw nyob IP, thiab tsis muaj txoj hauv kev los tswj cov server uas qhov kev thov yuav mus rau. Yog li, yog tias cov neeg siv sib txawv tuaj rau tib cov ntaub ntawv, ces yog tias muaj cache ntawm cov servers no, cov ntaub ntawv xaus rau hauv cache ntawm txhua tus neeg rau zaub mov. Qhov no yog ib txoj kev ua tsis tau zoo, tab sis tsis muaj dab tsi ua tau.

Yog li ntawd - peb tsis tuaj yeem shard cov ntsiab lus, vim peb tsis tuaj yeem xaiv ib tus neeg rau zaub mov tshwj xeeb rau pab pawg no - lawv muaj tus IP sib xws. Kuj rau qee qhov laj thawj sab hauv peb muaj nws tsis tuaj yeem nruab cov servers hauv cheeb tsam. Lawv sawv hauv St. Petersburg xwb.

Nrog rau lub hnub, peb hloov cov txheej txheem xaiv. Tam sim no peb muaj anycast routing: dynamic routing, anycast, tus kheej-check daemon. Txhua tus neeg rau zaub mov muaj nws tus kheej tus IP, tab sis ib qho subnet. Txhua yam yog teeb tsa nyob rau hauv ib txoj kev uas yog tias ib tus neeg rau zaub mov tsis ua haujlwm, cov tsheb khiav mus thoob plaws lwm cov servers ntawm tib pab pawg tau txais. Tam sim no nws muaj peev xwm xaiv ib lub server tshwj xeeb, tsis redundant caching, thiab kev ntseeg tau tsis cuam tshuam.

Kev txhawb nqa hnyav. Tam sim no peb muaj peev xwm them taus rau nruab cov tshuab ntawm lub zog sib txawv raws li qhov xav tau, thiab tseem, yog tias muaj teeb meem ib ntus, hloov qhov hnyav ntawm kev ua haujlwm "hnub" los txo cov load ntawm lawv, kom lawv "so" thiab pib ua haujlwm dua.

Sharding los ntawm cov ntsiab lus id. Ib qho funny txog kev sib faib: peb feem ntau shard cov ntsiab lus kom cov neeg siv sib txawv mus rau tib cov ntaub ntawv los ntawm tib "hnub" kom lawv muaj cov cache.

Peb nyuam qhuav pib ua daim ntawv thov "Clover". Qhov no yog cov lus nug hauv online hauv kev tshaj tawm hauv xov tooj cua, qhov twg tus tswv tsev nug cov lus nug thiab cov neeg siv teb hauv lub sijhawm, xaiv cov kev xaiv. Lub app muaj kev sib tham uas cov neeg siv tuaj yeem sib tham. Tau ib txhij txuas mus rau kev tshaj tawm ntau tshaj 100 txhiab tus neeg. Lawv txhua tus sau cov lus uas raug xa mus rau txhua tus neeg koom, thiab tus avatar tuaj nrog cov lus. Yog tias 100 txhiab tus neeg tuaj rau ib tus avatar hauv ib "hnub", ces qee zaum nws tuaj yeem yob tom qab huab.

Txhawm rau tiv thaiv kev tawg ntawm kev thov rau tib cov ntaub ntawv, nws yog rau qee yam ntawm cov ntsiab lus uas peb tig rau lub tswv yim ruam uas nthuav tawm cov ntaub ntawv hla txhua qhov muaj "hnub" hauv cheeb tsam.

Lub hnub los ntawm sab hauv

Rov qab tso npe ntawm nginx, cache hauv RAM lossis ceev ceev Optane / NVMe disks. Piv txwv: http://sun4-2.userapi.com/c100500/path - qhov txuas mus rau "hnub", uas nyob hauv thaj tsam plaub, pawg neeg rau zaub mov thib ob. Nws kaw txoj kev cov ntaub ntawv, uas lub cev dag ntawm server 100500.

cover

Peb ntxiv ib qho ntxiv rau peb cov txheej txheem kev tsim vaj tsev - qhov chaw caching.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Hauv qab no yog daim duab layout lub regional caches, muaj txog 20 ntawm lawv. Cov no yog cov chaw uas caches thiab "hnub" nyob, uas tuaj yeem khaws cov tsheb khiav los ntawm lawv tus kheej.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Qhov no yog caching ntawm cov ntsiab lus multimedia; tsis muaj cov neeg siv cov ntaub ntawv khaws cia ntawm no - tsuas yog suab paj nruag, yees duab, duab.

Txhawm rau txiav txim siab tus neeg siv thaj tsam, peb peb sau BGP network ua ntej tshaj tawm hauv cheeb tsam. Nyob rau hauv cov ntaub ntawv ntawm fallback, peb kuj yuav tsum parse lub geoip database yog tias peb nrhiav tsis tau tus IP los ntawm prefixes. Peb txiav txim siab thaj av los ntawm tus neeg siv tus IP. Hauv cov cai, peb tuaj yeem saib ntawm ib lossis ntau thaj tsam ntawm tus neeg siv - cov ntsiab lus uas nws nyob ze tshaj plaws hauv thaj chaw.

Ua li cas nws ua hauj lwm?

Peb suav qhov nrov ntawm cov ntaub ntawv los ntawm cheeb tsam. Muaj ib tug xov tooj ntawm lub regional cache qhov twg cov neeg siv nyob rau hauv, thiab ib tug cov ntaub ntawv identifier - peb coj cov khub no thiab nce qhov kev ntaus nqi nrog txhua download.

Nyob rau tib lub sijhawm, dab - kev pabcuam hauv cheeb tsam - qee lub sijhawm tuaj rau API thiab hais tias: "Kuv zoo li thiab zoo li lub cache, muab cov npe ntawm cov ntaub ntawv nrov tshaj plaws hauv kuv cheeb tsam uas tseem tsis tau muaj rau kuv. ” API xa ib pawg ntawm cov ntaub ntawv txheeb xyuas los ntawm kev ntaus nqi, daemon rub tawm lawv, coj lawv mus rau thaj tsam thiab xa cov ntaub ntawv los ntawm qhov ntawd. Qhov no yog qhov sib txawv ntawm pu / pp thiab Sun los ntawm caches: lawv muab cov ntaub ntawv los ntawm lawv tus kheej tam sim ntawd, txawm tias cov ntaub ntawv no tsis nyob hauv cache, thiab lub cache ua ntej rub tawm cov ntaub ntawv rau nws tus kheej, thiab tom qab ntawd pib muab nws rov qab.

Hauv qhov no peb tau txais cov ntsiab lus ze rau cov neeg siv thiab nthuav tawm lub network load. Piv txwv li, tsuas yog los ntawm Moscow cache peb faib ntau tshaj 1 Tbit / s thaum lub sij hawm ncov.

Tab sis muaj teeb meem - cache servers tsis yog roj hmab. Rau cov ntsiab lus nrov heev, qee zaum tsis muaj lub network txaus rau lub server cais. Peb cov cache servers yog 40-50 Gbit / s, tab sis muaj cov ntsiab lus uas cuam tshuam tag nrho cov channel. Peb tab tom txav mus rau kev siv cia ntau tshaj ib daim qauv ntawm cov ntaub ntawv nrov hauv cheeb tsam. Kuv vam tias peb yuav siv nws los ntawm qhov kawg ntawm lub xyoo.

Peb saib ntawm lub dav hlau architecture.

  • Pem hauv ntej servers uas txais kev thov.
  • Backends cov txheej txheem thov.
  • Cov chaw khaws cia uas raug kaw los ntawm ob hom proxies.
  • Regional caches.

Dab tsi yog ploj ntawm daim duab no? Tau kawg, cov databases uas peb khaws cov ntaub ntawv.

Databases los yog cav

Peb hu lawv tsis databases, tab sis cav - cav, vim hais tias peb xyaum tsis muaj databases nyob rau hauv lub feem ntau lees paub.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Qhov no yog ib qho kev ntsuas tsim nyog. Qhov no tshwm sim vim hais tias xyoo 2008-2009, thaum VK muaj kev loj hlob ntawm kev muaj koob meej, qhov project tau ua haujlwm tag nrho ntawm MySQL thiab Memcache thiab muaj teeb meem. MySQL nyiam ua cov ntaub ntawv tsis raug thiab tsis raug, tom qab ntawd nws yuav tsis rov qab los, thiab Memcache maj mam degraded hauv kev ua tau zoo thiab yuav tsum tau rov pib dua.

Nws hloov tawm hais tias qhov kev ua haujlwm nrov tau nce mus tas li, uas cuam tshuam cov ntaub ntawv, thiab lub cache, uas ua rau qeeb. Nyob rau hauv cov xwm txheej zoo li no, nws yog ib qho nyuaj rau kev tsim ib txoj haujlwm loj hlob. Nws tau txiav txim siab los sim rov sau dua qhov tseem ceeb uas qhov project tau tsom mus rau peb tus kheej lub tsheb kauj vab.

Kev daws tau tiav. Muaj lub sijhawm los ua qhov no, nrog rau qhov tsim nyog kawg, vim tias lwm txoj hauv kev ntawm kev ntsuas tsis muaj nyob rau lub sijhawm ntawd. Tsis muaj ib pawg ntawm cov databases, NoSQL tseem tsis tau muaj, tsuas muaj MySQL, Memcache, PostrgreSQL - thiab qhov ntawd yog nws.

Universal kev ua haujlwm. Txoj kev loj hlob tau coj los ntawm peb pab pawg C tsim tawm thiab txhua yam tau ua tiav zoo ib yam. Txawm hais tias ntawm lub cav, lawv txhua tus muaj kwv yees li tib cov ntaub ntawv sau rau disk, tib qhov kev tso tawm tsis tau, ua tiav cov teeb liab tib yam, thiab coj kwv yees li qub nyob rau hauv cov xwm txheej ntawm ntug thiab teeb meem. Nrog rau kev loj hlob ntawm cov cav, nws yog qhov yooj yim rau cov thawj coj ua haujlwm - tsis muaj lub vaj tsiaj uas yuav tsum tau khaws cia, thiab lawv yuav tsum tau rov kawm txog kev ua haujlwm ntawm txhua tus neeg thib peb cov ntaub ntawv tshiab, uas ua rau nws tuaj yeem ua tau sai thiab yooj yim nce. lawv tus lej.

Hom cav

Pab neeg tau sau ob peb lub cav. Nov yog qee qhov ntawm lawv: phooj ywg, lus qhia, duab, ipdb, ntawv, npe, teev, teev, memcached, meowdb, xov xwm, nostradamus, yees duab, playlists, pmemcached, sandbox, nrhiav, cia, nyiam, ua haujlwm, ...

Rau txhua txoj haujlwm uas yuav tsum muaj cov qauv ntaub ntawv tshwj xeeb lossis cov txheej txheem atypical thov, pab pawg C sau lub cav tshiab. Vim li cas ho tsis.

Peb muaj lub cav sib cais memcached, uas zoo ib yam li ib txwm, tab sis nrog ib pawg ntawm goodies, thiab uas tsis qeeb. Tsis ClickHouse, tab sis nws kuj ua haujlwm. Muaj cais pmemca ua Yog persistent memcached, uas tseem tuaj yeem khaws cov ntaub ntawv ntawm disk, ntxiv rau, dua li haum rau hauv RAM, kom tsis txhob poob cov ntaub ntawv thaum rov pib dua. Muaj ntau lub cav rau ib tus neeg ua haujlwm: queues, npe, teev - txhua yam uas peb xav tau.

Pawg

Los ntawm kev pom kev cai, tsis tas yuav xav txog cov cav lossis cov ntaub ntawv raws li cov txheej txheem, cov koom haum, lossis cov xwm txheej. Cov cai ua haujlwm tshwj xeeb nrog pawg, nrog cov pab pawg ntawm cov cav - ib hom rau ib pawg. Cia peb hais tias muaj ib pawg memcached - nws tsuas yog ib pawg ntawm cov tshuab.

Tus lej tsis tas yuav paub qhov chaw nyob ntawm lub cev, qhov loj me, lossis tus naj npawb ntawm cov servers txhua. Nws mus rau pawg siv ib qho kev txheeb xyuas.

Txhawm rau ua qhov no, koj yuav tsum tau ntxiv ib qho chaw ntxiv uas nyob nruab nrab ntawm cov cai thiab cov cav - npe.

RPC npe

Pov thawj txuas tsheb npav, uas yuav luag tag nrho lub xaib khiav. Tib lub sijhawm peb muaj tsis muaj kev pab nrhiav pom - Hloov chaw, muaj ib qho kev teeb tsa rau lub npe no, uas paub qhov chaw ntawm txhua pawg thiab tag nrho cov shards ntawm pawg no. Nov yog qhov admins ua.

Programmers tsis quav ntsej txhua qhov ntau npaum li cas, qhov twg thiab nws raug nqi dab tsi - lawv tsuas yog mus rau pawg. Qhov no tso cai rau peb ntau heev. Thaum tau txais ib daim ntawv thov, tus neeg sawv cev redirects qhov kev thov, paub qhov twg - nws txiav txim qhov no nws tus kheej.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Hauv qhov no, proxy yog qhov taw qhia ntawm kev tiv thaiv kev ua haujlwm tsis ua haujlwm. Yog tias qee lub cav qeeb lossis sib tsoo, tus neeg sawv cev nkag siab qhov no thiab teb raws li tus neeg siv khoom sab. Qhov no tso cai rau koj tshem tawm lub sijhawm - cov cai tsis tos lub cav teb, tab sis nkag siab tias nws tsis ua haujlwm thiab yuav tsum coj tus cwj pwm txawv. Cov cai yuav tsum tau npaj rau qhov tseeb tias cov databases tsis tas yuav ua haujlwm.

Kev siv tshwj xeeb

Qee lub sij hawm peb tseem xav kom muaj qee yam kev daws teeb meem tsis zoo raws li lub cav. Nyob rau tib lub sijhawm, nws tau txiav txim siab tsis siv peb cov rpc-proxy npaj, tsim tshwj xeeb rau peb lub cav, tab sis ua kom muaj npe cais rau txoj haujlwm.

Rau MySQL, uas peb tseem muaj nyob ntawm no thiab nyob ntawd, peb siv db-proxy, thiab rau ClickHouse - Kittenhouse.

Nws ua haujlwm feem ntau zoo li no. Muaj qee tus neeg rau zaub mov, nws khiav kPHP, Mus, Python - feem ntau, txhua tus lej uas tuaj yeem siv peb RPC raws tu qauv. Cov cai khiav hauv zos ntawm RPC npe - txhua tus neeg rau zaub mov uas tus lej nyob hauv nws tus kheej lub npe hauv zos. Thaum thov, tus neeg sawv cev nkag siab tias yuav mus qhov twg.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Yog tias ib lub cav xav mus rau lwm tus, txawm tias nws yog ib tus neeg nyob ze, nws mus dhau ntawm tus neeg sawv cev, vim tias tus neeg nyob ze yuav nyob hauv lwm qhov chaw khaws ntaub ntawv. Lub cav yuav tsum tsis txhob cia siab rau kev paub txog qhov chaw ntawm txhua yam uas tsis yog nws tus kheej - qhov no yog peb txoj kev daws teeb meem. Tab sis tau kawg muaj qhov zam :)

Ib qho piv txwv ntawm TL-scheme raws li txhua lub cav ua haujlwm.

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;

Qhov no yog binary raws tu qauv, qhov ze tshaj analogue ntawm uas yog ua protobuf. Lub schema piav qhia txog kev xaiv teb, hom nyuaj - txuas ntxiv ntawm cov scalar built-in, thiab cov lus nug. Txhua yam ua haujlwm raws li txoj cai no.

RPC dhau TL dhau TCP/UDP… UDP?

Peb muaj RPC raws tu qauv rau kev ua raws li lub cav thov uas khiav saum TL lub tswv yim. Qhov no tag nrho ua haujlwm dhau TCP / UDP kev sib txuas. TCP yog to taub, tab sis vim li cas peb thiaj xav tau UDP ntau zaus?

UDP pab zam qhov teeb meem ntawm ntau qhov kev sib txuas ntawm cov servers. Yog tias txhua tus neeg rau zaub mov muaj lub npe RPC thiab, feem ntau, nws tuaj yeem mus rau txhua lub cav, ces muaj ntau txhiab tus TCP kev sib txuas rau ib lub server. Muaj ib qho load, tab sis nws tsis muaj txiaj ntsig. Nyob rau hauv rooj plaub ntawm UDP qhov teeb meem no tsis muaj nyob.

Tsis muaj kev sib koom tes TCP. Qhov no yog ib qho teeb meem tshwm sim: thaum lub cav tshiab lossis lub server tshiab tau pib, ntau qhov kev sib txuas TCP tau tsim ib zaug. Rau qhov kev thov me me, piv txwv li, UDP payload, txhua qhov kev sib txuas lus ntawm tus lej thiab lub cav yog ob pob ntawv UDP: ib tug yoov nyob rau hauv ib txoj kev, lub thib ob nyob rau hauv lwm yam. Ib qho kev ncig mus ncig - thiab cov cai tau txais cov lus teb los ntawm lub cav tsis muaj kev tuav tes.

Yog, nws tsuas yog ua haujlwm xwb nrog ib feem me me ntawm pob ntawv poob. Cov txheej txheem muaj kev txhawb nqa rau kev xa rov qab thiab ncua sijhawm, tab sis yog tias peb poob ntau, peb yuav tau txais yuav luag TCP, uas tsis muaj txiaj ntsig. Peb tsis tsav UDP hla dej hiav txwv.

Peb muaj ntau txhiab tus servers zoo li no, thiab cov tswv yim zoo ib yam: ib pob ntawm cov cav tov tau nruab rau ntawm txhua tus neeg rau zaub mov lub cev. Lawv feem ntau yog ib leeg-xov ua haujlwm kom sai li sai tau yam tsis muaj kev thaiv, thiab raug muab faib ua ib txoj xov zoo. Nyob rau tib lub sijhawm, peb tsis muaj dab tsi txhim khu kev qha ntau dua li cov cav no, thiab kev mloog ntau yog them rau cov ntaub ntawv tsis tu ncua.

Cov ntaub ntawv tsis tu ncua

Cav sau binlogs. Ib lub binlog yog cov ntaub ntawv kawg ntawm qhov kev tshwm sim rau kev hloov hauv xeev lossis cov ntaub ntawv ntxiv. Hauv cov kev daws teeb meem sib txawv nws yog hu ua txawv: binary cav, WAL, AOF, tab sis txoj ntsiab cai yog tib yam.

Txhawm rau tiv thaiv lub cav los ntawm kev rov nyeem tag nrho cov binlog rau ntau xyoo thaum rov pib dua, cov cav sau snapshots - lub xeev tam sim no. Yog tias tsim nyog, lawv nyeem los ntawm nws ua ntej, thiab tom qab ntawd ua tiav kev nyeem ntawv los ntawm binlog. Tag nrho cov binlogs tau sau rau hauv tib hom binary - raws li TL scheme, kom cov thawj coj tuaj yeem tswj hwm lawv sib npaug nrog lawv cov cuab yeej. Tsis muaj qhov xav tau rau snapshots. Muaj ib lub taub hau dav dav uas qhia tias nws qhov snapshot yog int, khawv koob ntawm lub cav, thiab lub cev twg tsis tseem ceeb rau leej twg. Qhov no yog ib qho teeb meem nrog lub cav uas kaw lub snapshot.

Kuv yuav piav qhia txog lub hauv paus ntsiab lus ntawm kev ua haujlwm sai. Muaj ib lub server uas lub cav khiav. Nws qhib ib lub binlog tshiab rau kev sau ntawv thiab sau ib qho kev tshwm sim rau kev hloov pauv rau nws.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Qee lub sij hawm, nws txiav txim siab los thaij duab rau nws tus kheej, lossis nws tau txais lub teeb liab. Tus neeg rau zaub mov tsim cov ntaub ntawv tshiab, sau nws tag nrho lub xeev rau hauv nws, ntxiv rau qhov tam sim no binlog loj - offset - mus rau qhov kawg ntawm cov ntaub ntawv, thiab tseem sau ntxiv. Lub binlog tshiab tsis tsim.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Qee lub sij hawm, thaum lub cav rov pib dua, yuav muaj ob qho tib si binlog thiab snapshot ntawm lub disk. Lub cav nyeem tag nrho snapshot thiab tsa nws lub xeev ntawm ib qho chaw.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Nyeem txoj hauj lwm uas yog thaum lub sij hawm lub snapshot raug tsim thiab qhov loj ntawm binlog.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Nyeem qhov kawg ntawm binlog kom tau txais lub xeev tam sim no thiab txuas ntxiv sau cov xwm txheej ntxiv. Qhov no yog ib txoj kev yooj yim; tag nrho peb lub cav ua haujlwm raws li nws.

Cov ntaub ntawv rov ua dua

Yog li ntawd, cov ntaub ntawv replication nyob rau hauv peb raws li nqe lus - peb sau rau hauv binlog tsis muaj nplooj hloov pauv, tab sis yog hloov kev thov. Zoo ib yam li dab tsi los ntawm lub network, tsuas yog hloov me ntsis.

Tib lub tswv yim yog siv tsis tau tsuas yog rau replication, tab sis kuj tsim backups. Peb muaj lub cav - tus kws sau ntawv uas sau rau hauv binlog. Hauv lwm qhov chaw uas cov thawj tswj hwm teeb tsa, qhov binlog no tau theej, thiab qhov ntawd yog nws - peb muaj thaub qab.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Yog xav tau nyeem ntawv replicaTxhawm rau txo CPU nyeem ntawv load, lub tshuab nyeem ntawv tsuas yog pib, uas nyeem qhov kawg ntawm binlog thiab ua tiav cov lus txib hauv zos.

Lub lag luam ntawm no yog me me, thiab nws muaj peev xwm nrhiav tau ntau npaum li cas tus replica lags qab tus tswv.

Cov ntaub ntawv sib faib hauv RPC npe

Sharding ua haujlwm li cas? Tus proxy nkag siab li cas pawg shard xa mus rau? Txoj cai tsis hais: "Xa rau 15 shards!" - Tsis yog, qhov no yog ua los ntawm tus neeg sawv cev.

Txoj kev yooj yim tshaj plaws yog thawj zaug - thawj tus lej hauv kev thov.

get(photo100_500) => 100 % N.

Qhov no yog ib qho piv txwv rau ib qho yooj yim memcached ntawv raws tu qauv, tab sis, ntawm chav kawm, queries yuav complex thiab qauv. Qhov piv txwv siv thawj tus lej hauv cov lus nug thiab qhov seem thaum muab faib los ntawm pawg loj.

Qhov no muaj txiaj ntsig thaum peb xav kom muaj cov ntaub ntawv hauv cheeb tsam ntawm ib qho chaw. Cia peb hais tias 100 yog tus neeg siv lossis pab pawg ID, thiab peb xav kom tag nrho cov ntaub ntawv ntawm ib lub koom haum nyob rau ntawm ib qho shard rau cov lus nug nyuaj.

Yog tias peb tsis quav ntsej li cas kev thov kis thoob plaws pawg, muaj lwm txoj kev xaiv - hashing tag nrho shard.

hash(photo100_500) => 3539886280 % N

Peb kuj tau txais cov hash, seem ntawm kev faib thiab tus lej shard.

Ob qho kev xaiv no tsuas yog ua haujlwm yog tias peb npaj rau qhov tseeb tias thaum peb nce qhov loj ntawm pawg, peb yuav faib nws los yog nce nws ntau zaus. Piv txwv li, peb muaj 16 shards, peb tsis muaj txaus, peb xav tau ntau dua - peb tuaj yeem nyab xeeb tau 32 yam tsis muaj sijhawm poob. Yog tias peb xav nce tsis ntau, yuav muaj lub sijhawm poob, vim tias peb yuav tsis tuaj yeem faib txhua yam kom tsis muaj kev poob. Cov kev xaiv no muaj txiaj ntsig, tab sis tsis tas li.

Yog tias peb xav tau ntxiv lossis tshem tawm tus naj npawb ntawm cov servers, peb siv Ib txwm hashing ntawm lub nplhaib a la Ketama. Tab sis tib lub sijhawm, peb poob tag nrho cov chaw ntawm cov ntaub ntawv; peb yuav tsum sib koom ua ke qhov kev thov mus rau pawg kom txhua daim rov qab nws cov lus teb me me, thiab tom qab ntawd muab cov lus teb rau lub npe.

Muaj kev thov tshwj xeeb tshwj xeeb. Nws zoo li qhov no: RPC proxy tau txais qhov kev thov, txiav txim siab seb pawg twg mus rau thiab txiav txim siab lub shard. Tom qab ntawd muaj ob qho kev sau ntawv masters, lossis, yog tias pawg muaj kev txhawb nqa replica, nws xa mus rau qhov hloov pauv ntawm qhov kev thov. Tus neeg sawv cev ua txhua yam no.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Cov log

Peb sau cov cav hauv ntau txoj kev. Qhov pom tseeb thiab yooj yim tshaj plaws yog sau ntawv rau memcache.

ring-buffer: prefix.idx = line

Muaj ib qho tseem ceeb ua ntej - lub npe ntawm lub cav, ib kab, thiab muaj qhov loj ntawm lub cav no - tus naj npawb ntawm kab. Peb coj tus lej random los ntawm 0 mus rau tus lej ntawm cov kab rho tawm 1. Tus yuam sij hauv memcache yog ib qho prefix concatenated nrog tus lej random. Peb txuag lub cav kab thiab lub sijhawm tam sim no rau tus nqi.

Thaum nws yuav tsum tau nyeem cov cav, peb nqa tawm Multi Tau txhua tus yuam sij, txheeb los ntawm lub sijhawm, thiab yog li tau txais cov ntawv teev ntau lawm hauv lub sijhawm. Lub tswv yim yog siv thaum koj xav tau debug ib yam dab tsi hauv kev tsim khoom hauv lub sijhawm tiag tiag, tsis muaj kev rhuav tshem ib yam dab tsi, tsis txwv lossis tso cai rau kev khiav mus rau lwm lub tshuab, tab sis lub cav no tsis kav ntev.

Rau txhim khu kev qha cia ntawm cav peb muaj lub cav cav-engine. Qhov no yog qhov tseeb vim li cas nws tau tsim thiab siv dav hauv ntau pawg pawg. Cov pawg loj tshaj plaws uas kuv paub ntawm cov khw muag khoom 600 TB ntawm cov ntawv ntim khoom.

Lub cav yog qub heev, muaj pawg uas twb muaj 6-7 xyoo. Muaj teeb meem nrog nws uas peb tab tom sim daws, piv txwv li, peb pib nquag siv ClickHouse khaws cov cav.

Sau cov cav hauv ClickHouse

Daim duab no qhia tias peb taug kev mus rau hauv peb lub cav li cas.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Muaj cov cai uas mus hauv zos ntawm RPC mus rau RPC-proxy, thiab nws nkag siab qhov twg mus rau lub cav. Yog tias peb xav sau cov cav hauv ClickHouse, peb yuav tsum tau hloov ob ntu hauv cov tswv yim no:

  • hloov qee lub cav nrog ClickHouse;
  • hloov lub npe RPC, uas tsis tuaj yeem nkag mus rau ClickHouse, nrog qee qhov kev daws teeb meem uas tuaj yeem ua tau, thiab ntawm RPC.

Lub cav yog yooj yim - peb hloov nws nrog ib tug neeg rau zaub mov lossis ib pawg ntawm cov servers nrog ClickHouse.

Thiab mus rau ClickHouse, peb tau ua Kitten Tsev. Yog tias peb mus ncaj qha los ntawm KittenHouse mus rau ClickHouse, nws yuav tsis tiv. Txawm tias tsis muaj kev thov, nws ntxiv los ntawm HTTP kev sib txuas ntawm ntau lub tshuab. Rau lub tswv yim ua haujlwm, ntawm lub server nrog ClickHouse Local reverse proxy raug tsa, uas yog sau nyob rau hauv xws li ib txoj kev uas nws muaj peev xwm tiv taus qhov yuav tsum tau ntim ntawm kev sib txuas. Nws tseem tuaj yeem ua cov ntaub ntawv tsis nyob hauv nws tus kheej kuj muaj kev ntseeg siab.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Qee lub sij hawm peb tsis xav siv lub tswv yim RPC hauv cov kev daws teeb meem tsis zoo, piv txwv li, hauv nginx. Yog li ntawd, KittenHouse muaj peev xwm tau txais cov cav ntawm UDP.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Yog tias tus neeg xa khoom thiab tus neeg tau txais cov ntawv teev lus ua haujlwm ntawm tib lub tshuab, qhov tshwm sim ntawm kev poob ib pob ntawv UDP hauv tus tswv tsev hauv zos yog tsawg heev. Raws li kev cuam tshuam ntawm qhov xav tau los siv RPC hauv kev daws teeb meem thib peb thiab kev ntseeg siab, peb tsuas yog siv UDP xa. Peb yuav rov qab mus rau qhov txheej txheem no tom qab.

Saib xyuas

Peb muaj ob hom cav: cov uas sau los ntawm cov thawj coj ntawm lawv cov servers thiab cov uas sau los ntawm developers los ntawm code. Lawv sib raug rau ob hom kev ntsuas: system thiab cov khoom.

Kev ntsuas qhov system

Nws ua haujlwm ntawm tag nrho peb cov servers Cov ntaub ntawv, uas sau cov txheeb cais thiab xa lawv mus rau Graphite Carbon. Yog li ntawd, ClickHouse yog siv los ua lub kaw lus cia, thiab tsis Whisper, piv txwv li. Yog tias tsim nyog, koj tuaj yeem nyeem ncaj qha los ntawm ClickHouse, lossis siv ua grafana rau metrics, graphs thiab reports. Raws li cov tsim tawm, peb muaj txaus nkag mus rau Netdata thiab Grafana.

Cov khoom ntsuas

Kom yooj yim, peb tau sau ntau yam. Piv txwv li, muaj ib txheej ntawm cov haujlwm zoo tib yam uas tso cai rau koj los sau Counts, UniqueCounts qhov tseem ceeb rau hauv kev txheeb cais, uas raug xa mus rau lwm qhov.

statlogsCountEvent   ( β€˜stat_name’,            $key1, $key2, …)
statlogsUniqueCount ( β€˜stat_name’, $uid,    $key1, $key2, …)
statlogsValuetEvent  ( β€˜stat_name’, $value, $key1, $key2, …)

$stats = statlogsStatData($params)

Tom qab ntawd, peb tuaj yeem siv kev txheeb xyuas thiab pab pawg lim dej thiab ua txhua yam peb xav tau los ntawm kev txheeb cais - tsim cov duab, teeb tsa Watchdogs.

Peb sau heev ntau metrics tus naj npawb ntawm cov xwm txheej yog los ntawm 600 billion rau 1 trillion ib hnub. Txawm li cas los xij, peb xav khaws lawv tsawg kawg yog ob peb xyooskom nkag siab txog qhov sib txawv hauv metrics. Muab tag nrho ua ke yog ib qho teeb meem loj uas peb tseem tsis tau daws. Kuv yuav qhia koj tias nws tau ua haujlwm li cas rau ob peb xyoos dhau los.

Peb muaj cov haujlwm uas sau cov ntsuas no rau hauv zos memcachekom txo tau tus lej nkag. Ib zaug nyob rau hauv ib lub sij hawm luv luv hauv zos launched stats-daemon sau tag nrho cov ntaub ntawv. Tom ntej no, tus dab sib txuas cov metrics rau hauv ob txheej ntawm servers cov ntaub ntawv khaws tseg, uas aggregates txheeb cais los ntawm ib pawg ntawm peb cov tshuab kom cov txheej tom qab lawv tsis tuag.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Yog tias tsim nyog, peb tuaj yeem sau ncaj qha mus rau cov neeg sau ntawv.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Tab sis sau los ntawm cov lej ncaj qha mus rau cov neeg sau khoom, hla stas-daemom, yog ib qho kev daws teeb meem tsis zoo vim tias nws ua rau cov khoom thauj ntau ntxiv. Qhov kev daws teeb meem tsuas yog yog vim qee yam peb tsis tuaj yeem tsa cov memcache stats-daemon ntawm lub tshuab, lossis nws poob thiab peb mus ncaj qha.

Tom qab ntawd, cov ntaub ntawv sau npe sib koom ua ke rau hauv meowDB - qhov no yog peb cov ntaub ntawv, uas tuaj yeem khaws cov ntsuas ntsuas.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Tom qab ntawd peb tuaj yeem ua binary "ze-SQL" xaiv los ntawm cov cai.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Sim

Thaum lub caij ntuj sov xyoo 2018, peb muaj ib qho kev sib koom ua ke hauv hackathon, thiab lub tswv yim tau los sim hloov qhov liab ntawm daim duab kos nrog qee yam uas tuaj yeem khaws cov ntsuas hauv ClickHouse. Peb muaj cov ntawv teev npe ntawm ClickHouse - vim li cas ho tsis sim nws?

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Peb muaj ib lub tswv yim uas sau cov cav los ntawm KittenHouse.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Peb txiav txim siab ntxiv lwm "* Tsev" rau daim duab, uas yuav tau txais raws nraim cov metrics hauv hom raws li peb cov cai sau lawv ntawm UDP. Tom qab ntawd * Lub Tsev no hloov lawv mus rau hauv cov ntawv ntxig, zoo li cov cav, uas KittenHouse nkag siab. Nws tuaj yeem xa cov cav no zoo kawg nkaus rau ClickHouse, uas yuav tsum tau nyeem lawv.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Lub tswv yim nrog memcache, stats-daemon thiab cov ntaub ntawv khaws cia yog hloov nrog qhov no.

FAQ ntawm architecture thiab kev ua haujlwm ntawm VKontakte

Lub tswv yim nrog memcache, stats-daemon thiab cov ntaub ntawv khaws cia yog hloov nrog qhov no.

  • Muaj kev xa tawm los ntawm code ntawm no, uas tau sau hauv zos hauv StatsHouse.
  • StatsHouse sau UDP metrics, twb tau hloov dua siab tshiab rau hauv SQL inserts, mus rau KittenHouse hauv batch.
  • KittenHouse xa lawv mus rau ClickHouse.
  • Yog tias peb xav nyeem lawv, ces peb nyeem lawv dhau ntawm StatsHouse - ncaj qha los ntawm ClickHouse siv SQL li niaj zaus.

Puas yog tseem kev sim, tab sis peb nyiam li cas nws hloov tawm. Yog tias peb kho cov teeb meem nrog lub tswv yim, tej zaum peb yuav hloov mus rau nws tag nrho. Tus kheej, kuv vam tias.

Lub tswv yim tsis txuag hlau. Tsawg dua cov servers xav tau, cov stats-daemons hauv zos thiab cov neeg sau cov ntaub ntawv tsis xav tau, tab sis ClickHouse xav tau lub server loj dua li cov hauv cov txheej txheem tam sim no. Tsawg dua servers xav tau, tab sis lawv yuav tsum tau kim dua thiab muaj zog dua.

Muab tso rau

Ua ntej, cia peb saib PHP xa tawm. Peb tab tom txhim kho hauv git: siv GitLab ΠΈ TeamCity rau kev xa tawm. Kev loj hlob ceg yog merged rau hauv tus tswv ceg, los ntawm tus tswv rau kev sim lawv yog merged rau hauv staging, thiab los ntawm staging mus rau hauv ntau lawm.

Ua ntej kev xa tawm, cov ceg tsim khoom tam sim no thiab yav dhau los raug coj mus, thiab cov ntaub ntawv sib txawv tau txiav txim siab hauv lawv - kev hloov pauv: tsim, tshem tawm, hloov pauv. Qhov kev hloov pauv no tau sau tseg hauv binlog ntawm lub cav tshwj xeeb copyfast, uas tuaj yeem hloov pauv sai sai rau peb cov neeg rau zaub mov tag nrho. Dab tsi yog siv ntawm no tsis yog luam tawm ncaj qha, tab sis lus xaiv replication, thaum ib tus neeg rau zaub mov xa cov kev hloov pauv mus rau nws cov neeg nyob ze tshaj plaws, cov neeg rau lawv cov neeg nyob ze, thiab lwm yam. Qhov no tso cai rau koj hloov kho cov cai hauv kaum thiab units ntawm vib nas this hla tag nrho cov nkoj. Thaum qhov kev hloov pauv mus txog qhov hloov pauv hauv zos, nws siv cov thaj ua rau thaj rau nws local file system. Rollback kuj tau ua raws li tib lub tswv yim.

Peb kuj siv kPHP ntau heev thiab nws kuj muaj nws txoj kev loj hlob ntawm git raws li daim duab saum toj no. Txij li qhov no HTTP server binary, ces peb tsis tuaj yeem tsim qhov txawv - qhov kev tso tawm binary hnyav ntau pua MB. Yog li ntawd, muaj lwm txoj kev ntawm no - lub version yog sau rau binlog copyfast. Nrog rau txhua qhov tsim nws nce, thiab thaum lub sij hawm rollback nws kuj nce. Version replicated rau servers. Hauv zos copyfasts pom tias tus tshiab version tau nkag mus rau hauv binlog, thiab los ntawm tib txoj kev hais lus tsis txaus ntseeg lawv coj qhov tseeb version ntawm binary rau lawv tus kheej, tsis muaj kev nkees peb tus tswv server, tab sis ua tib zoo nthuav tawm cov khoom hla hauv lub network. Dab tsi ua raws li zoo nkauj relaunch rau qhov tshiab version.

Rau peb lub cav, uas tseem tseem ceeb binaries, cov tswv yim zoo sib xws:

  • git tswv ceg;
  • binary hauv .deb;
  • lub version yog sau rau binlog copyfast;
  • replicated rau servers;
  • tus neeg rau zaub mov rub tawm ib qho tshiab .dep;
  • dpkg ua;
  • graceful relaunch rau tshiab version.

Qhov txawv yog tias peb binary tau ntim rau hauv archives .deb, thiab thaum tso tawm lawv dpkg ua muab tso rau hauv qhov system. Vim li cas kPHP raug xa mus ua binary, thiab cov cav siv tau ua raws li dpkg? Nws tshwm sim li ntawd. Nws ua haujlwm - tsis txhob kov nws.

Cov kev sib txuas tseem ceeb:

Alexey Akulovich yog ib tug ntawm cov uas, raws li ib feem ntawm lub Program Committee, pab PHP Russia nyob rau lub Tsib Hlis 17th yuav dhau los ua qhov kev tshwm sim loj tshaj plaws rau PHP developers nyob rau lub sijhawm tsis ntev los no. Saib dab tsi lub PC txias peb muaj, dab tsi hais lus (ob tug ntawm lawv tab tom tsim PHP core!) - zoo li ib yam dab tsi koj tsis tuaj yeem nco yog tias koj sau PHP.

Tau qhov twg los: www.hab.com

Ntxiv ib saib