Kusatshalaliswe ukukhiya kusetshenziswa i-Redis

Sawubona Habr!

Namuhla sikulethela ukuhunyushwa kwesihloko esiyinkimbinkimbi mayelana nokuqaliswa kokukhiya okusatshalaliswa kusetshenziswa i-Redis futhi sikumema ukuthi ukhulume ngamathemba e-Redis njengesihloko. Ukuhlaziywa kwe-algorithm ye-Redlock okukhulunywa ngayo kuMartin Kleppmann, umbhali wencwadi "Izicelo Zomthwalo Ophakeme", inikezwe lapha.

Ukukhiya okusatshalaliswayo kuwumsebenzi wakudala owusizo kakhulu osetshenziswa ezindaweni eziningi lapho izinqubo ezahlukene kufanele zisebenze ezinsizeni ezabiwe ngendlela ekhethekile.

Kunenqwaba yemitapo yolwazi kanye nokuthunyelwe laphaya okuchaza indlela yokusebenzisa i-DLM (Isiphathi Sokhiye Osatshalalisiwe) kusetshenziswa i-Redis, kodwa umtapo wolwazi ngamunye uthatha indlela ehlukile futhi iziqinisekiso ezinikezayo zibuthakathaka impela uma kuqhathaniswa nalokho okufezwayo ngomklamo oyinkimbinkimbi kakhudlwana.

Kulesi sihloko sizozama ukuchaza i-algorithm enemibandela ye-canonical ekhombisa indlela yokuqalisa ukukhiya okusatshalalisiwe kusetshenziswa i-Redis. Sizokhuluma nge-algorithm ebizwa ngokuthi Redlock, isebenzisa isiphathi sokukhiya esisabalalisiwe futhi, ngokubona kwethu, le-algorithm iphephile kunendlela evamile yesenzo esisodwa. Sithemba ukuthi umphakathi uzowuhlaziya, unikeze impendulo, futhi uyisebenzise njengesiqalo samaphrojekthi anzima kakhulu noma amanye.

Ukwenziwa

Ngaphambi kokudlulela encazelweni ye-algorithm, sinikeza izixhumanisi ezimbalwa zokuqalisa osekwenziwe. Angasetshenziselwa ireferensi.

Iziqinisekiso Zokuphepha Nokutholakala

Sizomodela umklamo wethu ngezinto ezintathu nje esicabanga ukuthi zinikeza iziqinisekiso ezincane ezidingekayo ukuze sisebenzise ngempumelelo ukukhiya okusatshalalisiwe.

  1. Impahla yokuvikeleka: Ukukhishwa eceleni. Nganoma yisiphi isikhathi, iklayenti elilodwa kuphela elingabamba ilokhi.
  2. Ukutholakala Indawo A: Azikho izinqamuleli. Kuhlale kwenzeka ukuthi ekugcineni uthole isikhiya, noma ngabe iklayenti elikhiye insiza lihluleka noma lihlala kungxenye yediski ehlukile.
  3. Ukutholakala Indawo B: Ukubekezelela Amaphutha. Inqobo nje uma iningi lamanodi e-Redis esebenza, amaklayenti ayakwazi ukuthola nokukhulula izingidi.

Kungani ukuqaliswa okusekelwe ekubuyiseleni ukwehluleka akwanele kuleli cala
Ukuze siqonde ukuthi sizothuthukisa ini, ake sihlaziye isimo samanje semitapo yolwazi ekhiyayo esabalalisiwe esekelwe ku-Redis.

Indlela elula yokukhiya insiza usebenzisa i-Redis ukudala ukhiye esibonelweni. Ngokuvamile, ukhiye udalwe ngesikhathi sokuphila esilinganiselwe, lokhu kufinyelelwa ngokusebenzisa isici esiphelelwa yisikhathi esinikezwe ku-Redis, ngakho-ke ngokushesha noma kamuva lo khiye ukhishwa (impahla engu-2 ohlwini lwethu). Uma iklayenti lidinga ukukhulula insiza, isusa ukhiye.

Uma uthi nhlá, lesi sixazululo sisebenza kahle, kodwa kunenkinga: ukwakheka kwethu kwakha iphuzu elilodwa lokwehluleka. Kwenzekani uma isibonelo se-Redis somsingathi sihluleka? Ake sengeze isigqila-ke! Futhi sizoyisebenzisa uma umethuli engatholakali. Ngeshwa, le nketho ayisebenzi. Ngokwenza lokhu, ngeke sikwazi ukusebenzisa kahle impahla yokukhishwa ehlangene esiyidingayo ukuze siqinisekise ukuphepha, ngoba ukuphindaphinda ku-Redis asynchronous.

Ngokusobala, kumodeli enjalo isimo somjaho senzeka:

  1. Iklayenti A lithola ingidi ku-master.
  2. Inkosi yehluleka ngaphambi kokuba ukhiye wokungena udluliselwe esigqilini.
  3. Umlandeli ukhushulelwa esikhundleni sokuba ngumholi.
  4. Iklayenti B ithola ukukhiya esisetshenziswa u-A asesikhiyiwe kakade. UKWEHLULEKA KWEZEMALI!

Ngezinye izikhathi kuvamile ngokuphelele ukuthi ezimweni ezikhethekile, njengokwehluleka, amaklayenti amaningi angakwazi ukubamba ukukhiya ngesikhathi esifanayo. Ezimweni ezinjalo, isisombululo esisekelwe ekuphindaphindeni singasetshenziswa. Uma kungenjalo, sincoma isixazululo esichazwe kulesi sihloko.

Ukuqaliswa okulungile ngesibonelo esisodwa

Ngaphambi kokuzama ukunqoba ukushiyeka kokucushwa kwesibonelo esisodwa esichazwe ngenhla, ake siqonde ukuthi singasingathwa kanjani kahle lesi sigameko esilula, njengoba lesi sixazululo sisebenza ngempela ezicelweni lapho isimo somjaho siyamukeleka ngezikhathi ezithile, futhi futhi ngenxa yokuthi ukuvimba ku- isibonelo esisodwa sisebenza njengesisekelo esisetshenziswa ku-algorithm esabalalisiwe echazwe lapha.

Ukuze uthole isikhiya, yenza lokhu:

SET resource_name my_random_value NX PX 30000

Lo myalo ufaka ukhiye kuphela uma ungekho kakade (inketho ye-NX), enesikhathi sokuqinisekisa esingu-30000 millisecond (inketho ye-PX). Ukhiye usethelwe ku-“myrandomvalue" Leli nani kufanele lihluke kuwo wonke amaklayenti nakuzo zonke izicelo zokukhiya.
Ngokuyisisekelo, inani elingahleliwe lisetshenziselwa ukukhulula ukukhiya ngokuphephile, ngombhalo otshela i-Redis: susa kuphela ukhiye uma ukhona futhi inani eligcinwe kuwo lifana ncamashi nebelilindelwe. Lokhu kufinyelelwa kusetshenziswa umbhalo we-Lua olandelayo:

if redis.call("get",KEYS[1]) == ARGV[1] then
    return redis.call("del",KEYS[1])
else
    return 0
end

Lokhu kubalulekile ukuvimbela ilokhi ebanjwe elinye iklayenti ukuthi ingakhishwa. Isibonelo, iklayenti lingase lithole isikhiya, bese livaleleka kokunye ukusebenza okuhlala isikhathi eside kunokhiye wokuqala (ukuze ukhiye ube nesikhathi sokuphelelwa yisikhathi), futhi kamuva akhiphe ilokhi elinye iklayenti ebeliyifakile.
Ukusebenzisa i-DEL elula akuphephile ngoba iklayenti lingakhipha ilokhi ebanjwe elinye iklayenti. Ngokuphambene, uma usebenzisa umbhalo ongenhla, ilokhi ngayinye “isayinwa” ngochungechunge olungahleliwe, ngakho yiklayenti kuphela elisibeke ngaphambilini elingakwazi ukusisusa.

Kufanele ibe yini lolu chungechunge olungahleliwe? Ngicabanga ukuthi kufanele kube ngamabhayithi angu-20 ukusuka ku-/dev/urandom, kodwa ungathola izindlela ezingabizi kakhulu zokwenza iyunithi yezinhlamvu ihluke ngokwanele ngokwezinjongo zakho. Isibonelo, kungaba kuhle ukufaka imbewu i-RC4 nge/dev/urandom bese ukhiqiza ukusakaza okungahleliwe okungahleliwe kuyo. Isixazululo esilula sihilela inhlanganisela yesikhathi esinga-unix ekulungisweni kwe-microsecond kanye ne-ID yeklayenti; akuvikelekile kangako, kodwa kungenzeka ukuthi kuphezu komsebenzi ezimweni eziningi.

Isikhathi esisebenzisayo njengesilinganiso sempilo kakhiye sibizwa ngokuthi "isikhathi sokukhiya". Leli nani kokubili inani lesikhathi ngaphambi kokuba ilokhi ikhishwe ngokuzenzakalelayo kanye nenani lesikhathi iklayenti ekufanele liqedele ukusebenza ngaphambi kokuba elinye iklayenti likwazi ukukhiya leyo nsiza, ngaphandle kokwephula iziqinisekiso zokukhishwa ezifanayo. Lesi siqinisekiso sikhawulelwe kuphela ewindini elithile lesikhathi, eliqala kusukela ngesikhathi kuthengwa isikhiya.

Ngakho-ke sixoxile ngendlela enhle yokuthola nokukhulula isikhiya. Isistimu (uma sikhuluma ngesistimu engasabalalisiwe ehlanganisa isenzakalo esisodwa nesihlala sitholakala) ivikelekile. Masinwebe lo mqondo ohlelweni olusabalalisiwe, lapho singenazo iziqinisekiso ezinjalo.

I-algorithm yokuvala kabusha

Inguqulo esabalalisiwe ye-algorithm ithatha ngokuthi sinompetha be-N Redis. Lawa ma-node azimele ngokuphelele kwamanye, ngakho-ke asisebenzisi ukuphindaphinda noma enye isistimu yokuhlanganisa engacacile. Sesivele simboze ukuthi ungayithola kanjani futhi ukhulule isikhiya ngokuphephile ngesikhathi esisodwa. Sikuthatha njengokujwayelekile ukuthi i-algorithm, lapho isebenza ngesibonelo esisodwa, izosebenzisa yona le ndlela. Ezibonelweni zethu sibeka uN kuya ku-5, okuyinani elizwakalayo. Ngakho-ke, kuzodingeka sisebenzise amakhosi ayi-5 Redis kumakhompyutha ahlukene noma emishinini ebonakalayo ukuze siqinisekise ukuthi asebenza ngokuzimela ngaphandle komunye nomunye.

Ukuthola isikhiya, iklayenti lenza imisebenzi elandelayo:

  1. Ithola isikhathi samanje ngama-millisecond.
  2. Izama ngokulandelanayo ukuthola ukukhiya kuzo zonke izimo ze-N, isebenzisa igama elingukhiye elifanayo namanani angahleliwe kuzo zonke izimo. Esigabeni sesi-2, lapho iklayenti limisa ilokhi ngokwesisekelo sesenzo ngasinye, iklayenti lisebenzisa ukubambezeleka ukuze liyithole okufushane ngokwanele uma kuqhathaniswa nesikhathi lapho ukukhiya kudedelwa ngokuzenzakalelayo. Isibonelo, uma isikhathi sokuvimbela singamasekhondi angu-10, khona-ke ukubambezeleka kungase kube kububanzi obungu-~5-50 millisecond. Lokhu kuqeda isimo lapho iklayenti lingakwazi ukuhlala livinjiwe isikhathi eside lizama ukufinyelela i-Redis node ehlulekile: uma isibonelo singatholakali, khona-ke sizama ukuxhuma kwesinye isenzakalo ngokushesha ngangokunokwenzeka.
  3. Ukuthatha ilokhi, iklayenti libala ukuthi singakanani isikhathi esidlulile; Ukwenza lokhu, isusa enanini lesikhathi langempela isitembu sesikhathi esitholwe esinyathelweni 1. Uma futhi kuphela uma iklayenti likwazile ukuthola ukukhiya ezikhathini eziningi (okungenani ezi-3), kanye nenani eliphelele elisithathile thola ukukhiya, ngaphansi kobude besikhathi sokukhiya, ukukhiya kubhekwa njengetholiwe.
  4. Uma isikhiya sitholiwe, ubude besikhathi sokukhiya buthathwa njengesikhathi sokukhiya sangempela kususwe isikhathi esidlulile esibalwe esinyathelweni sesi-3.
  5. Uma iklayenti lehluleka ukuthola isikhiya ngesizathu esithile (mhlawumbe alikwazanga ukukhiya izikhathi ezingu-N/2+1, noma ubude besikhathi sokukhiya besinegethivu), lizozama ukuvula zonke izimo (ngisho nalezo elicabanga ukuthi ngeke likwazi ukuzivimba). ).

Ingabe i-algorithm ayihambisani?

Le-algorithm isekelwe emcabangweni wokuthi, nakuba lingekho iwashi elivumelanisiwe lapho zonke izinqubo zizosebenza khona, isikhathi sendawo enqubweni ngayinye sisageleza cishe ngesivinini esifanayo, futhi iphutha lincane uma liqhathaniswa nesikhathi esiphelele lapho ukukhiya kukhiyiwe khona. ikhishwe ngokuzenzakalelayo. Lokhu kucabanga kufana kakhulu nesimo esijwayelekile samakhompyutha ajwayelekile: ikhompuyutha ngayinye inewashi lasendaweni, futhi ngokuvamile singathembela eqinisweni lokuthi umehluko wesikhathi phakathi kwamakhompyutha ahlukene mncane.

Kuleli qophelo, kufanele sihlele ngokucophelela umthetho wethu wokungabandakanywa: ukukhishwa okufanayo kuqinisekisiwe kuphela uma iklayenti elibambe ilokhi liphuma ngesikhathi isikhiya sisebenza (leli nani litholwe esinyathelweni sesi-3), khipha isikhathi esengeziwe (ingqikithi embalwa ama-millisecond ukunxephezela umehluko wesikhathi phakathi kwezinqubo).

I-athikili elandelayo ethokozisayo ikhuluma okwengeziwe ngamasistimu anjalo adinga ukuhlanganiswa kwezikhawu zesikhathi: Ukuqashisa: indlela esebenzayo yokubekezelela iphutha yokuvumelana kwenqolobane yefayela esabalalisiwe.

Zama futhi ekuhlulekeni

Uma iklayenti lehluleka ukuthola ilokhi, kufanele lizame futhi ngemva kokulibaziseka okungahleliwe; lokhu kwenzelwa ukususa ukuvumelanisa amaklayenti amaningi azama ukuthola ukukhiya esisetshenziswa esifanayo ngesikhathi esisodwa (okungaholela esimweni "sokuhlukana kobuchopho" lapho bengekho abawinile). Ukwengeza, lapho iklayenti lizama ngokushesha ukuthola ukhiye ezimweni eziningi ze-Redis, iwindi liyancipha lapho kungenzeka khona isimo sobuchopho obuhlukene (kanye nesidingo esincane sokuzama futhi). Ngakho-ke, kuhle, iklayenti kufanele lizame ukuthumela imiyalo ye-SET kuzimo ezingu-N ngesikhathi esisodwa lisebenzisa ukuphindaphinda.

Kuyafaneleka ukugcizelela lapha ukuthi kubaluleke kangakanani kumakhasimende ahlulekayo ukuthola iningi lezingidi ukuze akhulule izingidi ezitholiwe (ingxenye) ezitholiwe, ukuze angalindi ukuthi ukhiye uphelelwe yisikhathi ngaphambi kokuthi ukukhiya kusisetshenziswa kuphinde kutholwe. (nakuba uma kwenzeka ukuhlukana kwenethiwekhi , futhi iklayenti lilahlekelwa ukuxhumana nezimo ze-Redis, kuzomele ukhokhe inhlawulo yokutholakala ngesikhathi ulinde ukuphelelwa yisikhathi kokhiye).

Khulula ingidi

Ukukhipha isingidi kuwumsebenzi olula odinga ukuthi kuvulwe zonke izimo, kungakhathaliseki ukuthi iklayenti libonakala likhiya ngempumelelo isenzakalo esithile.

Ukucatshangelwa Kokuphepha

Ingabe i-algorithm iphephile? Ake sizame ukucabanga ukuthi kwenzekani ezimeni ezahlukene.

Okokuqala, ake sicabange ukuthi iklayenti likwazile ukuthola ilokhi ezikhathini eziningi. Isenzakalo ngasinye sizoqukatha ukhiye onesikhathi sokuphila esifanayo kubo bonke. Kodwa-ke, ngamunye walaba khiye ufakwe ngesikhathi esihlukile, ngakho-ke uzophelelwa yisikhathi ngezikhathi ezahlukene. Kodwa, uma ukhiye wokuqala ufakwe ngesikhathi esibi kakhulu kune-T1 (isikhathi esisikhethayo ngaphambi kokuxhumana neseva yokuqala), futhi ukhiye wokugcina ufakwe ngesikhathi esibi kakhulu kune-T2 (isikhathi lapho impendulo yamukelwa khona. kusuka kuseva yokugcina), khona-ke siyaqiniseka ukuthi ukhiye wokuqala kusethi ophelelwa yisikhathi uzosinda okungenani MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT. Bonke abanye okhiye bazophelelwa yisikhathi ngokuhamba kwesikhathi, ngakho singaqiniseka ukuthi bonke okhiye bazosebenza ngesikhathi esisodwa okungenani kulesi sikhathi.

Phakathi nesikhathi lapho okhiye abaningi behlala khona, elinye iklayenti ngeke likwazi ukuthola ukukhiya, njengoba imisebenzi ye-N/2+1 SET NX ayikwazi ukuphumelela uma okhiye be-N/2+1 sebevele bekhona. Ngakho-ke, uma ilokhi isitholiwe, akunakwenzeka ukuphinda uyithole ngesikhathi esifanayo (lokhu kuzophula impahla yokukhishwa okuhlangene).
Nokho, sifuna ukwenza isiqiniseko sokuthi amaklayenti amaningi azama ukuthola isikhiya ngesikhathi esisodwa awakwazi ukuphumelela ngesikhathi esisodwa.

Uma iklayenti likhiye izimo eziningi cishe noma ngaphezulu kobude besikhathi sokukhiya, lizobheka ukukhiya okungavumelekile futhi livule izimo. Ngakho-ke, kufanele sicabangele kuphela icala lapho iklayenti likwazile ukuvimba izimo eziningi ngesikhathi esingaphansi kosuku lokuphelelwa yisikhathi. Kulokhu, mayelana nengxabano engenhla, ngesikhathi MIN_VALIDITY alikho iklayenti okufanele likwazi ukuthola kabusha ilokhi. Ngakho-ke, amaklayenti amaningi azokwazi ukukhiya izimo ze-N/2+1 ngesikhathi esifanayo (okugcina ekupheleni kwesiteji sesi-2) kuphela lapho isikhathi sokukhiya iningi sikhulu kunesikhathi se-TTL, okwenza ukukhiya kungavumelekile.

Ungakwazi yini ukunikeza ubufakazi obusemthethweni bokuphepha, ubonise ama-algorithm akhona afanayo, noma uthole isiphazamisi kokungenhla?

Ukucatshangelwa kokufinyeleleka

Ukutholakala kwesistimu kuncike ezicini ezintathu ezibalulekile:

  1. Khipha ngokuzenzakalelayo izikhiya (njengoba okhiye baphelelwa yisikhathi): Okhiye bazogcina betholakala futhi ukuze basetshenziselwe ukukhiya.
  2. Iqiniso lokuthi amakhasimende ajwayele ukusizana ngokukhipha izingidi lapho ilokhi abeyifuna ingakatholwa, noma isitholiwe futhi umsebenzi usuphelile; ngakho-ke kungenzeka ukuthi ngeke kudingeke silinde ukuthi okhiye baphelelwe yisikhathi ukuze siphinde sithole isikhiya.
  3. Iqiniso lokuthi uma iklayenti lidinga ukuzama futhi ukuthola ilokhi, lilinda isikhathi eside ngokuqhathaniswa kunesikhathi esidingekayo ukuze lithole izingidi eziningi. Lokhu kunciphisa ithuba lokuvela kwesimo sobuchopho obuhlukene lapho uqhudelana ngezinsiza.

Kodwa-ke, kunenhlawulo yokutholakala elingana ne-TTL yezingxenye zenethiwekhi, ngakho-ke uma kukhona amasegimenti ahlangene, inhlawulo ingase ingapheli. Lokhu kwenzeka noma nini lapho iklayenti lithola ukhiye bese liklebhula liye kwenye ingxenye ngaphambi kokuthi liyikhulule.

Empeleni, uma kubhekwa amasegimenti enethiwekhi angenamkhawulo, isistimu ingahlala ingatholakali isikhathi esingapheli.

Ukusebenza, ukuhluleka kanye ne-fsync

Abantu abaningi basebenzisa i-Redis ngoba badinga ukusebenza kweseva yokukhiya okuphezulu ngokwemibandela yokubambezeleka okudingekayo ukuze bathole futhi bakhulule izingidi, kanye nenani lokutholwa/ukukhishwa okungaqedwa ngomzuzwana. Ukuze uhlangabezane nale mfuneko, kunesu lokuxhumana namaseva e-N Redis ukunciphisa ukubambezeleka. Leli isu lokuphindaphinda (noma "ukuphindaphinda komuntu ompofu", lapho isokhethi lifakwa kumodi engavimbi, lithumela yonke imiyalo, futhi lifunde imiyalo kamuva, kucatshangwa ukuthi isikhathi sokubuya nokubuya phakathi kweklayenti nesenzakalo ngasinye siyefana) .

Kodwa-ke, kufanele futhi sicabangele ukucatshangelwa okuhlobene nokugcinwa kwedatha yesikhathi eside uma silwela ukudala imodeli enokuthola okuthembekile ekuhlulekeni.

Ngokuyisisekelo, ukucacisa inkinga, ake sicabange ukuthi silungiselela i-Redis ngaphandle kokugcinwa kwedatha yesikhathi eside nhlobo. Iklayenti liyakwazi ukuvimba izikhathi ezi-3 kwezi-5. Esinye sezimo iklayenti elikwazile ukusivimba siyaqalwa kabusha, futhi kulo mzuzu kukhona izikhathi ezi-3 futhi zensiza efanayo, esingayivimba, futhi elinye iklayenti lingakwazi ukuvimba isenzakalo esiqalwe kabusha, lephule impahla yokuvikela leyo. ithatha kuphela izingidi.

Uma unika amandla idatha phambili (i-AOF), isimo sizothuthuka kancane. Isibonelo, ungaphromotha iseva ngokuthumela umyalo we-SHUTDOWN bese uyiqala kabusha. Njengoba imisebenzi yokuphelelwa yisikhathi ku-Redis isetshenziswa ngendlela yokuthi isikhathi siqhubeke nokugeleza ngisho nalapho iseva icishiwe, zonke izidingo zethu zilungile. Lokhu kuvamile inqobo nje uma ukuvala shaqa okuvamile kuqinisekiswa. Yini okufanele uyenze uma ugesi ucisha? Uma i-Redis ilungiselelwe ngokuzenzakalelayo, ngokuvumelanisa kwe-fsync kudiski njalo ngomzuzwana, khona-ke kungenzeka ukuthi ngemva kokuqalisa kabusha ngeke sibe nokhiye wethu. Ngokombono, uma sifuna ukuqinisekisa ukuvikeleka kokukhiya ngesikhathi sokuqala kabusha, kufanele sikunike amandla fsync=always kuzilungiselelo zokugcinwa kwedatha yesikhathi eside. Lokhu kuzobulala ngokuphelele ukusebenza, kuze kufike ezingeni lezinhlelo ze-CP ezisetshenziswa ngokwesiko ukuze kusetshenziswe izingidi ezisatshalalisiwe ngokuphephile.

Kodwa isimo singcono kunalokho esikubheka ekuqaleni. Empeleni, ukuvikeleka kwe-algorithm kuyagcinwa ngoba uma isenzakalo siqalwa kabusha ngemva kokwehluleka, asisahlanganyeli kunoma yikuphi ukukhiya okusebenzayo okwamanje.

Ukuqinisekisa lokhu, sidinga nje ukuqinisekisa ukuthi ngemva kokwehluleka isibonelo sihlala singatholakali isikhathi esidlula kancane i-TTL esiphezulu esiyisebenzisayo. Ngale ndlela sizolinda kuze kube idethi yokuphelelwa yisikhathi kanye nokukhishwa okuzenzakalelayo kwabo bonke okhiye abebesebenza ngesikhathi sokwehluleka.

Ukusebenzisa ukuqalisa kabusha okubambezelekile, ngokomgomo kuyenzeka ukuzuza ukuphepha ngisho nalapho kungekho ukuphikelela kwesikhathi eside ku-Redis. Qaphela, nokho, ukuthi lokhu kungase kuphumele ekuhlawulisweni ngokwephula ukufinyeleleka. Isibonelo, uma izimo eziningi zihluleka, isistimu ngeke itholakale emhlabeni wonke ku-TTL (futhi akukho zinsiza ezingavinjwa ngalesi sikhathi).

Sandisa ukutholakala kwe-algorithm: sandisa ukuvinjwa

Uma umsebenzi owenziwa amaklayenti uqukethe izinyathelo ezincane, kungenzeka ukunciphisa ubude besikhathi sokukhiya futhi kusetshenziswe indlela yokwelula izingidi. Empeleni, uma iklayenti limatasa lisebenzisa ikhompuyutha futhi inani lokuphelelwa isikhathi sokukhiya liphansi ngokuyingozi, ungathumela umbhalo we-Lua kuzo zonke izimo ezinweba i-TTL yokhiye uma ukhiye usekhona futhi inani lawo liseyinani elingahleliwe elitholwe lapho Ilokhi yatholwa.

Iklayenti kufanele licabangele kuphela ukukhiya okufanele kuphinde kutholwe uma likwazile ukukhiya izimo eziningi phakathi nesikhathi sokuqinisekisa.

Yiqiniso, ngokobuchwepheshe i-algorithm ayishintshi, ngakho-ke inombolo enkulu yemizamo ephindaphindiwe yokuthola izingidi kufanele ikhawulelwe, ngaphandle kwalokho izici zokufinyeleleka zizophulwa.

Source: www.habr.com

Engeza amazwana