Glasadh air a chuairteachadh a’ cleachdadh Redis

Hi Habr!

An-diugh bidh sinn a’ toirt thugaibh eadar-theangachadh de artaigil iom-fhillte mu bhith a’ buileachadh glasadh sgaoilte a’ cleachdadh Redis agus a’ toirt cuireadh dhut bruidhinn mu na tha san amharc aig Redis mar chuspair. Mion-sgrùdadh air an algairim Redlock ann an ceist bho Martin Kleppmann, ùghdar an leabhair "Iarrtasan luchdachadh àrd", air a thoirt seachad an seo.

Tha glasadh sgaoilte na phrìomhachas glè fheumail air a chleachdadh ann an iomadh àrainneachd far am feum diofar phròiseasan obrachadh air goireasan co-roinnte ann an dòigh a tha gun chèile.

Tha grunn leabharlannan agus phuist a-muigh an sin a tha ag innse mar a chuireas tu DLM (Manaidsear Lock Sgaoilte) an gnìomh a’ cleachdadh Redis, ach tha dòigh-obrach eadar-dhealaichte aig gach leabharlann agus tha na geallaidhean a bheir iad seachad gu math lag an taca ris na ghabhas coileanadh le dealbhadh beagan nas ionnsaichte.

San artaigil seo feuchaidh sinn ri cunntas a thoirt air algairim canonical cumhach a sheallas mar a chuireas tu glasadh sgaoilte an gnìomh a’ cleachdadh Redis. Bruidhnidh sinn mu dheidhinn algorithm ris an canar Dearg-ghlas, bidh e a’ cur an gnìomh manaidsear glasaidh sgaoilte agus, nar beachd, tha an algairim seo nas sàbhailte na an dòigh-obrach àbhaisteach aon-neach. Tha sinn an dòchas gun dèan a’ choimhearsnachd mion-sgrùdadh air, gun toir iad seachad fios air ais, agus gun cleachd iad e mar thoiseach tòiseachaidh airson pròiseactan nas iom-fhillte no eile.

Gnìomhachadh

Mus gluais sinn air adhart gu tuairisgeul an algairim, bidh sinn a’ toirt seachad grunn cheanglaichean ri buileachadh deiseil. Faodaidh iad a bhith air a chleachdadh airson iomradh.

Barantasan tèarainteachd is ruigsinneachd

Tha sinn a’ dol a mhodaladh ar dealbhadh le dìreach trì togalaichean a tha sinn a’ smaoineachadh a bheir seachad na geallaidhean as ìsle a dh’ fheumar gus glasadh sgaoilte a chleachdadh gu h-èifeachdach.

  1. Seilbh tèarainteachd: Às-dùnadh co-phàirteach. Aig àm sònraichte sam bith, chan urrainn ach aon neach-dèiligidh an glas a chumail.
  2. Seilbh ri fhaighinn A: Gun ghlasan-stad. Tha e an-còmhnaidh comasach glas fhaighinn aig a’ cheann thall, eadhon ged a dh’ fhailicheas an neach-dèiligidh a ghlais an goireas no ma thig e air tìr air roinn diosc eile.
  3. Seilbh ri fhaighinn B: Fulangas Sgàineadh. Cho fad ‘s a tha a’ mhòr-chuid de nodan Redis a ’ruith, bidh e comasach dha teachdaichean glasan fhaighinn agus a leigeil ma sgaoil.

Carson nach eil buileachadh stèidhichte air ath-bheothachadh fàilligeadh gu leòr sa chùis seo
Gus tuigse fhaighinn air na tha sinn a’ dol a leasachadh, dèanamaid sgrùdadh air an t-suidheachadh làithreach leis a’ mhòr-chuid de leabharlannan glasaidh sgaoilte stèidhichte air Redis.

Is e an dòigh as sìmplidh goireas a ghlasadh a’ cleachdadh Redis gus iuchair a chruthachadh sa chùis seo. Mar as trice, bidh iuchair air a chruthachadh le beatha cuibhrichte, tha seo air a choileanadh le bhith a’ cleachdadh am feart crìochnachaidh a chaidh a thoirt seachad ann an Redis, agus mar sin luath no mall thèid an iuchair seo a leigeil ma sgaoil (seilbh 2 air an liosta againn). Nuair a dh'fheumas an neach-dèiligidh an goireas a leigeil ma sgaoil, sguabaidh e às an iuchair.

Aig a 'chiad sealladh, tha am fuasgladh seo ag obair gu math, ach tha duilgheadas ann: tha ar n-ailtireachd a' cruthachadh aon phuing fàilligeadh. Dè thachras ma dh’ fhailicheas an eisimpleir aoigheachd Redis? Leig leinn tràill a chuir ris an uairsin! Agus cleachdaidh sinn e mura h-eil am preasantair ri fhaighinn. Gu mì-fhortanach, chan eil an roghainn seo comasach. Le bhith a’ dèanamh seo, cha bhith e comasach dhuinn an togalach às-dùnadh co-phàirteach a dh’ fheumas sinn gus dèanamh cinnteach à tèarainteachd a chuir an gnìomh gu ceart, leis gu bheil ath-riochdachadh ann an Redis asyncronach.

Gu follaiseach, ann an leithid de mhodail tha suidheachadh cinnidh a 'tachairt:

  1. Bidh Cliant A a’ faighinn glas air a’ mhaighstir.
  2. Bidh am maighstir a’ fàiligeadh mus tèid an iuchair a-steach a ghluasad chun tràill.
  3. Tha an neach-leantainn air àrdachadh gu bhith na stiùiriche.
  4. Bidh Cliant B a’ faighinn glas air an aon ghoireas a tha A air a ghlasadh mu thràth. RIAGHLADH Tèarainte!

Uaireannan tha e gu tur àbhaisteach ann an suidheachaidhean sònraichte, leithid fàilligeadh, faodaidh mòran luchd-dèiligidh a 'ghlas a chumail aig an aon àm. Ann an leithid de chùisean, faodar fuasgladh stèidhichte air ath-riochdachadh a chleachdadh. Rud eile, tha sinn a’ moladh am fuasgladh a tha air a mhìneachadh san artaigil seo.

Cur an gnìomh ceart le aon eisimpleir

Mus feuch sinn ri faighinn seachad air easbhaidhean an rèiteachaidh aon-neach a tha air a mhìneachadh gu h-àrd, tuigidh sinn mar a làimhsicheas tu a’ chùis shìmplidh seo gu ceart, leis gu bheil am fuasgladh seo dligheach dha-rìribh ann an tagraidhean far a bheilear a’ gabhail ri suidheachadh cinnidh bho àm gu àm, agus cuideachd air sgàth bacadh air a tha eisimpleir singilte mar bhunait a thathas a’ cleachdadh san algairim sgaoilte a tha air a mhìneachadh an seo.

Gus glas fhaighinn, dèan seo:

SET resource_name my_random_value NX PX 30000

Bidh an àithne seo a’ stàladh iuchair a-mhàin mura h-eil e ann mu thràth (roghainn NX), le ùine dligheachd de 30000 milliseconds (roghainn PX). Tha an iuchair air a shuidheachadh gu “myrandomvalue" Feumaidh an luach seo a bhith gun samhail thar gach neach-dèiligidh agus gach iarrtas glasaidh.
Gu bunaiteach, thathas a’ cleachdadh luach air thuaiream gus a’ ghlas a leigeil ma sgaoil gu sàbhailte, le sgriobt ag innse do Redis: na thoir air falbh ach an iuchair ma tha e ann agus tha an luach a tha air a stòradh ann dìreach mar a bha dùil. Tha seo air a choileanadh leis an sgriobt Lua a leanas:

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

Tha seo cudromach gus casg a chuir air glas a tha aig neach-dèiligidh eile a thoirt air falbh. Mar eisimpleir, dh’ fhaodadh neach-dèiligidh glas fhaighinn, an uairsin a bhith glaiste ann an cuid de dh’ obair a mhaireas nas fhaide na a’ chiad ghlas (gus am bi ùine aig an iuchair a dhol a-mach), agus an uairsin thoir air falbh a’ ghlas a chuir neach-dèiligidh eile air dòigh.
Tha cleachdadh DEL sìmplidh mì-shàbhailte oir faodaidh neach-dèiligidh glas a tha aig neach-dèiligidh eile a thoirt air falbh. An coimeas ri sin, nuair a bhios tu a’ cleachdadh an sgriobt gu h-àrd, tha gach glas air a “soidhnigeadh” le sreang air thuaiream, agus mar sin chan urrainn ach an neach-dèiligidh a chuir e roimhe a thoirt air falbh.

Dè a bu chòir a bhith anns an t-sreath air thuaiream seo? Tha mi creidsinn gum bu chòir dha a bhith 20 bytes bho / dev/urandom, ach gheibh thu dòighean nas saoire gus an sreang a dhèanamh gun samhail airson na h-adhbharan agad. Mar eisimpleir, bhiodh e ceart gu leòr RC4 a shìolachadh le / dev/urandom agus an uairsin sruth meallta air thuaiream a ghineadh bhuaithe. Tha fuasgladh nas sìmplidh a’ toirt a-steach measgachadh de ùine unix ann an rùn microsecond agus ID an neach-dèiligidh; chan eil e cho tèarainte, ach is dòcha gu bheil e suas ris a’ ghnìomh anns a’ mhòr-chuid de cho-theacsan.

Canar “beatha glasaidh” ris an ùine a bhios sinn a’ cleachdadh mar thomhas de bheatha na h-iuchrach. Is e an luach seo an dà chuid an ùine mus tèid a’ ghlas a leigeil ma sgaoil gu fèin-ghluasadach agus an ùine a dh’ fheumas neach-dèiligidh gnìomhachd a chrìochnachadh mus urrainn do neach-dèiligidh eile an goireas sin a ghlasadh, gun a bhith a’ dol an aghaidh geallaidhean às-dùnadh dha chèile. Chan eil an gealltanas seo cuingealaichte ach ri uinneag ùine sònraichte, a thòisicheas bhon mhionaid a thèid a’ ghlas a cheannach.

Mar sin tha sinn air beachdachadh air dòigh mhath air glas fhaighinn agus a leigeil ma sgaoil. Tha an siostam (ma tha sinn a’ bruidhinn mu dheidhinn siostam neo-sgaoileadh anns a bheil aon eisimpleir a tha ri fhaighinn an-còmhnaidh) tèarainte. Leudaichidh sinn am bun-bheachd seo gu siostam sgaoilte, far nach eil gealltanasan mar sin againn.

Algorithm Redlock

Tha an dreach sgaoilte den algairim a’ gabhail ris gu bheil maighstirean N Redis againn. Tha na nodan sin gu tur neo-eisimeileach bho chèile, agus mar sin cha bhith sinn a’ cleachdadh ath-riochdachadh no siostam co-òrdanachaidh sam bith eile. Tha sinn mu thràth air dèiligeadh ri mar a gheibh sinn glas agus a leigeil ma sgaoil gu tèarainte air aon eisimpleir. Tha sinn den bheachd gu bheil an algairim, nuair a bhios e ag obair le aon eisimpleir, a’ cleachdadh an dòigh seo gu dìreach. Anns na h-eisimpleirean againn chuir sinn N gu 5, a tha na luach reusanta. Mar sin, feumaidh sinn maighstirean 5 Redis a chleachdadh air diofar choimpiutairean no innealan brìgheil gus dèanamh cinnteach gu bheil iad ag obair gu ìre mhòr neo-eisimeileach bho chèile.

Gus glas fhaighinn, bidh an neach-dèiligidh a ’dèanamh na gnìomhan a leanas:

  1. Faigh an ùine làithreach ann am milliseconds.
  2. Feuchaidh sinn gu leantainneach ri glas fhaighinn air a h-uile suidheachadh N, a’ cleachdadh an aon phrìomh ainm agus luachan air thuaiream anns a h-uile cùis. Ann an Ìre 2, nuair a bhios an neach-dèiligidh a’ stèidheachadh glas air stèidh gach cùis, bidh an neach-dèiligidh a’ cleachdadh dàil gus a cheannach a tha goirid gu leòr an taca ris an ùine às deidh a’ ghlas a leigeil ma sgaoil gu fèin-ghluasadach. Mar eisimpleir, ma tha an ùine bacaidh 10 diogan, dh’ fhaodadh an dàil a bhith anns an raon de ~ 5-50 milliseconds. Bidh seo a’ cur às don t-suidheachadh anns am faodadh an neach-dèiligidh fuireach air a bhacadh airson ùine mhòr a’ feuchainn ri nód Redis a dh’ fhàillig a ruighinn: mura h-eil an suidheachadh ri fhaighinn, feuchaidh sinn ri ceangal ri eisimpleir eile cho luath ‘s a ghabhas.
  3. Gus glas a ghabhail, bidh an neach-dèiligidh a’ tomhas dè an ùine a tha air a dhol seachad; Gus seo a dhèanamh, bidh e a 'toirt air falbh bhon fhìor luach ùine an stampa-ama a chaidh fhaighinn ann an ceum 1. Ma tha agus a-mhàin ma bha an neach-dèiligidh comasach air a' ghlas fhaighinn air a 'mhòr-chuid de shuidheachaidhean (co-dhiù 3), agus an ùine iomlan a thug e gu faigh a’ ghlas, nas lugha na fad a’ ghlais, thathas den bheachd gun d’ fhuaireadh a’ ghlas.
  4. Ma chaidh glas fhaighinn, thathas a’ gabhail ris gur e fad a’ ghlais an ùine glasaidh tùsail às aonais na h-ùine a chaidh seachad air a thomhas ann an ceum 3.
  5. Mura faigh an neach-dèiligidh a’ ghlas airson adhbhar air choireigin (an dàrna cuid cha b’ urrainn dha suidheachaidhean N/2+1 a ghlasadh, no ma bha fad a’ ghlais àicheil), feuchaidh e ris a h-uile suidheachadh fhuasgladh (eadhon an fheadhainn a bha e a’ smaoineachadh nach b’ urrainn dha bacadh ).

A bheil an algairim asyncronach?

Tha an algairim seo stèidhichte air a’ bharail, ged nach eil gleoc sioncronaich ann air am biodh a h-uile pròiseas ag obair, gu bheil ùine ionadail anns gach pròiseas fhathast a’ sruthadh aig timcheall air an aon astar, agus tha a’ mhearachd beag an coimeas ris an ùine iomlan às deidh a’ ghlas. air a leigeil ma sgaoil gu fèin-ghluasadach. Tha am beachd seo glè choltach ris an t-suidheachadh àbhaisteach airson coimpiutairean àbhaisteach: tha cloc ionadail aig gach coimpiutair, agus mar as trice is urrainn dhuinn cunntadh air gu bheil an eadar-dhealachadh ùine eadar diofar choimpiutairean beag.

Aig an ìre seo, feumaidh sinn ar riaghailt às-dùnadh dha chèile a dhealbhadh nas faiceallach: chan eilear a’ gealltainn às-dùnadh càch a chèile ach ma thig an neach-dèiligidh aig a bheil a’ ghlas a-mach fhad ‘s a tha a’ ghlas dligheach (an luach seo air fhaighinn ann an ceum 3), às aonais beagan ùine a bharrachd (beagan gu h-iomlan). milliseconds gus dìoladh a dhèanamh airson an eadar-dhealachadh ùine eadar pròiseasan).

Tha an artaigil inntinneach a leanas ag innse barrachd mu shiostaman mar sin a dh’ fheumas co-òrdanachadh amannan ùine: Leasan: inneal èifeachdach a tha a’ fulang le lochdan airson cunbhalachd tasgadan faidhle sgaoilte.

Feuch a-rithist air fàilligeadh

Nuair a dh’ fhailicheas neach-dèiligidh glas fhaighinn, feumaidh e feuchainn a-rithist às deidh dàil air thuaiream; tha seo air a dhèanamh gus grunn luchd-dèiligidh a dhì-shioncronachadh a tha a’ feuchainn ri glas fhaighinn air an aon ghoireas aig an aon àm (a dh’ fhaodadh leantainn gu suidheachadh “split-brain” far nach eil buannaichean ann). A bharrachd air an sin, mar as luaithe a dh’ fheuchas neach-dèiligidh ri glas fhaighinn air mòr-chuid de shuidheachaidhean Redis, is ann as cumhainge a bhios an uinneag anns am faod suidheachadh eanchainn sgoltadh tachairt (agus mar as lugha a dh’ fheumas ath-thagraidhean). Mar sin, na b’ fheàrr, bu chòir don neach-dèiligidh feuchainn ri òrdughan SET a chuir gu suidheachaidhean N aig an aon àm a’ cleachdadh ioma-fhillte.

Is fhiach a bhith mothachail an seo cho cudromach sa tha e do luchd-dèiligidh nach fhaigh a’ mhòr-chuid de ghlasan na glasan a chaidh fhaighinn (gu ìre) a leigeil ma sgaoil, gus nach fheum iad feitheamh gus an tig an iuchair gu crìch mus fhaighear a’ ghlas air a’ ghoireas a-rithist. (ged a thachras briseadh lìonra, agus ma chailleas an neach-dèiligidh conaltradh ris na suidheachaidhean Redis, feumaidh tu peanas ruigsinneachd a phàigheadh ​​​​fhad ‘s a tha thu a’ feitheamh ris an iuchair a thighinn gu crìch).

Sgaoil an glas

Is e gnìomh sìmplidh a th’ ann a bhith a’ leigeil a-mach glas a dh’ fheumas a h-uile suidheachadh fhuasgladh, ge bith a bheil coltas gu bheil an neach-dèiligidh air eisimpleir sònraichte a ghlasadh gu soirbheachail.

Beachdachaidhean tèarainteachd

A bheil an algairim sàbhailte? Feuchaidh sinn ri smaoineachadh dè a thachras ann an diofar shuidheachaidhean.

An toiseach, leig dhuinn gabhail ris gun robh an neach-dèiligidh comasach air glas fhaighinn air a 'mhòr-chuid de shuidheachaidhean. Bidh iuchair anns gach eisimpleir leis an aon bheatha dha na h-uile. Ach, chaidh gach aon de na h-iuchraichean sin a chuir a-steach aig àm eadar-dhealaichte, agus mar sin thig iad gu crìch aig amannan eadar-dhealaichte. Ach, ma chaidh a 'chiad iuchair a chuir a-steach aig àm nach eil nas miosa na T1 (an ùine a thaghas sinn mus cuir sinn fios chun a' chiad fhrithealaiche), agus chaidh an iuchair mu dheireadh a chuir a-steach aig àm nach eil nas miosa na T2 (an ùine aig an deach am freagairt fhaighinn bhon t-seirbheisiche mu dheireadh), an uairsin tha sinn misneachail gum mair a’ chiad iuchair san t-seata a thig gu crìch co-dhiù MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT. Thig a h-uile iuchair eile gu crìch nas fhaide air adhart, agus mar sin faodaidh sinn a bhith cinnteach gum bi na h-iuchraichean uile dligheach aig an aon àm airson co-dhiù an àm seo.

Rè na h-ùine a bhios a’ mhòr-chuid de na h-iuchraichean dligheach, cha bhith e comasach do neach-dèiligidh eile a’ ghlas fhaighinn, leis nach urrainn dha gnìomhachd N/2+1 SET NX soirbheachadh ma tha iuchraichean N/2+1 ann mu thràth. Mar sin, aon uair ‘s gu bheil glas air fhaighinn, tha e do-dhèanta a cheannach a-rithist aig an aon àm (bhiodh seo a’ briseadh an t-seilbh às-dùnadh dha chèile).
Ach, tha sinn airson dèanamh cinnteach nach urrainn dha grunn luchd-dèiligidh a tha a’ feuchainn ri glas fhaighinn aig an aon àm soirbheachadh aig an aon àm.

Ma tha an neach-dèiligidh air a’ mhòr-chuid de shuidheachaidhean a ghlasadh airson timcheall air no barrachd na an ùine glasaidh as àirde, beachdaichidh e gu bheil a’ ghlas neo-dhligheach agus fosgail e na suidheachaidhean. Mar sin, chan fheum sinn ach aire a thoirt don chùis far an deach aig an neach-dèiligidh air a’ mhòr-chuid de chùisean a bhacadh ann an ùine nas lugha na an ceann-latha crìochnachaidh. Anns a 'chùis seo, a thaobh na h-argamaid gu h-àrd, rè na h-ùine MIN_VALIDITY cha bu chòir do neach-dèiligidh sam bith a bhith comasach air a’ ghlas fhaighinn air ais. Mar sin, bidh e comasach dha mòran de luchd-dèiligidh suidheachaidhean N/2+1 a ghlasadh san aon ùine (a thig gu crìch aig deireadh ìre 2) dìreach nuair a bha an ùine airson a’ mhòr-chuid a ghlasadh nas motha na an ùine TTL, a tha a’ fàgail a’ ghlas neo-dhligheach.

An urrainn dhut dearbhadh foirmeil air tèarainteachd a thoirt seachad, algorithms coltach ri seo a chomharrachadh, no bug a lorg anns na tha gu h-àrd?

Beachdachaidhean mu Ruigsinneachd

Tha cothrom air siostam an urra ri trì prìomh fheartan:

  1. Sgaoil glasan gu fèin-ghluasadach (mar a thig na h-iuchraichean gu crìch): Bidh iuchraichean rim faighinn a-rithist mu dheireadh airson an cleachdadh airson glasan.
  2. Leis gu bheil luchd-dèiligidh mar as trice a 'cuideachadh a chèile le bhith a' toirt air falbh glasan nuair nach eil a 'ghlas a tha a dhìth air fhaighinn, no air fhaighinn agus an obair air a chrìochnachadh; mar sin tha e coltach nach fheum sinn feitheamh gus an tig na h-iuchraichean gu crìch gus a’ ghlas fhaighinn air ais.
  3. Leis an fhìrinn, nuair a dh'fheumas neach-dèiligidh feuchainn ri glas fhaighinn a-rithist, bidh e a 'feitheamh airson ùine gu math nas fhaide na an ùine a dh' fheumar gus a 'mhòr-chuid de ghlasan fhaighinn. Tha seo a’ lùghdachadh an coltas gum bi suidheachadh eanchainn roinnte ag èirigh nuair a bhios iad a’ farpais airson goireasan.

Ach, tha peanas ruigsinneachd co-ionann ris an TTL de na roinnean lìonra, mar sin ma tha earrannan faisg air làimh, dh’ fhaodadh gum bi am peanas neo-chinnteach. Bidh seo a’ tachairt nuair a gheibh neach-dèiligidh glas agus an uairsin reubadh e gu roinn eile mus urrainn dha a leigeil ma sgaoil.

Ann am prionnsapal, le roinnean lìonra gun chrìoch, faodaidh siostam fuireach gun a bhith ri fhaighinn airson ùine gun chrìoch.

Coileanadh, failover agus fsync

Bidh mòran dhaoine a’ cleachdadh Redis leis gu bheil feum aca air coileanadh frithealaiche glasaidh àrd a thaobh an ùine a dh’ fheumar gus glasan fhaighinn agus a leigeil ma sgaoil, agus an àireamh de cheannach / fuasglaidh a dh’ fhaodar a chrìochnachadh gach diog. Gus coinneachadh ris an riatanas seo, tha ro-innleachd ann airson conaltradh le frithealaichean N Redis gus latency a lughdachadh. Is e ro-innleachd ioma-fhillte a tha seo (no “iomadachadh an duine bhochd”, far a bheil an socaid air a chuir ann am modh neo-bacadh, a’ cur a h-uile òrdugh, agus a’ leughadh na h-òrdughan nas fhaide air adhart, a’ gabhail ris gu bheil an ùine cuairt cruinn eadar an neach-dèiligidh agus gach suidheachadh coltach ri chèile) .

Ach, feumaidh sinn cuideachd aire a thoirt don bheachdachadh co-cheangailte ri stòradh dàta san fhad-ùine ma nì sinn ar dìcheall modal a chruthachadh le ath-bheothachadh earbsach bho fhàilligidhean.

Gu bunaiteach, gus a ’chùis a shoilleireachadh, gabhamaid ris gu bheil sinn a’ rèiteachadh Redis gun stòradh dàta fad-ùine idir. Bidh an neach-dèiligidh a’ riaghladh 3 a-mach à 5 cùisean a bhacadh. Is e aon de na cùisean a fhuair an neach-dèiligidh bacadh air ath-thòiseachadh, agus aig an àm seo tha 3 suidheachaidhean ann a-rithist airson an aon ghoireas, as urrainn dhuinn a bhacadh, agus faodaidh neach-dèiligidh eile, an uair sin, casg a chuir air an t-suidheachadh ath-thòiseachadh, a’ briseadh an t-seilbh tèarainteachd a tha a 'gabhail ris gu bheil glasan a-mhàin.

Ma bheir thu comas dàta air thoiseach (AOF), thig piseach air an t-suidheachadh beagan. Mar eisimpleir, faodaidh tu frithealaiche a bhrosnachadh le bhith a’ cur an àithne SHUTDOWN agus ga ath-thòiseachadh. Leis gu bheil gnìomhachd crìochnachaidh ann an Redis air an cur an gnìomh gu semantach ann an dòigh is gum bi ùine a’ sruthadh eadhon nuair a thèid an frithealaiche a chuir dheth, tha na riatanasan againn uile ceart gu leòr. Tha seo àbhaisteach fhad ‘s a tha dùnadh àbhaisteach air a dhèanamh cinnteach. Dè a nì thu ma tha briseadh cumhachd ann? Ma tha Redis air a rèiteachadh gu bunaiteach, le fsync a’ sioncronadh air diosc gach diog, tha e comasach às deidh ath-thòiseachadh nach bi an iuchair againn. Gu teòiridheach, ma tha sinn airson tèarainteachd glasaidh a ghealltainn aig àm sam bith ath-thòiseachadh, bu chòir dhuinn a chomasachadh fsync=always anns na roghainnean airson stòradh dàta fad-ùine. Marbhaidh seo coileanadh gu tur, sìos gu ìre nan siostaman CP a thathas a’ cleachdadh gu traidiseanta gus glasan sgaoilte a chuir an gnìomh gu tèarainte.

Ach tha an suidheachadh nas fheàrr na tha e coltach aig a’ chiad sealladh. Ann am prionnsabal, tha tèarainteachd an algairim air a ghleidheadh ​​​​oir nuair a thèid an t-eisimpleir ath-thòiseachadh an dèidh fàilligeadh, chan eil e a-nis a 'gabhail pàirt ann an glas sam bith a tha gnìomhach an-dràsta.

Gus seo a dhèanamh cinnteach, feumaidh sinn dèanamh cinnteach às deidh fàiligeadh nach eil an eisimpleir fhathast ri fhaighinn airson ùine beagan nas àirde na an TTL as àirde a bhios sinn a’ cleachdadh. San dòigh seo fuirichidh sinn gus an tig an ceann-latha gu crìch agus gun tèid na h-iuchraichean uile a bha gnìomhach aig àm fàiligeadh a leigeil ma sgaoil gu fèin-ghluasadach.

Le bhith a’ cleachdadh dàil ath-thòiseachadh, tha e comasach ann am prionnsapal tèarainteachd a choileanadh eadhon às aonais seasmhachd fad-ùine ann an Redis. Thoir an aire, ge-tà, gum faodadh seo leantainn gu càin airson a bhith a’ briseadh ruigsinneachd. Mar eisimpleir, ma dh’ fhailicheas a’ mhòr-chuid de shuidheachaidhean, cha bhi an siostam ri fhaighinn air feadh na cruinne airson an TTL (agus chan urrainnear goireas sam bith a bhacadh rè na h-ùine seo).

Bidh sinn a’ meudachadh na tha ri fhaighinn den algairim: bidh sinn a’ leudachadh a’ bhacaidh

Ma tha an obair a nì luchd-dèiligidh air a dhèanamh suas de cheumannan beaga, tha e comasach an ùine glasaidh àbhaisteach a lughdachadh agus inneal a chuir an gnìomh airson glasan a leudachadh. Ann am prionnsapal, ma tha an neach-dèiligidh trang coimpiutaireachd agus gu bheil luach crìochnachaidh glas cunnartach ìosal, faodaidh tu sgriobt Lua a chuir chun a h-uile suidheachadh a leudaicheas TTL na h-iuchrach ma tha an iuchair ann fhathast agus tha a luach fhathast na luach air thuaiream a gheibhear nuair a tha an iuchair chaidh glas fhaighinn.

Cha bu chòir do neach-dèiligidh beachdachadh air glas fhaighinn air ais ach ma chaidh aige air a’ mhòr-chuid de chùisean a ghlasadh taobh a-staigh na h-ùine dligheachd.

Fìor, gu teicneòlach chan eil an algairim ag atharrachadh, agus mar sin feumaidh an àireamh as motha de dh’ oidhirpean gus glasan fhaighinn a bhith cuibhrichte, air neo thèid na togalaichean ruigsinneachd a bhriseadh.

Source: www.habr.com

Cuir beachd ann