Xauv xauv siv Redis

Hlo Habr!

Niaj hnub no peb coj los rau koj mloog ib tug txhais lus ntawm ib tug complex tsab xov xwm hais txog qhov kev siv ntawm faib locking siv Redis thiab caw koj los tham txog lub zeem muag ntawm Redis raws li lub ntsiab lus. Kev tshuaj xyuas ntawm Redlock algorithm hauv nqe lus nug los ntawm Martin Kleppmann, tus sau phau ntawv "High Load Applications", muab no.

Kev faib khoom xauv yog qhov tseem ceeb heev siv nyob rau hauv ntau qhov chaw uas cov txheej txheem sib txawv yuav tsum ua haujlwm ntawm kev sib koom ua ke hauv kev sib koom ua ke.

Muaj ntau lub tsev qiv ntawv thiab cov ntawv tshaj tawm nyob rau hauv uas piav qhia yuav ua li cas siv DLM (Distributed Lock Manager) siv Redis, tab sis txhua lub tsev qiv ntawv siv txoj hauv kev sib txawv thiab cov kev lees paub uas lawv muab yog qhov tsis muaj zog piv rau qhov ua tiav nrog kev tsim qauv me ntsis.

Hauv tsab xov xwm no peb yuav sim piav qhia txog qhov xwm txheej canonical algorithm uas qhia tau tias yuav ua li cas thiaj li siv tau cov xauv xauv siv Redis. Peb mam li tham txog ib qho algorithm hu ua Redlock, nws siv tus neeg saib xyuas kev faib khoom xauv thiab, hauv peb lub tswv yim, qhov algorithm no muaj kev nyab xeeb dua li ib qho piv txwv li ib txwm. Peb cia siab tias cov zej zog yuav tshuaj xyuas nws, muab cov lus tawm tswv yim, thiab siv nws los ua qhov chaw pib rau ntau txoj haujlwm lossis lwm txoj haujlwm.

Kev nqis tes ua

Ua ntej txav mus rau qhov kev piav qhia ntawm algorithm, peb muab ntau qhov txuas rau kev npaj ua tiav. Lawv tuaj yeem siv rau kev siv.

Kev ruaj ntseg thiab muaj Guarantees

Peb tab tom yuav ua qauv peb tus qauv tsim nrog tsuas yog peb lub zog uas peb xav tias muab qhov kev lees paub yam tsawg kawg nkaus uas yuav tsum tau siv kom zoo siv cov khoom xauv.

  1. Kev ruaj ntseg khoom: Kev sib nrig sib cais. Thaum twg los tau, tsuas yog ib tus neeg tuaj yeem tuav lub xauv.
  2. Availability Property A: Tsis muaj kev kaw. Nws yog ib txwm ua tau kom thiaj li tau txais lub xauv, txawm tias tus neeg siv khoom xauv cov peev txheej tsis ua haujlwm lossis thaj av ntawm qhov sib txawv disk ntu.
  3. Availability Property B: Fault Tolerance. Tsuav yog feem ntau ntawm Redis nodes tab tom khiav, cov neeg siv khoom tuaj yeem tau txais thiab tso cov xauv.

Vim li cas kev siv raws li kev ua tsis tiav rov qab tsis txaus rau qhov no
Txhawm rau kom nkag siab tias peb yuav txhim kho dab tsi, cia peb txheeb xyuas cov xwm txheej tam sim no nrog rau cov tsev qiv ntawv kaw feem ntau faib raws li Redis.

Txoj hauv kev yooj yim tshaj plaws los xauv cov peev txheej siv Redis yog los tsim tus yuam sij hauv qhov piv txwv. Feem ntau, tus yuam sij raug tsim nrog lub neej tsis muaj sijhawm, qhov no tau ua tiav siv lub sijhawm tas sijhawm muab hauv Redis, yog li sai lossis tom qab tus yuam sij no raug tso tawm (cov khoom 2 hauv peb daim ntawv teev npe). Thaum tus neeg siv yuav tsum tso cov peev txheej, nws tshem tawm tus yuam sij.

Thaum xub thawj siab ib muag, qhov kev daws teeb meem no ua haujlwm zoo heev, tab sis muaj ib qho teeb meem: peb architecture tsim ib qho kev ua tsis tiav. Yuav ua li cas yog tias tus tswv tsev Redis ua tsis tiav? Wb ntxiv ib tug qhev ntxiv! Thiab peb yuav siv nws yog tias tus neeg nthuav qhia tsis muaj. Hmoov tsis zoo, qhov kev xaiv no tsis siv tau. Los ntawm kev ua qhov no, peb yuav tsis muaj peev xwm ua kom zoo siv cov cuab yeej cais tawm uas peb xav tau kom muaj kev ruaj ntseg, vim tias kev rov ua dua hauv Redis yog asynchronous.

Obviously, nyob rau hauv xws li ib tug qauv ib haiv neeg mob tshwm sim:

  1. Client A tau txais lub xauv ntawm tus tswv.
  2. Tus tswv tsis ua ntej qhov tseem ceeb nkag mus rau tus qhev.
  3. Cov neeg ua raws yog nce mus rau tus thawj coj.
  4. Client B tau txais ib lub xauv ntawm tib qhov chaw uas A twb tau kaw lawm. TXOJ CAI TSHIAB!

Qee lub sij hawm nws yog qhov qub tag nrho uas nyob rau hauv cov xwm txheej tshwj xeeb, xws li kev ua tsis tiav, ntau tus neeg siv khoom tuaj yeem tuav lub xauv rau tib lub sijhawm. Nyob rau hauv tas li ntawd, ib tug replication-raws li kev daws yuav siv tau. Txwv tsis pub, peb pom zoo cov kev daws teeb meem tau piav qhia hauv kab lus no.

Kev ua kom raug nrog ib qho piv txwv

Ua ntej yuav sim kov yeej qhov tsis txaus ntawm qhov kev teeb tsa ib zaug uas tau piav qhia saum toj no, cia peb nkag siab tias yuav ua li cas thiaj li daws tau qhov teeb meem no yooj yim, vim tias qhov kev daws teeb meem no tau siv tau rau hauv cov ntawv thov uas qhov kev sib tw tau txais los ntawm qee lub sijhawm, thiab kuj vim tias thaiv ntawm ib qho ib qho piv txwv ua haujlwm raws li lub hauv paus uas tau siv hauv cov txheej txheem faib tau piav qhia ntawm no.

Yuav kom tau ib lub xauv, ua qhov no:

SET resource_name my_random_value NX PX 30000

Cov lus txib no txhim kho tus yuam sij nkaus xwb yog tias nws tsis tau muaj lawm (NX kev xaiv), nrog lub sijhawm siv tau ntawm 30000 milliseconds (PX xaiv). Qhov tseem ceeb yog teem rau "myrandomvalue" Tus nqi no yuav tsum yog tshwj xeeb thoob plaws txhua tus neeg siv khoom thiab txhua qhov kev thov xauv.
Yeej, tus nqi random yog siv los ua kom muaj kev nyab xeeb tso lub xauv, nrog ib tsab ntawv qhia Redis: tsuas yog tshem tus yuam sij yog tias nws muaj thiab tus nqi khaws cia hauv nws yog raws nraim qhov xav tau. Qhov no ua tiav siv cov ntawv Lua hauv qab no:

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

Qhov no yog qhov tseem ceeb los tiv thaiv lub xauv uas tuav los ntawm lwm tus neeg siv khoom los ntawm kev tshem tawm. Piv txwv li, tus neeg siv khoom yuav tau txais lub xauv, tom qab ntawd ua rau qee qhov kev ua haujlwm ntev dua li thawj lub xauv (kom tus yuam sij muaj sijhawm tas sijhawm), thiab tom qab ntawd tshem lub xauv uas qee tus neeg siv tau tso.
Kev siv DEL yooj yim tsis muaj kev nyab xeeb vim tias tus neeg siv khoom tuaj yeem tshem tawm lub xauv los ntawm lwm tus neeg siv khoom. Hauv qhov sib piv, thaum siv cov ntawv sau saum toj no, txhua lub ntsuas phoo yog "kos npe" nrog txoj hlua tsis sib xws, yog li tsuas yog tus neeg siv khoom yav dhau los tso nws tuaj yeem tshem tawm.

Txoj hlua random yuav tsum yog dab tsi? Kuv twv nws yuav tsum yog 20 bytes los ntawm / dev / urandom, tab sis koj tuaj yeem nrhiav tsis tshua kim txoj hauv kev los ua kom txoj hlua tshwj xeeb txaus rau koj lub hom phiaj. Piv txwv li, nws yuav zoo rau cov noob RC4 nrog / dev / urandom thiab tom qab ntawd tsim cov pseudo-random kwj los ntawm nws. Ib qho kev daws teeb meem yooj yim suav nrog kev sib xyaw ntawm unix lub sij hawm hauv microsecond daws ntxiv rau tus neeg siv khoom ID; nws tsis zoo li kev nyab xeeb, tab sis nws yog tej zaum mus rau txoj hauj lwm hauv feem ntau cov ntsiab lus.

Lub sijhawm peb siv los ntsuas tus yuam sij lub neej yog hu ua "lock lifetime". Tus nqi no yog ob qho tib si lub sijhawm ua ntej lub xauv raug tso tawm thiab lub sijhawm tus neeg siv khoom yuav tsum ua kom tiav kev ua haujlwm ua ntej lwm tus neeg siv khoom tuaj yeem kaw qhov kev pab cuam, yam tsis muaj kev ua txhaum kev sib nrig sib cais. Qhov kev lees paub no tsuas yog txwv rau qee lub sijhawm ntawm lub sijhawm, uas pib txij li lub sijhawm xauv khoom.

Yog li peb tau tham txog txoj hauv kev zoo kom tau txais thiab tso lub xauv. Lub kaw lus (yog tias peb tab tom tham txog lub kaw lus tsis xa tawm uas suav nrog ib qho thiab ib txwm muaj piv txwv) muaj kev nyab xeeb. Cia peb txuas lub tswv yim no mus rau ib qho kev faib tawm, qhov twg peb tsis muaj kev lees paub.

Redlock algorithm

Qhov kev faib tawm ntawm cov algorithm xav tias peb muaj N Redis masters. Cov nodes yog ywj siab ntawm ib leeg, yog li peb tsis siv replication los yog lwm yam implicit coordination system. Peb twb tau hais txog yuav ua li cas kom tau txais kev nyab xeeb thiab tso lub xauv ntawm ib qho piv txwv. Peb muab nws tso cai tias algorithm, thaum ua haujlwm nrog ib qho piv txwv, yuav siv raws nraim txoj kev no. Hauv peb cov piv txwv peb teem N rau 5, uas yog tus nqi tsim nyog. Yog li, peb yuav tau siv 5 Redis masters ntawm cov khoos phis tawj sib txawv lossis cov tshuab virtual kom ntseeg tau tias lawv ua haujlwm ntau ntawm lawv tus kheej.

Yuav kom tau ib lub xauv, tus neeg siv khoom ua cov haujlwm hauv qab no:

  1. Tau txais lub sijhawm tam sim no hauv milliseconds.
  2. Kev sim ua kom tau qhov ntsuas phoo ntawm txhua qhov N piv txwv, siv tib lub npe tseem ceeb thiab qhov tseem ceeb hauv txhua kis. Hauv Theem 2, thaum tus neeg siv tau teeb tsa lub ntsuas phoo ntawm ib qho piv txwv, tus neeg siv khoom siv ncua sijhawm kom tau txais nws uas luv txaus piv rau lub sijhawm tom qab lub xauv raug tso tawm. Piv txwv li, yog tias lub sijhawm thaiv yog 10 vib nas this, qhov ncua sij hawm tuaj yeem nyob rau hauv thaj tsam ntawm ~ 5-50 milliseconds. Qhov no tshem tawm qhov xwm txheej uas tus neeg siv yuav nyob twj ywm rau lub sijhawm ntev sim mus txog qhov ua tsis tiav Redis ntawm: yog tias qhov piv txwv tsis muaj, ces peb sim txuas mus rau lwm qhov piv txwv sai li sai tau.
  3. Txhawm rau muab xauv, tus neeg siv yuav suav tias lub sijhawm dhau mus ntev npaum li cas; Txhawm rau ua qhov no, nws rho tawm los ntawm lub sijhawm tiag tiag tus nqi lub sijhawm uas tau txais hauv kauj ruam 1. Yog tias thiab tsuas yog tus neeg siv khoom tuaj yeem tau txais lub xauv ntawm feem ntau (tsawg kawg 3), thiab tag nrho lub sijhawm nws siv. tau lub ntsuas phoo, tsawg dua lub sijhawm xauv, qhov ntsuas phoo yog suav tias tau txais.
  4. Yog tias qhov ntsuas phoo tau txais, lub sijhawm ntsuas ntsuas yuav raug coj los ua lub sijhawm ntsuas thawj zaug rho tawm lub sijhawm dhau los suav hauv qib 3.
  5. Yog tias tus neeg siv khoom tsis tau txais lub xauv rau qee qhov laj thawj (txawm tias nws tsis tuaj yeem kaw N / 2 + 1 piv txwv, lossis lub sijhawm xauv lub sijhawm tsis zoo), ces nws yuav sim qhib txhua qhov xwm txheej (txawm tias nws xav tias nws tsis tuaj yeem thaiv. ).

Puas yog algorithm asynchronous?

Qhov no algorithm yog raws li qhov kev xav tias, txawm hais tias tsis muaj lub moos synchronized uas txhua tus txheej txheem yuav ua haujlwm, lub sijhawm hauv zos hauv txhua tus txheej txheem tseem ntws ntawm kwv yees li tib lub sijhawm, thiab qhov yuam kev me me piv rau tag nrho lub sijhawm tom qab lub xauv yog txiav tawm. Qhov kev xav no zoo ib yam li qhov xwm txheej zoo ib yam rau cov khoos phis tawj qub: txhua lub khoos phis tawj muaj lub moos hauv zos, thiab peb tuaj yeem suav nrog qhov tseeb tias lub sijhawm sib txawv ntawm cov khoos phis tawj sib txawv me me.

Lub sijhawm no, peb yuav tsum ua tib zoo tsim peb txoj cai kev sib nrig sib cais: kev sib nrig sib cais tsuas yog lav yog tias tus neeg siv khoom tuav lub xauv tawm thaum lub sijhawm xauv siv tau (tus nqi no tau txais hauv kauj ruam 3), rho tawm qee lub sijhawm ntxiv (tag nrho ob peb milliseconds los them rau lub sijhawm sib txawv ntawm cov txheej txheem).

Cov kab lus nthuav qhia hauv qab no qhia ntau ntxiv txog cov kab ke uas xav tau kev sib koom ua ke ntawm lub sijhawm: Leases: ib qho kev ua txhaum cai rau kev faib cov ntaub ntawv cache sib xws.

Rov sim ua tsis tiav

Thaum tus neeg siv khoom tsis tau txais lub xauv, nws yuav tsum rov sim dua tom qab ncua sijhawm; qhov no yog ua kom de-synchronize ntau tus neeg siv khoom sim kom tau txais lub xauv ntawm tib lub peev txheej tib lub sijhawm (uas tuaj yeem ua rau "split-hlwb" qhov xwm txheej uas tsis muaj cov yeej). Tsis tas li ntawd, qhov nrawm dua tus neeg siv khoom sim kom tau txais lub xauv ntawm feem ntau ntawm Redis piv txwv, qhov nqaim ntawm lub qhov rais uas qhov xwm txheej ntawm lub hlwb tuaj yeem tshwm sim (thiab qhov tsawg dua qhov xav tau rov ua dua). Yog li, qhov zoo tshaj plaws, tus neeg siv yuav tsum sim xa SET cov lus txib rau N piv txwv ib txhij siv multiplexing.

Nws yog ib qho tsim nyog hais txog qhov no tseem ceeb npaum li cas rau cov neeg siv khoom uas tsis tau txais feem ntau ntawm cov xauv xauv kom tso tawm (ib feem) tau txais cov xauv, kom lawv tsis tas yuav tos tus yuam sij kom tas sij hawm ua ntej lub xauv ntawm cov peev txheej tuaj yeem tau dua. (tab sis yog tias network fragmentation tshwm sim, thiab tus neeg siv khoom poob kev sib cuag nrog Redis piv txwv, ces koj yuav tsum them tus nqi nplua thaum tos tus yuam sij kom tas).

Tso lub xauv

Tso lub ntsuas phoo yog ib txoj haujlwm yooj yim uas tsuas yog yuav tsum tau xauv txhua qhov xwm txheej, tsis hais seb tus neeg siv khoom zoo li puas tau xauv ib qho piv txwv tshwj xeeb.

Kev xav txog kev nyab xeeb

Puas yog algorithm muaj kev nyab xeeb? Cia peb sim xav txog tej yam tshwm sim nyob rau hauv txawv scenarios.

Yuav pib nrog, cia peb xav tias tus neeg siv khoom tuaj yeem tau txais lub xauv ntawm feem ntau ntawm cov xwm txheej. Txhua qhov piv txwv yuav muaj tus yuam sij nrog tib lub neej rau txhua tus. Txawm li cas los xij, txhua tus yuam sij no tau teeb tsa nyob rau lub sijhawm sib txawv, yog li lawv yuav tas sij hawm sib txawv. Tab sis, yog tias thawj tus yuam sij raug teeb tsa nyob rau ib lub sijhawm tsis muaj qhov phem tshaj T1 (lub sijhawm uas peb xaiv ua ntej hu rau thawj tus neeg rau zaub mov), thiab tus yuam sij kawg tau teeb tsa ib lub sijhawm tsis phem dua T2 (lub sijhawm uas tau txais cov lus teb. los ntawm tus neeg rau zaub mov kawg), ces peb ntseeg siab tias thawj tus yuam sij hauv cov txheej txheem uas tas sij hawm yuav muaj sia nyob tsawg kawg MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT. Tag nrho lwm cov yuam sij yuav tas sij hawm tom qab, yog li peb tuaj yeem paub tseeb tias txhua tus yuam sij yuav siv tau ib txhij rau tsawg kawg lub sijhawm no.

Thaum lub sijhawm cov yuam sij feem ntau tseem siv tau, lwm tus neeg siv khoom yuav tsis tuaj yeem tau txais lub xauv, txij li N / 2 + 1 SET NX cov haujlwm tsis tuaj yeem ua tiav yog tias N / 2 + 1 cov yuam sij twb muaj lawm. Yog li ntawd, ib zaug ib lub xauv tau txais, nws yog tsis yooj yim sua kom tau nws dua nyob rau tib lub sij hawm (qhov no yuav ua txhaum cov kev sib nrig sib cais khoom).
Txawm li cas los xij, peb xav kom paub tseeb tias ntau tus neeg siv khoom sim kom tau txais lub xauv rau tib lub sijhawm tsis tuaj yeem ua tiav tib lub sijhawm.

Yog tias tus neeg siv tau kaw qhov feem ntau ntawm cov xwm txheej rau txog lossis ntau tshaj qhov ntsuas qhov siab tshaj plaws, nws yuav xav txog qhov ntsuas qhov tsis raug thiab qhib qhov xwm txheej. Yog li ntawd, peb tsuas yog yuav tsum coj mus rau hauv tus account qhov xwm txheej uas tus neeg siv khoom tau tswj hwm los thaiv feem ntau ntawm cov xwm txheej hauv lub sijhawm tsawg dua li hnub tas sijhawm. Hauv qhov no, hais txog qhov kev sib cav saum toj no, thaum lub sijhawm MIN_VALIDITY tsis muaj tus neeg siv khoom yuav tsum tuaj yeem tau txais lub xauv. Yog li ntawd, ntau tus neeg siv yuav tuaj yeem kaw N / 2 + 1 piv txwv nyob rau tib lub sijhawm (uas xaus rau qhov kawg ntawm theem 2) tsuas yog thaum lub sijhawm kaw feem ntau ntau dua li TTL lub sijhawm, uas ua rau lub xauv tsis raug.

Koj puas tuaj yeem muab cov ntaub ntawv pov thawj ntawm kev ruaj ntseg, qhia cov algorithms uas twb muaj lawm, lossis pom cov kab laum nyob rau saum toj no?

Kev xav txog kev nkag mus tau yooj yim

Qhov system muaj nyob ntawm peb yam tseem ceeb:

  1. Tsis siv neeg tso cov xauv xauv (raws li cov yuam sij tas sij hawm): Cov yuam sij thaum kawg yuav muaj dua los siv rau cov xauv.
  2. Qhov tseeb tias cov neeg siv khoom feem ntau sib pab los ntawm kev tshem cov xauv thaum lub xauv qhov xav tau tsis tau txais, lossis tau txais thiab txoj haujlwm tiav; yog li nws yuav zoo li peb yuav tsis tas tos cov yuam sij kom tas sij hawm kom rov tau txais lub xauv.
  3. Qhov tseeb tias thaum tus neeg siv khoom xav tau rov ua dua kom tau txais lub xauv, nws tos lub sijhawm sib piv ntev dua li lub sijhawm xav tau kom tau txais cov xauv feem ntau. Qhov no txo ​​qhov muaj feem ntawm qhov teeb meem ntawm lub hlwb sib cais tshwm sim thaum sib tw rau cov peev txheej.

Txawm li cas los xij, muaj qhov raug nplua sib npaug rau TTL ntawm ntu ntu, yog li yog tias muaj cov ntu sib txuas, qhov kev nplua yuav tsis muaj qhov kawg. Qhov no tshwm sim thaum twg tus neeg siv khoom tau txais lub xauv thiab tom qab ntawd rips tawm mus rau lwm ntu ua ntej nws tuaj yeem tso nws.

Hauv txoj ntsiab cai, muab cov ntu sib txuas sib txuas tsis kawg, lub kaw lus tuaj yeem nyob tsis muaj nyob rau lub sijhawm tsis kawg.

Kev ua tau zoo, tsis ua haujlwm thiab fsync

Ntau tus neeg siv Redis vim tias lawv xav tau kev ua haujlwm siab ntawm cov neeg rau zaub mov hauv cov ntsiab lus ntawm latency xav tau kom tau txais thiab tso cov xauv, thiab tus naj npawb ntawm kev yuav khoom / tso tawm uas tuaj yeem ua tiav ib ob. Yuav kom ua tau raws li qhov yuav tsum tau muaj, muaj lub tswv yim sib txuas lus nrog N Redis servers kom txo qis latency. Qhov no yog ib lub tswv yim multiplexing (los yog "tus txiv neej pluag multiplexing", qhov twg lub qhov (socket) muab tso rau hauv tsis-thaiv hom, xa tag nrho cov lus txib, thiab nyeem cov lus txib tom qab, piv txwv tias lub sij hawm mus ncig ntawm tus neeg siv khoom thiab txhua qhov piv txwv zoo sib xws) .

Txawm li cas los xij, peb kuj yuav tsum tau coj mus rau hauv tus account qhov kev txiav txim siab cuam tshuam nrog kev khaws cov ntaub ntawv mus sij hawm ntev yog tias peb siv zog los tsim cov qauv nrog txhim khu kev qha rov qab los ntawm kev ua tsis tiav.

Yeej, kom paub meej qhov teeb meem, cia peb xav tias peb teeb tsa Redis tsis muaj cov ntaub ntawv khaws cia ntev ntev. Tus neeg siv khoom tswj hwm los thaiv 3 ntawm 5 qhov xwm txheej. Ib qho piv txwv uas tus neeg siv tau tswj hwm los thaiv yog rov pib dua, thiab tam sim no muaj 3 zaus ntxiv rau tib qhov kev pab cuam, uas peb tuaj yeem thaiv, thiab lwm tus neeg siv tau, tig, thaiv qhov rov pib dua, ua txhaum txoj cai ruaj ntseg uas assumes exclusivity ntawm locks.

Yog tias koj qhib cov ntaub ntawv ua ntej (AOF), qhov xwm txheej yuav zoo dua me ntsis. Piv txwv li, koj tuaj yeem txhawb nqa lub server los ntawm kev xa cov lus txib SHUTDOWN thiab rov pib dua. Txij li thaum lub sijhawm ua haujlwm tas sijhawm hauv Redis tau ua raws li kev ua haujlwm zoo li lub sijhawm txuas ntxiv mus txawm tias thaum lub server raug kaw, tag nrho peb cov kev xav tau zoo. Qhov no yog qhov qub yog tias qhov kev kaw ib txwm muaj tseeb. Yuav ua li cas thaum muaj hluav taws xob? Yog tias Redis tau teeb tsa los ntawm lub neej ntawd, nrog fsync synchronizing ntawm disk txhua thib ob, tom qab rov pib dua peb yuav tsis muaj peb tus yuam sij. Txoj kev xav, yog tias peb xav kom lav qhov kev ruaj ntseg xauv thaum lub sijhawm pib dua, peb yuav tsum ua kom tau fsync=always nyob rau hauv cov chaw rau cov ntaub ntawv mus ntev cia. Qhov no yuav tua tag nrho cov kev ua tau zoo, nqis mus rau theem ntawm CP systems uas ib txwm siv los ua kom ruaj ntseg siv cov xauv xauv.

Tab sis qhov teeb meem no zoo dua li nws zoo li thaum xub thawj siab ib muag. Nyob rau hauv txoj cai, kev ruaj ntseg ntawm lub algorithm yog khaws cia vim hais tias thaum lub sij hawm rov pib dua tom qab ib tug tsis ua hauj lwm, nws yuav tsis koom nyob rau hauv ib tug xauv uas yog tam sim no ua hauj lwm.

Txhawm rau ua kom qhov no, peb tsuas yog yuav tsum xyuas kom meej tias tom qab qhov ua tsis tiav qhov piv txwv tseem tsis muaj nyob rau lub sijhawm me ntsis tshaj qhov siab tshaj TTL uas peb siv. Txoj kev no peb yuav tos txog hnub tas sij hawm thiab tso tawm tsis siv neeg ntawm txhua tus yuam sij uas tau ua haujlwm thaum lub sijhawm ua tsis tiav.

Siv ncua kev rov pib dua, nws yog nyob rau hauv txoj cai muaj peev xwm ua tiav kev ruaj ntseg txawm tias tsis muaj kev pheej hmoo mus ntev hauv Redis. Nco ntsoov, txawm li cas los xij, tias qhov no yuav ua rau raug nplua rau kev ua txhaum cai nkag. Piv txwv li, yog tias feem ntau ntawm cov xwm txheej ua tsis tiav, lub kaw lus yuav dhau los ua lub ntiaj teb tsis muaj rau TTL (thiab tsis muaj peev txheej tuaj yeem thaiv lub sijhawm no).

Peb nce qhov muaj ntawm cov algorithm: peb txuas ntxiv kev thaiv

Yog tias cov haujlwm ua los ntawm cov neeg siv khoom muaj cov kauj ruam me me, nws muaj peev xwm txo qis lub sijhawm xauv lub sijhawm thiab siv cov txheej txheem txuas ntxiv rau cov xauv. Raws li txoj cai, yog tias tus neeg siv khoom tsis khoom siv thiab tus nqi xauv lub sij hawm tas sij hawm yog qhov txaus ntshai tsawg, koj tuaj yeem xa tsab ntawv Lua rau txhua zaus uas txuas TTL ntawm tus yuam sij yog tus yuam sij tseem muaj thiab nws tus nqi tseem yog tus nqi random tau txais thaum lub xauv tau txais.

Tus neeg siv yuav tsum tsuas yog xav txog lub xauv kom tau txais dua yog tias nws tau tswj xyuas kom kaw feem ntau ntawm cov xwm txheej hauv lub sijhawm siv tau.

Muaj tseeb tiag, technically lub algorithm tsis hloov, yog li qhov siab tshaj plaws ntawm kev rov ua kom tau cov xauv yuav tsum raug txwv, txwv tsis pub cov khoom siv nkag mus yuav raug ua txhaum cai.

Tau qhov twg los: www.hab.com

Ntxiv ib saib