Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Nyob zoo, kuv lub npe yog Evgeniy. Kuv ua haujlwm hauv Yandex.Market search infrastructure. Kuv xav qhia rau Habr zej zog txog cov chav ua noj sab hauv ntawm Lub Khw - thiab kuv muaj ntau yam qhia. Ua ntej tshaj plaws, yuav ua li cas Kev Tshawb Fawb Kev Lag Luam ua haujlwm, txheej txheem thiab architecture. Peb yuav ua li cas nrog cov xwm txheej kub ntxhov: yuav ua li cas yog tias ib lub server poob? Yuav ua li cas yog tias muaj 100 servers?

Koj tseem yuav kawm seb peb siv cov haujlwm tshiab li cas ntawm ib pawg ntawm servers ib zaug. Thiab yuav ua li cas peb sim cov kev pabcuam nyuaj ncaj qha hauv kev tsim khoom, tsis ua rau muaj kev cuam tshuam rau cov neeg siv khoom. Feem ntau, yuav ua li cas Kev Tshawb Fawb Kev Lag Luam ua haujlwm kom txhua tus muaj lub sijhawm zoo.

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Ib me ntsis txog peb: dab tsi teeb meem peb daws

Thaum koj nkag mus rau cov ntawv nyeem, tshawb xyuas cov khoom los ntawm qhov tsis muaj, lossis sib piv cov nqi hauv cov khw sib txawv, txhua qhov kev thov raug xa mus rau qhov kev pabcuam tshawb nrhiav. Tshawb nrhiav yog qhov kev pabcuam loj tshaj plaws hauv Kev Ua Lag Luam.

Peb ua tiav txhua qhov kev thov tshawb fawb: los ntawm qhov chaw market.yandex.ru, beru.ru, kev pabcuam Supercheck, Yandex.Advisor, daim ntawv thov mobile. Peb kuj suav nrog cov khoom muag hauv kev tshawb fawb ntawm yandex.ru.

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Los ntawm kev tshawb nrhiav kev pabcuam kuv txhais tsis tau tsuas yog kev tshawb nrhiav nws tus kheej xwb, tab sis kuj tseem muaj cov ntaub ntawv nrog txhua qhov muaj ntawm Kev Ua Lag Luam. Qhov ntsuas yog qhov no: ntau tshaj li ib lab kev thov tshawb nrhiav tau ua tiav ib hnub. Thiab txhua yam yuav tsum ua haujlwm sai, tsis muaj kev cuam tshuam thiab ib txwm tsim cov txiaj ntsig xav tau.

Dab tsi yog dab tsi: Market architecture

Kuv yuav piav qhia luv luv txog cov architecture tam sim no ntawm Kev Ua Lag Luam. Nws tuaj yeem piav qhia los ntawm daim duab hauv qab no:
Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm
Wb hais tias tus khub khw tuaj rau peb. Nws hais tias kuv xav muag ib qho khoom ua si: tus miv phem no nrog tus squeaker. Thiab lwm tus miv npau taws tsis muaj squeaker. Thiab tsuas yog miv. Tom qab ntawd lub khw yuav tsum tau npaj cov khoom lag luam uas lub khw tshawb nrhiav. Lub khw tsim ib qho tshwj xeeb xml nrog kev muab thiab sib txuas lus txoj hauv kev rau xml no los ntawm kev sib koom ua ke. Tus indexer ces ncua sij hawm rub tawm xml no, kuaj xyuas qhov tsis raug thiab khaws tag nrho cov ntaub ntawv rau hauv cov ntaub ntawv loj.

Muaj ntau yam xws li xmls cawm. Ib qho kev tshawb nrhiav index yog tsim los ntawm cov ntaub ntawv no. Qhov ntsuas tau muab khaws cia rau hauv hom ntawv sab hauv. Tom qab tsim qhov Performance index, qhov kev pab cuam Layout uploads mus nrhiav servers.

Raws li qhov tshwm sim, tus miv npau taws nrog tus squeaker tshwm nyob rau hauv cov ntaub ntawv, thiab tus miv qhov Performance index tshwm rau ntawm lub server.

Kuv yuav qhia koj li cas peb tshawb nrhiav miv hauv ntu txog kev tshawb nrhiav architecture.

Kev lag luam nrhiav architecture

Peb nyob hauv lub ntiaj teb ntawm microservices: txhua qhov kev thov tuaj ua.yandex.ru ua rau ntau subqueries, thiab kaum ob ntawm cov kev pabcuam tau koom nrog hauv lawv cov kev ua haujlwm. Daim duab qhia tsuas yog ob peb yam:

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm
Simplified thov txheej txheem txheej txheem

Txhua qhov kev pabcuam muaj qhov zoo tshaj plaws - nws tus kheej sib npaug nrog lub npe tshwj xeeb:

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Lub ntsuas hluav taws xob ua rau peb hloov pauv ntau dua hauv kev tswj cov kev pabcuam: koj tuaj yeem, piv txwv li, kaw cov servers, uas feem ntau yuav tsum tau hloov kho. Tus balancer pom tias tus neeg rau zaub mov tsis muaj thiab cia li redirects thov mus rau lwm lub servers los yog cov ntaub ntawv chaw. Thaum ntxiv lossis tshem tawm ib tus neeg rau zaub mov, lub thauj khoom yuav raug xa rov qab ntawm cov servers.

Lub npe tshwj xeeb ntawm tus balancer tsis nyob ntawm cov ntaub ntawv chaw. Thaum qhov kev pab cuam A thov rau B, ces los ntawm lub neej ntawd balancer B redirects qhov kev thov mus rau lub chaw tam sim no cov ntaub ntawv. Yog tias qhov kev pabcuam tsis muaj lossis tsis muaj nyob rau hauv cov ntaub ntawv tam sim no, ces qhov kev thov raug xa mus rau lwm lub chaw pabcuam.

Ib qho FQDN ib leeg rau txhua lub chaw cov ntaub ntawv tso cai rau kev pabcuam A kom paub meej los ntawm qhov chaw. Nws qhov kev thov rau kev pabcuam B yuav ua tiav txhua lub sijhawm. Qhov tshwj xeeb yog rooj plaub thaum qhov kev pabcuam nyob hauv txhua qhov chaw khaws ntaub ntawv.

Tab sis tsis yog txhua yam yog rosy nrog no balancer: peb muaj ib tug ntxiv intermediate tivthaiv. Lub balancer tej zaum yuav tsis ruaj khov, thiab qhov teeb meem no tau daws los ntawm cov servers rov ua dua. Kuj tseem muaj qhov ncua sij hawm ntxiv ntawm cov kev pabcuam A thiab B. Tab sis hauv kev xyaum nws tsawg dua 1 ms thiab rau cov kev pabcuam feem ntau qhov no tsis yog qhov tseem ceeb.

Kev Ua Haujlwm Tsis Txaus Siab: Nrhiav Kev Pabcuam Ntsuas thiab Kev Ua Haujlwm Zoo

Xav txog tias muaj kev sib tsoo: koj yuav tsum nrhiav tus miv nrog tus squeaker, tab sis lub server poob. Los yog 100 servers. Yuav tawm li cas? Puas yog peb yuav tawm ntawm tus neeg siv yam tsis muaj miv?

Qhov xwm txheej txaus ntshai, tab sis peb npaj txhij rau nws. Kuv mam li qhia rau koj nyob rau hauv kev txiav txim.

Kev tshawb nrhiav infrastructure yog nyob rau hauv ntau lub chaw cov ntaub ntawv:

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Thaum tsim qauv, peb suav nrog qhov muaj peev xwm kaw ib lub chaw khaws ntaub ntawv. Lub neej yog tag nrho ntawm surprises - piv txwv li, ib tug excavator yuav txiav ib tug underground cable (yog, uas tshwm sim). Lub peev xwm nyob rau hauv cov ntaub ntawv seem yuav tsum txaus los tiv thaiv lub siab tshaj plaws load.

Cia peb xav txog ib lub chaw khaws ntaub ntawv. Txhua qhov chaw cov ntaub ntawv muaj tib lub tswv yim ua haujlwm sib npaug:

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm
Ib tug balancer yog tsawg kawg peb lub cev servers. Qhov redundancy no yog tsim rau kev ntseeg tau. Balancers khiav ntawm HAProx.

Peb xaiv HAProx vim nws qhov kev ua tau zoo, cov kev xav tau tsawg thiab kev ua haujlwm dav. Peb tshawb nrhiav software khiav hauv txhua lub server.

Qhov tshwm sim ntawm ib tus neeg rau zaub mov tsis ua haujlwm yog tsawg. Tab sis yog tias koj muaj ntau lub servers, qhov tshwm sim uas tsawg kawg ib qho yuav nce mus.

Qhov no yog qhov tshwm sim hauv kev muaj tiag: servers poob. Yog li ntawd, nws yog ib qho tsim nyog los saib xyuas cov xwm txheej ntawm txhua tus servers. Yog tias tus neeg rau zaub mov tsis teb, nws yuav raug txiav tawm ntawm kev khiav tsheb. Rau lub hom phiaj no, HAProxy muaj ib qho kev kuaj mob ua ke. Nws mus rau tag nrho cov servers ib zaug ib zaug nrog HTTP thov "/ ping".

Lwm qhov tshwj xeeb ntawm HAProxy: tus neeg saib xyuas-check tso cai rau koj thauj txhua tus servers sib npaug. Ua li no, HAProxy txuas mus rau tag nrho cov servers, thiab lawv rov qab lawv qhov hnyav nyob ntawm qhov kev thauj khoom tam sim no los ntawm 1 mus rau 100. Qhov hnyav yog xam raws li tus naj npawb ntawm kev thov hauv kab rau kev ua haujlwm thiab kev thauj khoom ntawm lub processor.

Tam sim no txog nrhiav tus miv. Cov txiaj ntsig tshawb nrhiav hauv kev thov xws li: /search?text=angry+cat. Rau kev tshawb nrhiav kom ceev, tag nrho cov miv ntsuas yuav tsum haum rau RAM. Txawm tias nyeem los ntawm SSD tsis nrawm txaus.

Ib zaug ib zaug, qhov kev thov database me me, thiab RAM ntawm ib tus neeg rau zaub mov txaus rau nws. Raws li lub hauv paus kev loj hlob, txhua yam tsis haum rau hauv RAM no, thiab cov ntaub ntawv tau muab faib ua ob ntu: shard 1 thiab shard 2.

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm
Tab sis qhov no ib txwm tshwm sim: txhua qhov kev daws teeb meem, txawm tias qhov zoo, ua rau muaj lwm yam teeb meem.

Lub balancer tseem mus rau tej server. Tab sis ntawm lub tshuab qhov kev thov tuaj, tsuas muaj ib nrab ntawm qhov ntsuas. Tus so yog nyob rau lwm cov servers. Yog li ntawd, tus neeg rau zaub mov yuav tsum tau mus rau qee lub tshuab nyob sib ze. Tom qab tau txais cov ntaub ntawv los ntawm ob lub servers, cov txiaj ntsig tau muab ua ke thiab rov ua dua tshiab.

Txij li thaum tus balancer faib cov lus thov sib npaug, txhua tus servers tau koom nrog kev rov ua dua tshiab, thiab tsis yog xa cov ntaub ntawv xwb.

Qhov teeb meem tshwm sim yog tias tsis muaj server nyob sib ze. Qhov kev daws teeb meem yog los qhia ntau lub servers nrog qhov tseem ceeb sib txawv raws li "neeg nyob sib ze" server. Ua ntej, qhov kev thov raug xa mus rau cov servers hauv cov khib nyiab tam sim no. Yog tias tsis muaj lus teb, qhov kev thov raug xa mus rau tag nrho cov servers hauv cov ntaub ntawv no. Thiab thaum kawg, qhov kev thov mus rau lwm lub chaw khaws ntaub ntawv.
Raws li tus naj npawb ntawm cov lus thov loj tuaj, cov ntaub ntawv tau muab faib ua plaub ntu. Tab sis qhov no tsis yog qhov txwv.

Tam sim no, ib qho kev teeb tsa ntawm yim shards yog siv. Tsis tas li ntawd, kom txuag tau ntau lub cim xeeb, qhov ntsuas tau muab faib ua ntu tshawb nrhiav (uas yog siv rau kev tshawb nrhiav) thiab ntu ntu (uas tsis koom nrog hauv kev tshawb nrhiav).

Ib lub server muaj cov ntaub ntawv tsuas yog ib qho shard xwb. Yog li ntawd, txhawm rau tshawb xyuas qhov ntsuas tag nrho, koj yuav tsum tau tshawb fawb ntawm yim servers uas muaj cov sib txawv shards.

Cov servers tau muab faib ua pawg. Txhua pawg muaj yim lub tshuab tshawb nrhiav thiab ib tus neeg rau zaub mov snippet.

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm
Lub snippet server khiav qhov tseem ceeb-tus nqi database nrog cov ntaub ntawv zoo li qub. Lawv yuav tsum tau muab cov ntaub ntawv, piv txwv li, cov lus piav qhia ntawm tus miv nrog tus squeaker. Cov ntaub ntawv tshwj xeeb yog kis mus rau lwm tus neeg rau zaub mov kom tsis txhob thauj khoom lub cim xeeb ntawm kev tshawb nrhiav servers.

Txij li cov ntaub ntawv ID yog qhov tshwj xeeb hauv ib qho kev ntsuas, qhov xwm txheej tuaj yeem tshwm sim uas tsis muaj cov ntaub ntawv hauv cov snippets. Zoo, lossis tias rau ib tus ID yuav muaj cov ntsiab lus sib txawv. Yog li ntawd, txhawm rau txhawm rau kev tshawb nrhiav ua haujlwm thiab cov txiaj ntsig tau rov qab los, yuav tsum muaj kev sib luag ntawm tag nrho pawg. Kuv yuav qhia rau koj hauv qab no seb peb saib xyuas qhov sib xws.

Kev tshawb nrhiav nws tus kheej yog tsim raws li hauv qab no: kev thov tshawb fawb tuaj yeem tuaj rau ib qho ntawm yim servers. Cia peb hais tias nws tuaj rau server 1. Lub server no ua txhua qhov kev sib cav thiab nkag siab txog dab tsi thiab yuav nrhiav li cas. Nyob ntawm qhov kev thov tuaj, tus neeg rau zaub mov tuaj yeem thov ntxiv rau cov kev pabcuam sab nraud rau cov ntaub ntawv tsim nyog. Ib qhov kev thov tuaj yeem ua raws li kaum qhov kev thov rau cov kev pabcuam sab nraud.

Tom qab sau cov ntaub ntawv tsim nyog, kev tshawb nrhiav pib hauv qhov muab database. Ua li no, subqueries yog ua rau tag nrho yim lub servers hauv pawg.

Thaum tau txais cov lus teb, cov txiaj ntsig tau ua ke. Thaum kawg, ntau cov lus nug ntxiv rau cov snippet server yuav xav tau los tsim cov txiaj ntsig.

Nrhiav cov lus nug hauv pawg zoo li: /shard1?text=angry+cat. Tsis tas li ntawd, subqueries ntawm daim ntawv yog tas li ua los ntawm tag nrho cov servers hauv pawg ib zaug ib zaug: / xwm txheej.

Thov / xwm txheej kuaj pom qhov xwm txheej uas lub server tsis muaj.

Nws kuj tseem tswj tau tias qhov kev tshawb nrhiav cav version thiab qhov ntsuas ntsuas yog tib yam ntawm txhua tus servers, txwv tsis pub yuav muaj cov ntaub ntawv tsis sib xws hauv pawg.

Txawm tias muaj tseeb hais tias ib tug snippet neeg rau zaub mov txheej txheem thov los ntawm yim tshawb fawb xyaw, nws processor yog heev lightly loaded. Yog li ntawd, tam sim no peb tab tom hloov cov ntaub ntawv snippet mus rau lwm qhov kev pabcuam.

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Txhawm rau hloov cov ntaub ntawv, peb tau qhia cov yuam sij thoob ntiaj teb rau cov ntaub ntawv. Tam sim no nws tsis yooj yim sua rau qhov xwm txheej uas cov ntsiab lus los ntawm lwm daim ntawv xa rov qab siv ib tus yuam sij.

Tab sis txoj kev hloov mus rau lwm qhov architecture tseem tsis tiav. Tam sim no peb xav kom tshem tawm cov snippet neeg rau zaub mov. Thiab tom qab ntawd txav deb ntawm cov qauv pawg tag nrho. Qhov no yuav tso cai rau peb mus txuas ntxiv ntsuas tau yooj yim. Ib qho ntxiv ntxiv yog qhov tseem ceeb ntawm kev txuag hlau.

Thiab tam sim no rau cov dab neeg txaus ntshai nrog kev zoo siab xaus. Cia peb xav txog ntau qhov xwm txheej ntawm server tsis muaj.

Tej yam txaus ntshai tshwm sim: ib lub server tsis muaj

Cia peb hais tias ib lub server tsis muaj. Tom qab ntawd cov servers tseem nyob hauv pawg tuaj yeem teb txuas ntxiv, tab sis cov txiaj ntsig tshawb nrhiav yuav tsis tiav.

Ntawm kev txheeb xyuas / xwm txheej Cov neeg nyob sib ze nkag siab tias ib qho tsis muaj. Yog li, txhawm rau tswj kom tiav, tag nrho cov servers hauv pawg ib qhov kev thov /ping lawv pib teb rau tus balancer uas lawv tseem tsis muaj. Nws hloov tawm tias tag nrho cov servers hauv pawg tau tuag (uas tsis muaj tseeb). Qhov no yog lub ntsiab drawback ntawm peb pawg tswv yim - yog vim li cas peb xav kom deb ntawm nws.

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Kev thov uas ua tsis tiav nrog qhov yuam kev yog resent los ntawm tus balancer ntawm lwm cov servers.
Lub balancer tseem txwv tsis pub xa cov neeg siv tsheb mus rau cov neeg siv khoom tuag, tab sis txuas ntxiv mus xyuas lawv cov xwm txheej.

Thaum lub server muaj, nws pib teb rau /ping. Thaum cov lus teb ib txwm rau pings los ntawm cov servers tuag pib tuaj txog, cov neeg sib npaug pib xa cov neeg siv tsheb mus rau ntawd. Kev ua haujlwm pawg tau rov qab los, hurray.

Tseem phem tshaj: ntau servers tsis muaj

Ib feem tseem ceeb ntawm cov servers hauv cov chaw khaws ntaub ntawv raug txiav. Yuav ua li cas, khiav qhov twg? Tus balancer rov los cawm. Txhua tus balancer tas li khaws cia hauv nco txog tus naj npawb ntawm cov servers nyob tam sim no. Nws niaj hnub xam qhov siab tshaj plaws ntawm cov tsheb khiav uas tam sim no cov ntaub ntawv chaw tuaj yeem ua tiav.

Thaum ntau cov servers hauv cov chaw khaws ntaub ntawv poob qis, tus ntsuas ntsuas pom tau tias qhov chaw khaws ntaub ntawv no tsis tuaj yeem ua txhua yam kev khiav tsheb.

Tom qab ntawd cov tsheb khiav dhau los pib randomly faib rau lwm lub chaw cov ntaub ntawv. Txhua yam ua haujlwm, txhua tus zoo siab.

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Yuav ua li cas peb ua: luam tawm kev tshaj tawm

Tam sim no cia peb tham txog yuav ua li cas peb tshaj tawm cov kev hloov pauv rau qhov kev pabcuam. Ntawm no peb tau coj txoj hauv kev ntawm cov txheej txheem yooj yim: dov tawm qhov kev tso tawm tshiab yuav luag tag nrho.
Thaum muaj qee qhov kev hloov pauv tau sau rau hauv qhov project, qhov kev tso tawm tshiab tau raug tsim thiab nws pib tsim.

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Tom qab ntawd cov kev pabcuam raug dov tawm mus rau kev sim, qhov twg qhov kev ruaj ntseg ntawm kev ua haujlwm raug kuaj xyuas.

Tib lub sijhawm, kev ntsuas kev ua haujlwm tsis siv neeg tau pib. Qhov no yog ua los ntawm kev pabcuam tshwj xeeb. Kuv yuav tsis tham txog nws tam sim no - nws cov lus piav qhia tsim nyog ntawm ib tsab xov xwm cais.

Yog tias kev tshaj tawm hauv kev sim ua tiav, kev tshaj tawm kev tshaj tawm hauv prestable tau pib pib. Prestable yog ib pawg tshwj xeeb uas cov neeg siv kev khiav tsheb ib txwm raug coj mus. Yog tias nws rov qab ua qhov yuam kev, tus balancer ua rau rov thov rau kev tsim khoom.

Nyob rau hauv prestable, lub sij hawm teb yog ntsuas thiab piv nrog rau yav dhau los tso tawm nyob rau hauv ntau lawm. Yog tias txhua yam zoo, ces ib tus neeg sib txuas: xyuas cov duab thiab cov txiaj ntsig ntawm kev ntsuas kev thauj khoom thiab tom qab ntawd pib dov tawm mus rau ntau lawm.

Txhua qhov zoo tshaj plaws mus rau tus neeg siv: A / B kuaj

Nws tsis yog ib txwm pom tseeb tias kev hloov pauv rau kev pabcuam yuav ua rau muaj txiaj ntsig tiag tiag. Txhawm rau ntsuas qhov muaj txiaj ntsig ntawm kev hloov pauv, tib neeg tuaj nrog kev sim A / B. Kuv mam li qhia koj me ntsis txog yuav ua li cas nws ua haujlwm hauv Yandex.Market search.

Nws tag nrho pib nrog ntxiv qhov tshiab CGI parameter uas ua rau muaj kev ua haujlwm tshiab. Cia peb parameter yog: market_new_functionality=1. Tom qab ntawd hauv txoj cai peb ua kom qhov kev ua haujlwm no yog tias tus chij nyob:

If (cgi.experiments.market_new_functionality) {
// enable new functionality
}

Kev ua haujlwm tshiab tau raug dov tawm mus rau kev tsim khoom.

Txhawm rau automate A / B xeem, muaj kev pabcuam tshwj xeeb uas muab cov ncauj lus kom ntxaws piav qhia ntawm no. Ib qho kev sim yog tsim hauv kev pabcuam. Cov tsheb sib faib tau teeb tsa, piv txwv li, 15%. Cov feem pua ​​​​tsis yog rau cov lus nug, tab sis rau cov neeg siv. Lub sijhawm ntawm qhov kev sim kuj tau qhia, piv txwv li, ib lub lis piam.

Ntau qhov kev sim tuaj yeem ua tiav ib txhij. Hauv cov chaw koj tuaj yeem qhia seb puas muaj kev sib tshuam nrog lwm yam kev sim ua tau.

Yog li ntawd, qhov kev pabcuam cia li ntxiv ib qho kev sib cav market_new_functionality=1 rau 15% ntawm cov neeg siv. Nws kuj cia li xam cov metrics xaiv. Tom qab qhov kev sim ua tiav, cov kws tshuaj ntsuam xyuas cov txiaj ntsig thiab kos cov lus xaus. Raws li qhov kev tshawb pom, kev txiav txim siab raug txiav tawm mus rau kev tsim khoom lossis kho kom zoo.

Kev ua lag luam deft tes: kev sim hauv kev tsim khoom

Nws feem ntau tshwm sim uas koj yuav tsum sim ua haujlwm ntawm kev ua haujlwm tshiab hauv kev tsim khoom, tab sis koj tsis paub meej tias nws yuav coj li cas hauv "kev sib ntaus sib tua" cov xwm txheej hauv qab hnyav.

Muaj kev daws teeb meem: chij hauv CGI tsis tuaj yeem siv tsis yog rau kev kuaj A / B nkaus xwb, tab sis kuj los ntsuas kev ua haujlwm tshiab.

Peb tau tsim ib lub cuab yeej uas tso cai rau koj los hloov kev teeb tsa tam sim ntawm ntau txhiab tus servers yam tsis muaj kev cuam tshuam rau kev txaus ntshai. Nws hu ua "Stop Tap". Thawj lub tswv yim yog kom muaj peev xwm lov tes taw sai sai yam tsis muaj kev teeb tsa. Tom qab ntawd lub cuab yeej nthuav dav thiab ua kom nyuaj dua.

Daim duab qhia kev pab cuam yog nthuav tawm hauv qab no:

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Chij qhov tseem ceeb tau teeb tsa ntawm API. Cov kev tswj xyuas khaws cov txiaj ntsig no hauv cov ntaub ntawv. Tag nrho cov servers mus rau lub database ib zaug txhua kaum vib nas this, tso tawm tus chij qhov tseem ceeb thiab siv cov txiaj ntsig no rau txhua qhov kev thov.

Hauv qhov Nres kais koj tuaj yeem teeb tsa ob hom txiaj ntsig:

1) Cov ntsiab lus nthuav dav. Thov thaum ib qho ntawm cov txiaj ntsig muaj tseeb. Piv txwv li:

{
	"condition":"IS_DC1",
	"value":"3",
}, 
{
	"condition": "CLUSTER==2 and IS_BERU", 
	"value": "4!" 
}

Tus nqi "3" yuav raug siv thaum qhov kev thov ua tiav hauv qhov chaw DC1. Thiab tus nqi yog "4" thaum qhov kev thov ua tiav ntawm pawg thib ob rau lub vev xaib beru.ru.

2) Unconditional nqi. Thov los ntawm lub neej ntawd yog tias tsis muaj qhov ua tau raws li. Piv txwv li:

tus nqi, nqi!

Yog tias tus nqi xaus nrog qhov exclamation point, nws tau muab qhov tseem ceeb dua.

Lub CGI parameter parser parses qhov URL. Tom qab ntawd siv cov txiaj ntsig los ntawm Nres Tap.

Cov txiaj ntsig nrog cov haujlwm tseem ceeb hauv qab no yog siv:

  1. Nrog nce qhov tseem ceeb los ntawm Stop Tap (exclamation mark).
  2. Tus nqi los ntawm kev thov.
  3. Default tus nqi los ntawm Stop kais.
  4. Default tus nqi hauv code.

Muaj ntau tus chij uas tau qhia nyob rau hauv cov txiaj ntsig kev cai - lawv txaus rau txhua qhov xwm txheej paub peb:

  • Data center.
  • Ib puag ncig: ntau lawm, kuaj, duab ntxoov ntxoo.
  • Qhov chaw: khw, beru.
  • Pawg naj npawb.

Nrog rau cov cuab yeej no, koj tuaj yeem ua kom muaj kev ua haujlwm tshiab ntawm ib pawg ntawm cov servers (piv txwv li, hauv ib lub chaw khaws ntaub ntawv nkaus xwb) thiab sim ua haujlwm ntawm qhov haujlwm no yam tsis muaj kev pheej hmoo rau tag nrho cov kev pabcuam. Txawm hais tias koj tau ua yuam kev loj nyob qhov twg, txhua yam pib poob thiab tag nrho cov ntaub ntawv chaw poob qis, cov neeg ua haujlwm sib npaug yuav hloov cov lus thov mus rau lwm qhov chaw cov ntaub ntawv. Cov neeg siv kawg yuav tsis pom dab tsi.

Yog tias koj pom tias muaj teeb meem, koj tuaj yeem rov qab tus chij tam sim ntawd rau nws tus nqi dhau los thiab cov kev hloov pauv yuav rov qab.

Qhov kev pabcuam no tseem muaj qhov tsis zoo: cov neeg tsim khoom nyiam nws heev thiab feem ntau sim thawb tag nrho cov kev hloov pauv mus rau Nruas Kais. Peb tab tom sim tawm tsam kev siv tsis raug.

Txoj Kev Nres Tap ua haujlwm tau zoo thaum koj twb muaj cov cai ruaj khov npaj tau muab dov tawm mus rau ntau lawm. Nyob rau tib lub sijhawm, koj tseem muaj kev tsis ntseeg, thiab koj xav tshawb xyuas cov cai hauv "kev sib ntaus sib tua".

Txawm li cas los xij, Stop Tap tsis haum rau kev sim thaum lub sijhawm txhim kho. Muaj ib pawg cais rau cov neeg tsim khoom hu ua "shadow cluster".

Kev sim zais cia: Duab ntxoov ntxoo pawg

Kev thov los ntawm ib qho ntawm cov pawg yog duplicated rau cov duab ntxoov ntxoo pawg. Tab sis tus balancer kiag li tsis quav ntsej cov lus teb los ntawm pawg no. Daim duab ntawm nws txoj haujlwm tau nthuav tawm hauv qab no.

Yuav ua li cas Yandex.Market tshawb nrhiav ua haujlwm thiab yuav ua li cas yog tias ib qho ntawm cov servers tsis ua haujlwm

Peb tau txais ib pawg xeem uas yog nyob rau hauv tiag tiag "sib ntaus sib tua". Cov neeg siv ib txwm khiav mus rau qhov ntawd. Cov khoom siv hauv ob pawg yog tib yam, yog li kev ua tau zoo thiab qhov tsis raug tuaj yeem muab piv.

Thiab txij li tus balancer tsis quav ntsej cov lus teb, cov neeg siv kawg yuav tsis pom cov lus teb los ntawm pawg duab ntxoov ntxoo. Yog li ntawd, nws tsis yog ntshai ua yuam kev.

tshawb pom

Yog li, peb ua li cas los tsim Kev Tshawb Fawb Kev Lag Luam?

Txhawm rau ua kom txhua yam mus tau zoo, peb cais cov haujlwm ua haujlwm sib cais. Ua li no peb tuaj yeem ntsuas cov khoom uas peb xav tau thiab ua kom cov khoom yooj yim dua. Nws yog ib qho yooj yim los muab cov khoom sib cais rau lwm pab pawg thiab qhia txog lub luag haujlwm rau kev ua haujlwm ntawm nws. Thiab tseem ceeb nyiaj txuag hauv hlau nrog rau txoj hauv kev no yog qhov pom tseeb ntxiv.

Cov duab ntxoov ntxoo kuj pab peb: peb tuaj yeem tsim cov kev pabcuam, sim lawv hauv cov txheej txheem thiab tsis cuam tshuam rau tus neeg siv.

Zoo, kev sim hauv kev tsim khoom, tau kawg. Xav tau hloov kev teeb tsa ntawm ntau txhiab tus servers? Ib qho yooj yim, siv qhov Nruas Kais. Txoj kev no koj tuaj yeem yob tawm cov kev daws teeb meem uas npaj txhij thiab yob rov qab mus rau qhov ruaj khov version yog tias muaj teeb meem tshwm sim.

Kuv vam tias kuv muaj peev xwm qhia tau tias peb yuav ua li cas rau Kev Ua Lag Luam sai thiab ruaj khov nrog lub hauv paus loj hlob ntawm kev muab. Yuav ua li cas peb daws cov teeb meem neeg rau zaub mov, daws nrog ntau qhov kev thov, txhim kho qhov hloov pauv ntawm cov kev pabcuam thiab ua qhov no yam tsis muaj kev cuam tshuam cov txheej txheem ua haujlwm.

Tau qhov twg los: www.hab.com

Ntxiv ib saib