Poukisa ou ta ka bezwen replikasyon semi-synchrone?

Bonjou tout moun. Vladislav Rodin an kontak. Kounye a mwen anseye kou sou Achitekti lojisyèl ak Achitekti lojisyèl ki gen gwo estrès nan OTUS. Nan patisipe nan kòmansman an nan yon kouran nouvo kou "Achitek gwo chaj" Mwen deside ekri yon ti moso materyèl orijinal ke mwen vle pataje avèk ou.

Poukisa ou ta ka bezwen replikasyon semi-synchrone?

Entwodiksyon

Akòz lefèt ke HDD a ka sèlman fè apeprè 400-700 operasyon pou chak segonn (ki se enkonparab ak rps tipik sou yon sistèm gwo chaj), baz done a disk klasik se kou boutèy la nan achitekti a. Se poutèt sa, li nesesè yo peye atansyon espesyal nan modèl yo dekale nan depo sa a.

Kounye a, gen 2 modèl echèl baz done: replikasyon ak sharding. Sharding pèmèt ou echèl operasyon ekriti a epi, kòm yon rezilta, diminye rps yo pou chak ekri pou chak sèvè nan gwoup ou a. Replikasyon pèmèt ou fè menm bagay la, men ak operasyon lekti. Li se modèl sa a ke atik sa a se konsakre nan.

Replikasyon

Si ou gade nan replikasyon nan yon nivo trè wo, li se yon bagay ki senp: ou te gen yon sèl sèvè, te gen done sou li, ak Lè sa a, sèvè sa a pa t 'kapab fè fas ak chaj la nan lekti done sa yo. Ou ajoute yon koup plis sèvè, senkronize done atravè tout sèvè, epi itilizatè a ka li nan nenpòt sèvè nan gwoup ou a.

Malgre senplisite aparan li yo, gen plizyè opsyon pou klase plizyè aplikasyon konplo sa a:

  • Pa wòl nan gwoup la (mèt-mèt oswa mèt-esklav)
  • Pa objè yo voye (ki baze sou ranje, ki baze sou deklarasyon oswa melanje)
  • Dapre mekanis nan senkronizasyon ne

Jodi a nou pral fè fas ak pwen 3.

Ki jan yon tranzaksyon komèt rive?

Sijè sa a pa dirèkteman gen rapò ak replikasyon; yon atik separe ka ekri sou li, men kòm plis lekti pa itil san konprann mekanis komèt tranzaksyon an, kite m fè w sonje bagay ki pi fondamantal yo. Yon angajman tranzaksyon fèt nan 3 etap:

  1. Anrejistre yon tranzaksyon nan boutèy demi lit baz done a.
  2. Sèvi ak yon tranzaksyon nan yon motè baz done.
  3. Retounen konfimasyon bay kliyan an ke tranzaksyon an te aplike avèk siksè.

Nan baz done diferan, algorithm sa a ka gen nuans: pou egzanp, nan motè InnoDB nan baz done a MySQL gen 2 mòso bwa: youn pou replikasyon (log binè), ak lòt la pou kenbe ACID (defèt / refè log), pandan y ap nan PostgreSQL. gen yon sèl boutèy demi lit ki fè tou de fonksyon (write ahead log = WAL). Men, sa ki prezante pi wo a se jisteman konsèp jeneral la, ki pèmèt nuans sa yo pa dwe pran an kont.

Synchrone (sync) replikasyon

Ann ajoute lojik pou repwodui chanjman yo resevwa nan algorithm komèt tranzaksyon an:

  1. Anrejistre yon tranzaksyon nan boutèy demi lit baz done a.
  2. Sèvi ak yon tranzaksyon nan yon motè baz done.
  3. Voye done nan tout kopi.
  4. Resevwa konfimasyon nan tout kopi ke yon tranzaksyon te konplete sou yo.
  5. Retounen konfimasyon bay kliyan an ke tranzaksyon an te aplike avèk siksè.

Avèk apwòch sa a nou jwenn yon kantite dezavantaj:

  • kliyan an ap tann chanjman yo aplike nan tout kopi.
  • kòm kantite nœuds nan gwoup la ogmante, nou diminye chans pou operasyon ekri a ap reyisi.

Si tout bagay se plis oswa mwens klè ak pwen an 1, Lè sa a, rezon ki fè yo pou pwen 2yèm lan vo eksplike. Si pandan replikasyon synchrone nou pa resevwa yon repons nan omwen yon nod, nou refè tranzaksyon an. Kidonk, lè w ogmante kantite nœuds nan gwoup la, ou ogmante chans pou yon operasyon ekriti echwe.

Èske nou ka tann pou konfimasyon nan sèlman yon sèten pousantaj nan nœuds, pou egzanp, soti nan 51% (kowòm)? Wi, nou kapab, men nan vèsyon klasik la, konfimasyon nan tout nœuds obligatwa, paske sa a se ki jan nou ka asire konsistans done konplè nan gwoup la, ki se yon avantaj san dout nan kalite sa a replikasyon.

Asynchrone (async) replikasyon

Ann modifye algorithm anvan an. Nou pral voye done nan kopi yo "yon moman pita", epi "yon moman pita" chanjman yo pral aplike nan kopi yo:

  1. Anrejistre yon tranzaksyon nan boutèy demi lit baz done a.
  2. Sèvi ak yon tranzaksyon nan yon motè baz done.
  3. Retounen konfimasyon bay kliyan an ke tranzaksyon an te aplike avèk siksè.
  4. Voye done nan kopi epi aplike chanjman nan yo.

Apwòch sa a mennen nan lefèt ke gwoup la ap travay byen vit, paske nou pa kenbe kliyan an ap tann pou done yo rive nan kopi yo e menm pran angajman.

Men, kondisyon jete done yo sou kopi "yon moman pita" ka mennen nan pèt la nan yon tranzaksyon, ak nan pèt la nan yon tranzaksyon konfime pa itilizatè a, paske si done yo pa t 'gen tan yo dwe repwodui, yon konfimasyon bay kliyan an. sou siksè nan operasyon an te voye, ak ne nan ki chanjman yo te rive fè aksidan HDD, nou pèdi tranzaksyon an, ki ka mennen nan konsekans trè dezagreyab.

Semisync replikasyon

Finalman nou rive nan replikasyon semi-synchrone. Sa a kalite replikasyon pa trè byen li te ye oswa trè komen, men li se yon enterè konsiderab paske li ka konbine avantaj ki genyen nan tou de replikasyon synchrone ak asynchrone.

Ann eseye konbine 2 apwòch anvan yo. Nou pa pral kenbe kliyan an pou lontan, men nou pral mande pou done yo repwodui:

  1. Anrejistre yon tranzaksyon nan boutèy demi lit baz done a.
  2. Sèvi ak yon tranzaksyon nan yon motè baz done.
  3. Voye done nan kopi.
  4. Resevwa konfimasyon nan kopi a ke chanjman yo te resevwa (yo pral aplike "yon moman pita").
  5. Retounen konfimasyon bay kliyan an ke tranzaksyon an te aplike avèk siksè.

Tanpri sonje ke ak algorithm sa a, pèt tranzaksyon an fèt sèlman si tou de ne k ap resevwa chanjman yo ak ne kopi a echwe. Pwobabilite pou yon echèk sa yo konsidere kòm ba, epi yo aksepte risk sa yo.

Men, ak apwòch sa a gen yon risk posib pou lekti fantom. Ann imajine senaryo sa a: nan etap 4, nou pa t resevwa konfimasyon nan men okenn kopi. Nou dwe retounen tranzaksyon sa a epi nou pa retounen yon konfimasyon bay kliyan an. Depi done yo te aplike nan etap 2, gen yon espas tan ant fen etap 2 a ak rollback nan tranzaksyon an, pandan ki tranzaksyon paralèl yo ka wè chanjman ki pa ta dwe nan baz done a.

Pèdi-mwens replikasyon semisync

Si ou panse yon ti kras, ou ka jis ranvèse etap sa yo nan algorithm la epi ranje pwoblèm nan nan lekti fantom nan senaryo sa a:

  1. Anrejistre yon tranzaksyon nan boutèy demi lit baz done a.
  2. Voye kopi done.
  3. Resevwa konfimasyon nan kopi a ke chanjman yo te resevwa (yo pral aplike "yon moman pita").
  4. Sèvi ak yon tranzaksyon nan yon motè baz done.
  5. Retounen konfimasyon bay kliyan an ke tranzaksyon an te aplike avèk siksè.

Koulye a, nou komèt chanjman sèlman si yo te repwodui.

Sòti

Kòm toujou, pa gen okenn solisyon ideyal; gen yon seri solisyon, chak nan yo ki gen pwòp avantaj ak dezavantaj li yo epi li apwopriye pou rezoud diferan klas pwoblèm. Sa a se absoliman vre pou chwazi yon mekanis pou senkronize done nan yon baz done replike. Ansanm avantaj ke replikasyon semi-synchrone genyen ase solid e enteresan ke li ka konsidere kòm merite atansyon, malgre prévalence ki ba li yo.

Se tout. Na wè nan kou!

Sous: www.habr.com

Add nouvo kòmantè