Yog li koj sau metrics. Raws li peb. Peb kuj sau metrics. Tau kawg, tsim nyog rau kev lag luam. Hnub no peb yuav tham txog thawj qhov txuas ntawm peb qhov kev soj ntsuam xyuas - statsd-compatible aggregation server
Los ntawm peb cov ntawv dhau los (
Kev thov 1. Github, tus tsim tawm ntawm qhov project, tau tso tseg kev txhawb nqa: luam tawm thaj ua rau thaj thiab kho, lees txais peb li thiab (tsis yog peb li) PR. Hauv ob peb lub hlis dhau los (qhov chaw txij Lub Ob Hlis-Lub Peb Hlis 2018), kev ua haujlwm tau rov pib dua, tab sis ua ntej muaj yuav luag 2 xyoos ntawm kev ua tiav tag nrho. Tsis tas li ntawd, qhov project tab tom tsim
Kev thov 2. Qhov tseeb ntawm kev suav. Brubeck sau tag nrho ntawm 65536 qhov tseem ceeb rau kev sib sau ua ke. Hauv peb cov ntaub ntawv, rau qee qhov kev ntsuas, thaum lub sijhawm sib sau ua ke (30 vib nas this), ntau qhov tseem ceeb tuaj yeem tuaj txog (1 ntawm lub ncov). Raws li qhov ua piv txwv no, qhov siab tshaj plaws thiab qhov tsawg kawg nkaus tshwm sim tsis muaj txiaj ntsig. Piv txwv li, zoo li no:
Raws li nws yog
Yuav tsum tau ua li cas
Vim tib yam, cov nyiaj feem ntau suav tsis raug. Ntxiv ntawm no cov kab laum nrog 32-ntsis ntab ntws, uas feem ntau xa cov neeg rau zaub mov mus rau segfault thaum tau txais ib qho kev ntsuas zoo li tsis muaj tseeb, thiab txhua yam ua tau zoo. Tus kab mob, los ntawm txoj kev, tsis tau kho.
Thiab thaum kawg Thov X. Thaum lub sijhawm sau ntawv, peb npaj tau nthuav tawm rau tag nrho 14 ntau lossis tsawg dua kev ua haujlwm statsd uas peb tuaj yeem nrhiav tau. Cia peb xav txog tias qee qhov kev tsim kho vaj tsev ib leeg tau loj hlob heev uas lees txais 4 lab MPS tsis txaus lawm. Los yog txawm tias nws tseem tsis tau loj hlob, tab sis cov kev ntsuas tseem ceeb heev rau koj tias txawm tias luv luv, 2-3 feeb dips hauv cov kab kos tuaj yeem dhau los ua qhov tseem ceeb thiab ua rau muaj kev ntxhov siab tsis txaus ntseeg ntawm cov thawj coj. Txij li thaum kho kev nyuaj siab yog ib txoj hauj lwm ua tsaug, kev daws teeb meem yog xav tau.
Ua ntej, ua txhaum kev zam txim, kom qhov teeb meem tam sim ntawd ntawm lub server tsis ua rau muaj kev puas siab puas ntsws zombie apocalypse hauv chaw ua haujlwm. Qhov thib ob, kev ntsuas kom muaj peev xwm lees txais ntau dua 4 lab MPS, yam tsis tau khawb tob rau hauv Linux network pawg thiab maj mam loj hlob "hauv dav" rau qhov loj me.
Txij li thaum peb muaj chaw rau scaling, peb txiav txim siab los pib nrog kev zam txim. "Txog! Ua txhaum cai! Nws yooj yim, peb tuaj yeem ua tau, "peb xav thiab pib 2 servers, tsa ib daim qauv ntawm brubeck ntawm txhua tus. Txhawm rau ua qhov no, peb yuav tsum luam cov tsheb khiav nrog kev ntsuas rau ob lub servers thiab tseem sau rau qhov no
Yog tias koj xav me ntsis txog qhov teeb meem thiab tib lub sijhawm khawb daus nrog duav, ces cov tswv yim pom tseeb hauv qab no tuaj yeem xav txog: koj xav tau statsd uas tuaj yeem ua haujlwm hauv hom faib. Ntawd yog, ib qho uas siv synchronization ntawm nodes hauv lub sijhawm thiab kev ntsuas. "Tau kawg, qhov kev daws teeb meem no tej zaum twb muaj lawm," peb hais thiab mus rau Googleβ¦. Thiab lawv nrhiav tsis muaj dab tsi. Tom qab mus dhau cov ntaub ntawv rau txawv statsd (
Thiab tom qab ntawd peb nco qab txog "cov khoom ua si" statsd - bioyino, uas tau sau ntawm Just for Fun hackathon (lub npe ntawm qhov project tau tsim los ntawm tsab ntawv ua ntej pib hackathon) thiab pom tau tias peb xav tau ceev ceev peb tus kheej statsd. Rau dab tsi?
- vim tias muaj tsawg dhau statsd clones hauv ntiaj teb,
- vim tias nws muaj peev xwm muab qhov xav tau lossis ze rau qhov xav tau kev ua txhaum cai thiab scalability (suav nrog synchronizing aggregated metrics ntawm servers thiab daws qhov teeb meem ntawm kev xa tsis sib haum),
- vim nws muaj peev xwm xam cov metrics kom raug ntau dua li brubeck,
- vim tias koj tuaj yeem sau cov ntaub ntawv ntxaws ntxaws ntawm koj tus kheej, uas brubeck xyaum tsis tau muab rau peb,
- vim kuv muaj caij nyoog los program kuv tus kheej hyperperformance faib scale lab daim ntawv thov, uas yuav tsis tag rov qab cov architecture ntawm lwm yam zoo sib xws hyperfor ... zoo, yog nws.
Yuav sau dab tsi? Tau kawg, hauv Rust. Vim li cas?
- vim twb muaj ib txoj kev daws teeb meem,
- vim hais tias tus sau ntawm tsab xov xwm twb paub Rust nyob rau hauv lub sij hawm ntawd thiab tau mob siab rau sau ib yam dab tsi nyob rau hauv nws rau ntau lawm nrog lub sij hawm los muab tso rau hauv qhib-qhov chaw,
- vim hais tias cov lus nrog GC tsis haum rau peb vim qhov xwm ntawm cov tsheb tau txais (yuav luag ntawm lub sijhawm tiag tiag) thiab GC nres yog qhov ua tsis tau,
- vim koj xav tau kev ua tau zoo tshaj plaws piv rau C
- vim hais tias Rust muab peb nrog kev ntshai tsis sib haum xeeb, thiab yog tias peb pib sau nws hauv C / C ++, peb yuav tau raked nyob rau hauv ntau qhov tsis zoo, tsis muaj dej ntws, haiv neeg thiab lwm yam lus txaus ntshai tshaj li brubeck.
Kuj tseem muaj kev sib cav tawm tsam Rust. Lub tuam txhab tsis muaj kev paub txog kev tsim cov haujlwm hauv Rust, thiab tam sim no peb kuj tsis npaj siv nws hauv qhov project loj. Yog li ntawd, muaj kev ntshai heev uas tsis muaj dab tsi yuav ua tau, tab sis peb txiav txim siab los siv sijhawm thiab sim ua.
Lub sij hawm dhau mus...
Thaum kawg, tom qab ntau qhov kev sim ua tsis tiav, thawj zaug ua haujlwm tau npaj tiav. Dab tsi tshwm sim? Qhov no yog qhov tshwm sim.
Txhua lub node tau txais nws tus kheej cov txheej txheem ntsuas thiab sau lawv, thiab tsis suav cov ntsuas ntsuas rau cov hom uas lawv cov txheej txheem tag nrho yog xav tau rau kev sib sau zaum kawg. Cov nodes tau txuas rau ib leeg los ntawm qee yam kev faib xauv raws tu qauv, uas tso cai rau koj xaiv ntawm lawv ib leeg (ntawm no peb quaj) uas tsim nyog xa cov metrics rau Great One. Qhov teeb meem no tam sim no tau daws los ntawm
UDP pob ntawv nrog kev ntsuas tsis sib npaug ntawm cov ntawm cov khoom siv hauv network los ntawm Round Robin yooj yim. Tau kawg, lub network kho vajtse tsis txheeb xyuas cov ntsiab lus ntawm cov pob ntawv thiab yog li tuaj yeem rub ntau dua 4M pob ntawv ib ob, tsis hais txog kev ntsuas uas nws tsis paub dab tsi hlo li. Yog tias peb xav txog tias cov kev ntsuas tsis tuaj ib zaug hauv txhua pob ntawv, ces peb tsis pom muaj teeb meem kev ua haujlwm hauv qhov chaw no. Yog hais tias ib tug neeg rau zaub mov poob, lub network ntaus ntawv sai sai (hauv 1-2 vib nas this) kuaj pom qhov tseeb no thiab tshem tawm cov neeg rau zaub mov poob ntawm kev sib hloov. Raws li qhov tshwm sim ntawm qhov no, passive (piv txwv li, tsis yog tus thawj coj) cov nodes tuaj yeem qhib thiab tawm siv tau yam tsis muaj kev ceeb toom ntawm cov kab kos. Qhov siab tshaj plaws peb poob yog ib feem ntawm cov metrics uas tuaj nyob rau hauv thib ob kawg. Tam sim ntawd poob / kaw / hloov ntawm tus thawj coj tseem yuav tsim qhov tsis txaus ntseeg me me (30 lub sijhawm thib ob tseem tsis sib xws), tab sis yog tias muaj kev sib txuas lus ntawm cov nodes, cov teeb meem no tuaj yeem txo qis, piv txwv li, xa tawm cov pob ntawv synchronization. .
Ib me ntsis txog cov qauv sab hauv. Daim ntawv thov yog, ntawm chav kawm, multithreaded, tab sis threading architecture txawv ntawm qhov uas siv nyob rau hauv brubeck. Cov xov hauv brubeck yog tib yam - txhua tus ntawm lawv yog lub luag haujlwm rau kev sau cov ntaub ntawv thiab kev sib sau ua ke. Hauv bioyino, cov neeg ua haujlwm tau muab faib ua ob pawg: cov neeg ua haujlwm rau lub network thiab cov neeg ua haujlwm sib sau ua ke. Qhov kev faib tawm no tso cai rau koj los tswj cov ntawv thov yooj yim dua nyob ntawm seb hom kev ntsuas: qhov twg yuav tsum muaj kev sib sau ua ke, koj tuaj yeem ntxiv cov aggregators, qhov twg muaj ntau lub network khiav, koj tuaj yeem ntxiv cov xov tooj ntawm tes. Tam sim no, ntawm peb cov servers peb ua haujlwm hauv 8 network thiab 4 kev sib sau ua ke.
Qhov suav (lub luag haujlwm rau kev sib sau) ib feem yog qhov tho txawv heev. Buffers uas tau sau los ntawm lub network ntws tau muab faib ua cov suav suav, qhov uas lawv tau txheeb xyuas thiab sib sau ua ke. Thaum thov, metrics raug muab xa mus rau lwm cov nodes. Tag nrho cov no, suav nrog xa cov ntaub ntawv ntawm cov nodes thiab ua haujlwm nrog Consul, tau ua asynchronously, khiav ntawm lub moj khaum
Muaj ntau yam teeb meem thaum lub sij hawm kev loj hlob yog tshwm sim los ntawm lub network ib feem ntawm lub luag hauj lwm rau tau txais metrics. Lub hom phiaj tseem ceeb ntawm kev sib cais network ntws mus rau hauv cov chaw sib cais yog lub siab xav txo lub sijhawm uas cov dej ntws siv tsis nyeem cov ntaub ntawv los ntawm lub qhov (socket). Cov kev xaiv siv asynchronous UDP thiab ib txwm recvmsg sai sai ploj mus: thawj zaug siv ntau qhov chaw siv CPU rau kev ua haujlwm, qhov thib ob xav tau ntau lub ntsiab lus hloov pauv. Yog li tam sim no nws yog siv
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
Nyob rau hauv lub neej ntawd nqis, qhov tsis loj yog teem kom loj heev. Yog tias koj dheev txiav txim siab sim tus neeg rau zaub mov koj tus kheej, koj yuav ntsib qhov tseeb tias tom qab xa cov lej me me, lawv yuav tsis tuaj txog hauv Graphite, tshuav nyob rau hauv lub network kwj tsis. Txhawm rau ua haujlwm nrog tus lej me me, koj yuav tsum teeb tsa bufsize thiab ua haujlwm-queue-loj rau cov nqi me me hauv qhov teeb tsa.
Thaum kawg, qee cov kab kos rau daim duab lovers.
Kev txheeb cais ntawm tus lej ntawm cov kev ntsuas tuaj rau txhua tus neeg rau zaub mov: ntau dua 2 lab MPS.
Disabling ib qho ntawm cov nodes thiab redistributing cov metrics tuaj.
Kev txheeb cais ntawm kev ntsuas tawm: tsuas yog ib qho ntawm ib txwm xa - tus thawj coj tua.
Kev txheeb cais ntawm kev ua haujlwm ntawm txhua qhov node, suav nrog kev ua yuam kev hauv ntau qhov system modules.
Kev nthuav dav ntawm cov metrics tuaj (cov npe metric tau muab zais).
Peb npaj yuav ua li cas nrog tag nrho cov no tom ntej? Tau kawg, sau code, damn...! Qhov project yog thawj zaug npaj los qhib-qhov chaw thiab yuav nyob twj ywm li ntawd thoob plaws hauv nws lub neej. Peb cov phiaj xwm tam sim no suav nrog kev hloov mus rau peb tus kheej version ntawm Raft, hloov cov txheej txheem ntawm cov phooj ywg mus rau qhov nqa tau yooj yim dua, qhia ntxiv cov txheeb cais sab hauv, hom kev ntsuas tshiab, kho kab laum thiab lwm yam kev txhim kho.
Tau kawg, txhua leej txhua tus yog txais tos los pab rau txoj kev loj hlob ntawm qhov project: tsim PR, Teeb meem, yog tias ua tau, peb yuav teb, txhim kho, thiab lwm yam.
Nrog hais tias, qhov ntawd yog txhua tus neeg, yuav peb cov ntxhw!
Tau qhov twg los: www.hab.com