Ukusasazwa kokutshixa usebenzisa iRedis

Hayi Habr!

Namhlanje sikuzisa ingqalelo yakho ukuguqulelwa kwenqaku elintsonkothileyo malunga nokuphunyezwa kokutshixa ngokusasazwa usebenzisa iRedis kwaye sikumema ukuba uthethe ngamathemba eRedis njengesihloko. Uhlalutyo lwe-algorithm ye-Redlock ebuzwa nguMartin Kleppmann, umbhali wencwadi "Izicelo zokuLawulwa okuphezulu", inikwe apha.

Ukutshixa okusasaziweyo yinto yokuqala eluncedo kakhulu esetyenziswa kwiindawo ezininzi apho iinkqubo ezahlukeneyo kufuneka zisebenze kwizibonelelo ekwabelwana ngazo ngendlela eyodwa.

Kukho inani lamathala eencwadi kunye nezithuba ezikhoyo ezichaza indlela yokuphumeza i-DLM (uMphathi weTshixo oSasazwe) usebenzisa iRedis, kodwa ithala leencwadi ngalinye lithatha indlela eyahlukileyo kwaye iziqinisekiso ababonelela ngazo zibuthathaka kakhulu xa kuthelekiswa noko kufezekiswayo ngoyilo oluntsonkothileyo ngakumbi.

Kweli nqaku, siya kuzama ukuchaza i-algorithm enemiqathango ye-canonical ebonisa indlela yokuphumeza ukutshixa ngokusasazwa usebenzisa i-Redis. Siza kuthetha nge-algorithm ebizwa Redlock, iphumeza umphathi wokutshixa osasaziweyo kwaye, ngokombono wethu, le algorithm ikhuselekile kunendlela eqhelekileyo yomzekelo omnye. Siyathemba ukuba uluntu luya kuyihlalutya, inike ingxelo, kwaye iyisebenzise njengesiqalo kwiiprojekthi ezinzima okanye ezizezinye.

Ukuphunyezwa

Ngaphambi kokuba uqhubele phambili kwinkcazo ye-algorithm, sinika amakhonkco amaninzi ekuphunyezweni okulungeleyo. Zingasetyenziselwa ireferensi.

Iziqinisekiso zoKhuseleko kunye nokuFumana

Siza kumodelisa uyilo lwethu ngeepropati ezintathu kuphela esicinga ukuba zibonelela ngezona qinisekiso zincinci ezifunekayo ukuze sisebenzise ngokufanelekileyo ukutshixwa okusasaziweyo.

  1. Ipropathi yokhuseleko: Ukungabandakanywa. Ngalo naliphi na ixesha, mnye kuphela umxhasi onokubamba isitshixo.
  2. Ukufumaneka kwePropati A: Akukho zitshixo. Kuhlala kusenzeka ukuba ekugqibeleni ufumane isitshixo, nokuba umxhasi otshixeyo uvimba uyasilela okanye uhlala kwindawo eyahlukileyo yedisk segment.
  3. Ukufumaneka kwePropati B: Ukunyamezela iFault. Logama uninzi lweenodi zeRedis zisasebenza, abathengi bayakwazi ukufumana kwaye bakhulule izitshixo.

Kutheni ukuphunyezwa okusekelwe ekubuyiseni ukungaphumeleli akwanele kule meko
Ukuqonda into esiza kuyiphucula, makhe sihlalutye imeko yangoku yemicimbi kunye namathala eencwadi okutshixa amaninzi asekelwe kwiRedis.

Eyona ndlela ilula yokutshixa isibonelelo usebenzisa iRedis kukwenza isitshixo kumzekelo. Ngokuqhelekileyo, isitshixo senziwe ngexesha elilinganiselweyo lobomi, oku kufezekiswa ngokusebenzisa isici esiphelelwa yisikhathi esinikwe kwi-Redis, ngoko ke ngokukhawuleza okanye kamva eli qhosha likhutshwa (ipropati ye-2 kuluhlu lwethu). Xa umxhasi efuna ukukhulula isibonelelo, icima isitshixo.

Ekuqaleni, esi sisombululo sisebenza kakuhle, kodwa kukho ingxaki: ulwakhiwo lwethu ludala inqaku elinye lokusilela. Kwenzeka ntoni ukuba umamkeli weRedis umzekelo uyasilela? Masidibanise ikhoboka ke! Kwaye siya kuyisebenzisa ukuba umbonisi akafumaneki. Ngelishwa, olu khetho alunakwenzeka. Ngokwenza oku, asiyi kukwazi ukuphumeza ngokufanelekileyo ipropathi yokukhutshwa ngokubambisana esiyidingayo ukuze siqinisekise ukhuseleko, kuba ukuphindaphinda kwi-Redis ku-asynchronous.

Ngokucacileyo, kwimodeli enjalo imeko yogqatso iyenzeka:

  1. Umxhasi A ufumana iqhaga kwinkosi.
  2. Inkosi iyasilela ngaphambi kokuba isitshixo sidluliselwe kwikhoboka.
  3. Umlandeli uyanyuselwa ukuba abe yinkokeli.
  4. Umxhasi B ufumana isitshixo kwakweso sixhobo sinye ebesele esitshixiwe ngu-A. UKUnyhashwa kokhuseleko!

Ngamanye amaxesha kuyinto eqhelekileyo ukuba kwiimeko ezikhethekileyo, ezifana nokungaphumeleli, abaninzi abathengi banokubamba ukutshixa ngexesha elifanayo. Kwiimeko ezinjalo, isisombululo esisekelwe ekuphindaphindeni sinokusetyenziswa. Ngaphandle koko, sincoma isisombululo esichazwe kweli nqaku.

Ukuphunyezwa okuchanekileyo ngomzekelo omnye

Ngaphambi kokuzama ukoyisa iziphene zoqwalaselo lwemeko enye echazwe ngasentla, masiqonde indlela yokusingatha ngokufanelekileyo le meko ilula, kuba esi sisombululo sisebenza ngokwenene kwizicelo apho imeko yogqatso iyamkeleka amaxesha ngamaxesha, kwaye nangenxa yokuba ukuthintela umzekelo omnye usebenza njengesiseko esisetyenziswa kwi-algorithm esasaziweyo echazwe apha.

Ukufumana isitshixo, yenza oku:

SET resource_name my_random_value NX PX 30000

Lo myalelo ufaka isitshixo kuphela ukuba alikho (inketho ye-NX), kunye nexesha elisemthethweni le-30000 milliseconds (inketho ye-PX). Isitshixo simiselwe β€œmyrandomvalue" Eli xabiso kufuneka libe lodwa kubo bonke abathengi kunye nazo zonke izicelo zokutshixa.
Ngokusisiseko, ixabiso elingakhethiyo lisetyenziselwa ukukhulula ngokukhuselekileyo isitshixo, kunye neskripthi esixelela iRedis: susa kuphela isitshixo ukuba sikhona kwaye ixabiso eligcinwe kuyo liyinto kanye elindelweyo. Oku kuphunyezwa ngokusebenzisa le script yesiLua ilandelayo:

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

Oku kubalulekile ukuthintela isitshixo esibanjwe ngomnye umxhasi ekubeni sisuswe. Umzekelo, umxhasi usenokufumana isitshixo, emva koko atshixelwe kumsebenzi othile othatha ixesha elide kunolokuqala (ukuze isitshixo sibe nexesha lokuphelelwa), kwaye kamva sisuse isitshixo esibekwe ngomnye umxhasi.
Ukusebenzisa i-DEL elula akukhuselekanga kuba umxhasi unokususa isitshixo esibanjwe ngomnye umxhasi. Ngokwahlukileyo, xa usebenzisa isikripthi esingentla, iqhaga ngalinye "lisayinwa" ngomtya ongakhethiyo, ngoko ke kuphela umxhasi obeke wayibeka ngaphambili angayisusa.

Kufuneka ibe yintoni lo mtya random? Ndicinga ukuba kufuneka ibe ngama-bytes angama-20 ukusuka / dev / urandom, kodwa unokufumana iindlela ezingabizi kakhulu zokwenza umtya okhethekileyo ngokwaneleyo kwiinjongo zakho. Umzekelo, kuya kuba kuhle ukwenza imbewu i-RC4 nge /dev/urandom kwaye emva koko uvelise umsinga ongeyonyani ovela kuyo. Isisombululo esilula siquka indibaniselwano yexesha le-unix kwisisombululo se-microsecond kunye ne-ID yomxhasi; ayikhuselekanga kangako, kodwa ixhomekeke kumsebenzi kwiimeko ezininzi.

Ixesha esilisebenzisayo njengomlinganiselo wobomi besitshixo libizwa ngokuba β€œlixesha lokutshixa”. Eli xabiso lizombini isixa sexesha phambi kokuba isitshixo sikhululwe ngokuzenzekelayo kunye nobungakanani bexesha umxhasi analo lokugqiba umsebenzi phambi kokuba omnye umxhasi akwazi ukutshixa eso sixhobo, ngaphandle kokwaphula iziqinisekiso zokungabandakanywa. Esi siqinisekiso sinqunyelwe kuphela kwifestile ethile yexesha, eqala ukususela ngelixa kuthengwa isitshixo.

Ke sixoxe ngendlela elungileyo yokufumana kunye nokukhulula isitshixo. Inkqubo (ukuba sithetha ngenkqubo engasasazwanga ebandakanya umzekelo omnye kwaye uhlala ikhona) ikhuselekile. Masiyandise le ngcamango kwinkqubo esasazwayo, apho singenazo ziqinisekiso ezinjalo.

Redlock algorithm

Inguqulelo esasaziweyo ye-algorithm ithatha ukuba sineenkosi zeN Redis. Ezi nodi zizimele ngokupheleleyo enye kwenye, ngoko ke asisebenzisi ukuphindaphinda okanye nayiphi na enye inkqubo yolungelelwaniso olufihlakeleyo. Sele siyigqumile indlela yokufumana ngokukhuselekileyo kunye nokukhulula isitshixo kumzekelo omnye. Siyithatha kancinci ukuba i-algorithm, xa isebenza ngomzekelo omnye, iya kusebenzisa kanye le ndlela. Kwimizekelo yethu sibeka u-N ukuya ku-5, elixabiso elifanelekileyo. Ke, kuya kufuneka sisebenzise iinkosi ezi-5 zeRedis kwiikhompyuter ezahlukeneyo okanye koomatshini bokuqinisekisa ukuba benza ngokuzimeleyo omnye komnye.

Ukufumana isitshixo, umxhasi wenza le misebenzi ilandelayo:

  1. Ifumana ixesha langoku ngemilliseconds.
  2. Ngokulandelelana izama ukufumana isitshixo kuzo zonke iimeko ze-N, usebenzisa igama elingundoqo elifanayo kunye namaxabiso angaqhelekanga kuzo zonke iimeko. Kwinqanaba lesi-2, xa umxhasi emisela i-lock kwisiseko ngasinye, umxhasi usebenzisa ukulibaziseka ukufumana oko kufutshane ngokwaneleyo xa kuthelekiswa nexesha emva kokuba isitshixo sikhutshwe ngokuzenzekelayo. Umzekelo, ukuba ubude bexesha lokuvala yimizuzwana eyi-10, ukulibaziseka kunokuba kuluhlu lwe ~5-50 milliseconds. Oku kuphelisa imeko apho umxhasi anokuhlala evaliwe ixesha elide ezama ukufikelela kwi-node ye-Redis engaphumelelanga: ukuba umzekelo awufumaneki, ngoko sizama ukudibanisa komnye umzekelo ngokukhawuleza.
  3. Ukuthatha isitshixo, umxhasi ubala ukuba lingakanani ixesha eligqithileyo; Ukwenza oku, kuthabatha kwixabiso lexesha lokwenyani isitampu sexesha esifunyenwe kwinyathelo loku-1. Ukuba kwaye kuphela ukuba umxhasi ubenako ukufumana iqhaga kuninzi lweziganeko (ubuncinci 3), kunye nexesha elipheleleyo elithathiweyo ukufumana isitshixo, ngaphantsi kobude bexesha lokutshixa, isitshixo sithathwa ngokuba sifunyenwe.
  4. Ukuba isitshixo sifunyenwe, ixesha lokutshixa lithathwa njengelona xesha loqobo lokutshixa kuthatyathwe ixesha eligqithileyo elibalwe kwinyathelo lesi-3.
  5. Ukuba umxhasi uyasilela ukufumana isitshixo ngesizathu esithile (mhlawumbi ayikwazanga ukutshixa i-N/2+1 iimeko, okanye ixesha lokutshixa belilibi), ngoko ke izakuzama ukuvula zonke iimeko (nalezo ibicinga ukuba ayinakuzivimba). ).

Ngaba i-algorithm ayihambelani?

Le algorithm isekelwe kwingqikelelo yokuba, nangona kungekho wotshi ehambelanayo apho zonke iinkqubo ziya kusebenza khona, ixesha lendawo kwinkqubo nganye lisahamba malunga nesantya esifanayo, kwaye impazamo incinci xa ithelekiswa nexesha elipheleleyo emva kokuba iqhaga livaliwe. ikhutshwe ngokuzenzekelayo. Le ngcinga iyafana kakhulu nemeko eqhelekileyo kwiikhompyuter eziqhelekileyo: ikhompyuter nganye inewotshi yendawo, kwaye sihlala sithembele kwinto yokuba umahluko wexesha phakathi kweekhompyuter ezahlukeneyo lincinci.

Kweli nqanaba, kufuneka siqulunqe ngononophelo ngakumbi umthetho wethu wokukhutshelwa ecaleni: ukukhutshelwa ecaleni kuqinisekiswa kuphela ukuba umxhasi obambe isitshixo uyaphuma ngexesha lokutshixa lisebenza (eli xabiso lifunyenwe kwinyathelo lesi-3), thabatha ixesha elingakumbi (lilonke abambalwa i-milliseconds ukuhlawulela umahluko wexesha phakathi kweenkqubo).

Inqaku elilandelayo elinomdla lixela ngakumbi malunga nezixokelelwano ezifuna ulungelelwaniso lwamathuba exesha: Ukuqeshisa: indlela esebenzayo yokunyamezela iziphene ukwenzela ukuhanjiswa kwefayile yecache ukungaguquguquki.

Phinda uzame ukusilela

Xa umxhasi esilela ukufumana isitshixo, kufuneka izame kwakhona emva kolibaziseko olungenamkhethe; oku kwenzelwa ukususa ungqamaniso kubathengi abaninzi abazama ukufumana iqhaga kwisixhobo esinye ngexesha elinye (okunokukhokelela kwimeko "yokuqhekeka kwengqondo" apho kungekho baphumeleleyo). Ukongeza, ngokukhawuleza umxhasi ezama ukufumana isitshixo kuninzi lweziganeko zeRedis, icuthe ifestile apho imeko yokwahlukana kwengqondo inokuthi yenzeke (kunye nesidingo esincinci sokuzama kwakhona). Ngoko ke, ngokufanelekileyo, umxhasi kufuneka azame ukuthumela imiyalelo ye-SET kwimizekelo ye-N ngaxeshanye usebenzisa ukuphindaphinda.

Kufanelekile ukugxininisa apha ukuba kubaluleke kangakanani kubathengi abasilelayo ukufumana uninzi lwezitshixo ukukhulula (ngokuyinxenye) izitshixo ezifunyenweyo, ukuze bangalindeli ukuba isitshixo siphelelwe phambi kokuba isitshixo sifumaneke kwakhona. (nangona ukuba ulwahlulo lomnatha lwenzeka , kwaye umxhasi ulahlekelwa uqhagamshelwano kunye neemeko zeRedis, ngoko kufuneka uhlawule isohlwayo sokufumaneka ngelixa ulinde ukuba isitshixo siphelelwe).

Khulula iqhaga

Ukukhulula isitshixo ngumsebenzi olula ofuna ukuvula zonke iimeko, nokuba umxhasi ubonakala etshixe ngempumelelo umzekelo othile.

Iingqwalasela zoKhuseleko

Ngaba i-algorithm ikhuselekile? Makhe sizame ukuba nomfanekiso-ngqondweni wento eyenzekayo kwiimeko ezahlukeneyo.

Ukuqala, masicinge ukuba umxhasi ukwazile ukufumana iqhaga kwiimeko ezininzi. Umzekelo ngamnye uya kuba nesitshixo esinobomi obufanayo kubo bonke. Nangona kunjalo, nganye yezi zitshixo ifakwe ngexesha elahlukileyo, ngoko ke iya kuphelelwa ngamaxesha ahlukeneyo. Kodwa, ukuba isitshixo sokuqala sifakwe ngexesha elingekho mbi kune-T1 (ixesha esilikhethayo ngaphambi kokuqhagamshelana nomncedisi wokuqala), kwaye iqhosha lokugqibela lafakwa ngexesha elibi kakhulu kune-T2 (ixesha apho impendulo yafunyanwa khona. ukusuka kumncedisi wokugqibela), ngoko siqinisekile ukuba isitshixo sokuqala kwiseti ephelelwa lixesha iya kusinda noko MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT. Zonke ezinye izitshixo ziyakuphelelwa kamva, ngoko ke sinokuqiniseka ukuba zonke izitshixo ziya kusebenza ngaxeshanye noko ngeli xesha.

Ngexesha apho uninzi lwezitshixo luhlala lusebenza, omnye umxhasi akayi kukwazi ukufumana isitshixo, kuba imisebenzi ye-N/2+1 SET NX ayinakuphumelela ukuba izitshixo ze-N/2+1 sele zikhona. Ngoko ke, xa isitshixo sifunyenwe, akunakwenzeka ukuyifumana kwakhona ngexesha elifanayo (oku kuya kuphula ipropathi yokungabandakanyi).
Nangona kunjalo, sifuna ukuqiniseka ukuba abathengi abaninzi abazama ukufumana isitshixo ngexesha elinye abanakuphumelela ngaxeshanye.

Ukuba umxhasi utshixe uninzi lwemizekelo malunga okanye ngaphezulu kobude bexesha lokutshixa, iya kuthathela ingqalelo ukuba isitshixo singasebenzi kwaye sivule iimeko. Ke ngoko, kufuneka sithathele ingqalelo kuphela imeko apho umxhasi ekwazile ukuvimba uninzi lweziganeko ngexesha elingaphantsi komhla wokuphelelwa. Kule meko, malunga nengxabano engentla, ngexesha lexesha MIN_VALIDITY akukho mxhasi kufuneka akwazi ukuphinda afumane isitshixo. Ngoko ke, abathengi abaninzi baya kukwazi ukuvala iimeko ze-N / 2 + 1 ngexesha elifanayo (eliphela ekupheleni kwesigaba sesi-2) kuphela xa ixesha lokutshixa uninzi likhulu kunexesha le-TTL, elinika i-lock engasebenziyo.

Ngaba unganikezela ngobungqina obusesikweni bokhuseleko, ubonise i-algorithms ekhoyo efanayo, okanye ufumane ibug apha ngasentla?

Iingqwalasela zokuFikelela

Ubukho benkqubo buxhomekeke kwiimpawu ezintathu eziphambili:

  1. Ukukhulula izitshixo ngokuzenzekelayo (njengoko izitshixo ziphelelwa lixesha): Izitshixo ekugqibeleni ziya kufumaneka kwakhona ukuze zisetyenziswe kwizitshixo.
  2. Inyaniso yokuba abathengi bahlala bencedana ngokususa izitshixo xa isitshixo esinqwenelekayo singafunyanwanga, okanye sifunyenwe kwaye umsebenzi ugqityiwe; ngoko ke kusenokwenzeka ukuba akusayi kufuneka silinde ukuba izitshixo ziphelelwe lixesha ukuze siphinde sifumane isitshixo.
  3. Inyani yokuba xa umxhasi efuna ukuphinda azame ukufumana isitshixo, ilinda ixesha elide ngokwentelekiso kunexesha elifunekayo ukufumana uninzi lokutshixa. Oku kunciphisa ukuba nokwenzeka kwemeko yokwahlukana kwengqondo evelayo xa kukhuphisana ngezibonelelo.

Nangona kunjalo, kukho isohlwayo sokufumaneka esilingana ne-TTL yamacandelo enethiwekhi, ngoko ke ukuba kukho amacandelo adibeneyo, isohlwayo sinokungenasiphelo. Oku kwenzeka ngalo lonke ixesha umxhasi efumana isitshixo aze akrazule aye kwelinye icandelo phambi kokuba alikhulule.

Ngokomgaqo, kunikwe amacandelo othungelwano olungenasiphelo, inkqubo inokuhlala ingafumaneki ixesha elingenasiphelo.

Ukusebenza, ukuhluleka kunye ne-fsync

Abantu abaninzi basebenzisa i-Redis ngenxa yokuba bafuna ukusebenza kweseva ephezulu ye-lock ngokubhekiselele kwi-latency efunekayo ukuze bafumane kwaye bakhulule izitshixo, kunye nenani lokufumana / ukukhutshwa okungagqitywa ngesibini. Ukuhlangabezana nale mfuneko, kukho isicwangciso sokunxibelelana nabancedisi be-N Redis ukunciphisa i-latency. Esi sisicwangciso sokuphindaphinda (okanye "i-multiplexing yendoda ehluphekileyo", apho i-socket ifakwe kwimodi yokungathinteli, ithumela yonke imiyalelo, kwaye ifunde imiyalelo kamva, ucinga ukuba ixesha lokuya nokubuya phakathi komxhasi kunye nomzekelo ngamnye uyafana) .

Nangona kunjalo, kufuneka kwakhona sithathele ingqalelo ukuqwalaselwa okuhambelana nokugcinwa kwedatha yexesha elide ukuba sizama ukwenza imodeli kunye nokubuyisela okuthembekileyo kwiintsilelo.

Ngokusisiseko, ukucacisa umba, makhe sicinge ukuba silungiselela iRedis ngaphandle kokugcinwa kwedatha yexesha elide konke konke. Umxhasi ulawula ukuvimba i-3 kwi-5 iimeko. Enye yeemeko apho umxhasi ekwazile ukubhloka iqalwa kwakhona, kwaye ngalo mzuzu kukho iimeko ezi-3 kwakhona kwisixhobo esifanayo, esinokubhloka, kwaye omnye umxhasi unako, ukuvala umzekelo oqaliswe ngokutsha, ephula ipropathi yokhuseleko. ithatha ububodwa bezitshixo.

Ukuba uvumela idatha phambili (AOF), imeko iya kuphucula kancinci. Umzekelo, unokukhuthaza umncedisi ngokuthumela i SHUTDOWN umyalelo kwaye uyiqale kwakhona. Ekubeni imisebenzi yokuphelelwa yisikhathi kwi-Redis iphunyezwa ngokwemantiki ngendlela yokuba ixesha liqhubeke lihamba nangona umncedisi ecinyiwe, zonke iimfuno zethu zilungile. Oku kuqhelekile ukuba nje ukuvalwa okuqhelekileyo kuqinisekiswa. Kufuneka wenze ntoni xa ukucima kombane? Ukuba i-Redis iqwalaselwe ngokungagqibekanga, kunye nokuvumelanisa kwe-fsync kwidiski nganye yesibini, ngoko kunokwenzeka ukuba emva kokuqalisa kwakhona asiyi kuba nesitshixo sethu. Ngokwethiyori, ukuba sifuna ukuqinisekisa ukhuseleko lokutshixa ngalo naliphi na ixesha lokuqalisa kwakhona, kufuneka sivule fsync=always kwizicwangciso zokugcina idatha yexesha elide. Oku kuya kubulala ngokupheleleyo ukusebenza, ukuya kumgangatho weenkqubo zeCP ezisetyenziswa ngokwesiko ukuphumeza ngokukhuselekileyo izitshixo ezisasaziweyo.

Kodwa imeko ingcono kunokuba ibonakala ekuqaleni. Ngokomgaqo, ukhuseleko lwe-algorithm lugciniwe kuba xa umzekelo uqalwa kwakhona emva kokusilela, awusathathi nxaxheba kulo naluphi na utshixo olusebenzayo ngoku.

Ukuqinisekisa oku, kufuneka siqinisekise ukuba emva kokungaphumeleli umzekelo uhlala ungafumaneki kangangexesha elithile udlula kancinane ubuninzi be-TTL esiyisebenzisayo. Ngale ndlela siya kulinda de kube ngumhla wokuphelelwa kunye nokukhululwa ngokuzenzekelayo kwazo zonke izitshixo ezazisebenza ngexesha lokusilela.

Ukusebenzisa ukulibaziseka ukuqalisa kwakhona, ngokomgaqo kunokwenzeka ukufezekisa ukhuseleko nangona kungekho nakuphi na ukuzingisa kwexesha elide kwiRedis. Qaphela, nangona kunjalo, ukuba oku kunokubangela isohlwayo sokwaphula ukufikelela. Umzekelo, ukuba uninzi lweziganeko ziyasilela, inkqubo iya kuba ingafumaneki kwihlabathi jikelele kwi-TTL (kwaye akukho sixhobo sinokuvalwa ngeli xesha).

Sandisa ukufumaneka kwe-algorithm: sandisa ukuvimba

Ukuba umsebenzi owenziwe ngabathengi unamanyathelo amancinci, kunokwenzeka ukunciphisa ubude bexesha lokutshixa kunye nokuphumeza indlela yokwandisa izitshixo. Ngokomgaqo, ukuba umxhasi uxakekile ekhompyutheni kwaye ixabiso lokuphelelwa kwexesha lokutshixa liphantsi ngokuyingozi, ungathumela zonke iimeko i Lua script eyandisa i TTL yesitshixo ukuba isitshixo sisekhona kwaye ixabiso lalo liselixabiso elingakhethiyo elifunyenweyo xa iqhaga lalifunyenwe. .

Umxhasi kufuneka athathele ingqalelo kuphela isitshixo esiza kuphinda sifunyanwe ukuba uye wakwazi ukutshixa uninzi lweziganeko ngexesha elisemthethweni.

Enyanisweni, i-algorithm yezobuchwepheshe ayitshintshi, ngoko ke inani eliphezulu lokuzama ngokuphindaphindiweyo ukufumana izitshixo kufuneka lilinganiselwe, ngaphandle koko iimpawu zokufikeleleka ziya kuphulwa.

umthombo: www.habr.com

Yongeza izimvo