Njengangaphakathi
Ngelinye ilanga ngavuka ngathola i-imeyili enganelisekile ngenxa yokubambezeleka isikhathi eside no-Alvin, esasihlele ukuyethula maduze nje. Ngokukhethekile, iklayenti lihlangabezane ne-99th percentile latency endaweni engu-50 ms, ngaphezu kwesabelomali sethu sokubambezeleka. Lokhu bekumangaza njengoba ngivivinya kakhulu insizakalo, ikakhulukazi ku-latency, okuyisikhalazo esijwayelekile.
Ngaphambi kokuthi ngifake u-Alvin ekuhlolweni, ngenze izivivinyo eziningi ngemibuzo engu-40k ngomzuzwana (QPS), konke okubonisa ukubambezeleka okungaphansi kuka-10ms. Bengizimisele ukusho ukuthi angihambisani nemiphumela yabo. Kodwa uma ngibheka enye incwadi, ngabona okuthile okusha: Ngangingazange ngihlole izimo ababezishilo, i-QPS yabo yayiphansi kakhulu kuneyami. Ngihlole ku-40k QPS, kodwa kuphela ku-1k. Ngenze esinye isilingo, kulokhu nge-QPS ephansi, ukuze nje ngibashweleze.
Njengoba ngibhuloga ngalokhu, mhlawumbe usuvele ubonile ukuthi izinombolo zabo zazilungile. Ngihlole iklayenti lami elibonakalayo ngokuphindaphindiwe, ngomphumela ofanayo: inombolo ephansi yezicelo ayikhulisi nje kuphela ukubambezeleka, kodwa yandisa inani lezicelo ngokubambezeleka okungaphezu kuka-10 ms. Ngamanye amazwi, uma ku-40k QPS mayelana nezicelo ezingu-50 ngomzuzwana zedlula 50 ms, bese ku-1k QPS kube nezicelo eziyi-100 ezingaphezu kuka-50 ms njalo ngomzuzwana. Indida!
Ukunciphisa ukusesha
Lapho ubhekene nenkinga yokubambezeleka ohlelweni olusabalalisiwe olunezingxenye eziningi, isinyathelo sokuqala ukwakha uhlu olufushane lwabasolwa. Ake sijule kancane ekwakhiweni kwe-Alvin:
Isiqalo esihle siwuhlu lwezinguquko ze-I/O eziqediwe (izingcingo zenethiwekhi/ukubheka idiski, njll.). Ake sizame ukuthola ukuthi ukubambezeleka kukuphi. Ngaphandle kwe-I/O esobala neklayenti, u-Alvin uthatha isinyathelo esengeziwe: ufinyelela esitolo sedatha. Nokho, lesi sitoreji sisebenza kuqoqo elifanayo njenge-Alvin, ngakho ukubambezeleka lapho kufanele kube kuncane kuneklayenti. Ngakho, uhlu lwabasolwa:
- Ucingo lwenethiwekhi olusuka kuklayenti luya ku-Alvin.
- Ucingo lwenethiwekhi olusuka ku-Alvin luya esitolo sedatha.
- Sesha kudiski esitolo sedatha.
- Ucingo lwenethiwekhi olusuka endaweni yokugcina idatha luya ku-Alvin.
- Ucingo lwenethiwekhi olusuka ku-Alvin luya kuklayenti.
Ake sizame ukucacisa amaphuzu athile.
Ukugcinwa kwedatha akuhlangene nakho
Into yokuqala engiyenzile ukuguqula u-Alvin abe yiseva ye-ping-ping engacubunguli izicelo. Uma ithola isicelo, ibuyisela impendulo engenalutho. Uma ukubambezeleka kuncipha, khona-ke iphutha ekusetshenzisweni kwe-Alvin noma i-warehouse akuyona into engazwakali. Esivivinyweni sokuqala sithola igrafu elandelayo:
Njengoba ubona, akukho ngcono lapho usebenzisa iseva ye-ping-ping. Lokhu kusho ukuthi indawo yokugcina idatha ayikhuphuli ukubambezeleka, futhi uhlu lwabasolwa lunqanyulwa phakathi:
- Ucingo lwenethiwekhi olusuka kuklayenti luya ku-Alvin.
- Ucingo lwenethiwekhi olusuka ku-Alvin luya kuklayenti.
Kuhle! Uhlu luncipha ngokushesha. Ngacabanga ukuthi ngase ngicishe ngasithola isizathu.
gRPC
Manje yisikhathi sokukwazisa kumdlali omusha: gRPC
ilungiselelwe kahle futhi isetshenziswa kabanzi, lesi bekuyisikhathi sami sokuqala ngiyisebenzisa ohlelweni lwalo sayizi futhi bengilindele ukuthi ukuqaliswa kwami ββββkungabi nokulungile - ukusho okungenani.
Ukutholakala gRPC
esitakini kubangele umbuzo omusha: mhlawumbe ukuqaliswa kwami ββββnoma yimina gRPC
kubangela inkinga yokubambezeleka? Ukwengeza umsolwa omusha ohlwini:
- Iklayenti lishayela umtapo wolwazi
gRPC
- umtapo
gRPC
yenza ucingo lwenethiwekhi oluya kulabhulali yeklayentigRPC
kuseva - umtapo
gRPC
othintana nabo u-Alvin (akukho msebenzi uma kwenzeka kuba neseva ye-ping-pong)
Ukukunikeza umbono wokuthi ikhodi ibukeka kanjani, ukuqaliswa kweklayenti lami/u-Alvin akuhlukile kakhulu kumaseva weklayenti.
Qaphela: Uhlu olungenhla lwenziwe lula kancane ngoba
gRPC
yenza kube nokwenzeka ukusebenzisa eyakho (isifanekiso?) imodeli yokulutha, lapho isitaki sokwenza sihlanganiswegRPC
kanye nokuqaliswa komsebenzisi. Ukuze kube lula, sizonamathela kule modeli.
Ukwenza iphrofayela kuzolungisa yonke into
Ngemva kokuqeda izitolo zedatha, ngacabanga ukuthi ngase ngiqedile: βManje sekulula! Masisebenzise iphrofayili futhi sithole ukuthi ukubambezeleka kwenzeka kuphi. " I
Ngithathe amaphrofayili amane: nge-QPS ephezulu (i-latency ephansi) kanye neseva ye-ping-pong ene-QPS ephansi (i-latency ephezulu), kokubili ohlangothini lweklayenti kanye nohlangothi lweseva. Futhi uma kwenzeka, ngiphinde ngathatha iphrofayili yesampula yeprosesa. Uma ngiqhathanisa amaphrofayili, ngivamise ukubheka isitaki sekholi esixakile. Isibonelo, ohlangothini olubi olunokubambezeleka okuphezulu kunezinguquko eziningi zomongo (izikhathi eziyi-10 noma ngaphezulu). Kodwa esimweni sami, inani lokushintshwa komongo lalicishe lifane. Ngethuka, kwakungekho lutho olubalulekile lapho.
Ukulungisa iphutha okwengeziwe
Ngangiphelelwe ithemba. Bengingazi ukuthi yimaphi amanye amathuluzi engingawasebenzisa, futhi uhlelo lwami olulandelayo kwakuwukuphinda ukuhlola ngokuhlukahluka okuhlukile kunokuhlonza inkinga ngokucacile.
Kuthiwani uma
Kusukela ekuqaleni, bengikhathazekile nge-latency ethize ye-50ms. Lesi yisikhathi esikhulu kakhulu. Nginqume ukuthi ngizosika izingcezu kukhodi kuze kube yilapho ngikwazi ukuthola ukuthi iyiphi ingxenye edala leli phutha. Kwabe sekufika ukuhlolwa okwasebenza.
Njengenjwayelo, uma ubheka emuva kubonakala sengathi yonke into yayisobala. Ngibeke iklayenti emshinini ofanayo no-Alvin - futhi ngathumela isicelo ku- localhost
. Futhi ukwanda kwe-latency kuphelile!
Kukhona okungahambanga kahle ngenethiwekhi.
Ukufunda amakhono kanjiniyela wenethiwekhi
Kumelwe ngivume: ulwazi lwami lobuchwepheshe benethiwekhi lubi, ikakhulukazi uma ngicabangela iqiniso lokuthi ngisebenza nabo nsuku zonke. Kepha inethiwekhi ibingumsolwa ophambili, futhi bengidinga ukufunda ukuyisusa iphutha.
Ngenhlanhla, i-inthanethi ithanda labo abafuna ukufunda. Inhlanganisela ye-ping ne-tracert ibonakala njengesiqalo esihle ngokwanele sokulungisa izinkinga zokuthutha zenethiwekhi.
Okokuqala, ngethula
Ngabe sengizama
Ngakho kwakungeyona ikhodi yami, ukuqaliswa kwe-gRPC, noma inethiwekhi ebibangela ukubambezeleka. Ngangiqala ukukhathazeka ngokuthi ngeke ngikuqonde lokhu.
Manje yini OS esikuyo
gRPC
isetshenziswa kabanzi ku-Linux, kepha ayifani kuWindows. Nganquma ukuzama ukuhlola, okwasebenza: Ngakha umshini we-Linux, ngahlanganisa i-Alvin ye-Linux, futhi ngayisebenzisa.
Futhi nakhu okwenzekile: iseva ye-Linux ping-pong ayizange ibe nokubambezeleka okufanayo njengomsingathi we-Windows ofanayo, nakuba umthombo wedatha wawungehlukile. Kuvele ukuthi inkinga isekusetshenzisweni kwe-gRPC yeWindows.
I-algorithm ye-Nagle
Sonke lesi sikhathi ngangicabanga ukuthi ngigeja ifulege gRPC
. Manje sengiyaqonda ukuthi kuyini ngempela gRPC
Ifulegi le-Windows alikho. Ngithole umtapo wezincwadi wangaphakathi we-RPC engangizethemba ukuthi uzosebenza kahle kuwo wonke amafulegi asethiwe
Cishe Kwenziwe: Ngiqale ukususa amafulegi angeziwe elilodwa ngesikhathi kwaze kwaba yilapho ukuhlehla kubuya khona ukuze ngikhombe imbangela. Kwakungadumile
gRPC
leli fulegi lamiswa ekusetshenzisweni kwe-Linux kumasokhethi e-TCP, kodwa hhayi ku-Windows. Yimi lo
isiphetho
Ukubambezeleka okuphezulu ku-QPS ephansi kudalwe ukulungiselelwa kwe-OS. Uma sibheka emuva, ukwenza iphrofayela akubonanga ukubambezeleka ngoba kwenziwe ngemodi ye-kernel esikhundleni sokungena
Ngokuqondene nokuhlolwa kokusingatha kwendawo, kungenzeka ukuthi akuzange kuthinte ikhodi yokuxhumana yangempela futhi i-algorithm ye-Nagle ayizange isebenze, ngakho-ke izinkinga zokubambezeleka zaphela lapho iklayenti lifika ku-Alvin nge-localhost.
Ngokuzayo lapho ubona ukwanda kokubambezeleka njengoba inani lezicelo ngomzuzwana lincipha, i-algorithm ye-Nagle kufanele ibe sohlwini lwakho lwabasolwa!
Source: www.habr.com