Kungani ungase udinge ukuphindaphinda okungama-synchronous?

Sanibonani nonke. UVladislav Rodin uyaxhumana. Njengamanje ngifundisa izifundo ze-Software Architecture kanye ne-High-Stress Software Architecture e-OTUS. Ngokulindele ukuqala kokusakaza kwesifundo esisha "I-High Load Architect" Nginqume ukubhala ucezu olufushane lwento yokuqala engifuna ukwabelana ngayo nawe.

Kungani ungase udinge ukuphindaphinda okungama-synchronous?

Isingeniso

Ngenxa yokuthi i-HDD ingenza kuphela imisebenzi engaba ngu-400-700 ngomzuzwana (okungenakuqhathaniswa nama-rps ajwayelekile wesistimu yomthwalo ophezulu), i-database yediski yakudala iyibhodlela lezakhiwo. Ngakho-ke, kuyadingeka ukunaka ngokukhethekile amaphethini wokukala alesi sitoreji.

Njengamanje, kunamaphethini wokukala wesizindalwazi esi-2: ukuphindaphinda nokuhlukanisa. Ukwabelana kukuvumela ukuthi ulinganise umsebenzi wokubhala, futhi, ngenxa yalokho, wehlise ama-rps ngokubhala ngakunye ngeseva kuqoqo lakho. Ukuphindaphinda kukuvumela ukuthi wenze into efanayo, kodwa ngokusebenza kokufunda. Yile phethini lesi sihloko esinikezelwe kuso.

ukuphindaphinda

Uma ubheka ukuphindaphinda ezingeni eliphezulu kakhulu, kuyinto elula: ubuneseva eyodwa, kwakukhona idatha kuyo, bese le seva ingasakwazi ukubhekana nomthwalo wokufunda le datha. Ungeza amanye amaseva ambalwa, uvumelanise idatha kuwo wonke amaseva, futhi umsebenzisi angafunda kunoma iyiphi iseva kuqoqo lakho.

Naphezu kokubonakala kwawo kulula, kunezinketho eziningi zokuhlukanisa ukuqaliswa okuhlukahlukene kwalolu hlelo:

  • Ngezindima kuqoqo (master-master noma master-slave)
  • Ngezinto ezithunyelwe (kususelwa kumugqa, kususelwa kusitatimende noma okuxutshiwe)
  • Ngokusho kwendlela yokuvumelanisa yenodi

Namuhla sizobhekana nephuzu lesi-3.

Kwenzeka kanjani ukwenza umsebenzi?

Lesi sihloko asihlobene ngokuqondile nokuphindaphinda; indatshana ehlukile ingabhalwa kuso, kodwa njengoba ukufunda okwengeziwe kungenamsebenzi ngaphandle kokuqonda indlela yokwenza umsebenzi, ake nginikhumbuze ngezinto eziyisisekelo. Isibopho sokuthenga senzeka ngezigaba ezi-3:

  1. Ukufaka umsebenzi kulogi yesizindalwazi.
  2. Ukusebenzisa okwenziwayo enjini yedathabheyisi.
  3. Ibuyisela isiqinisekiso kuklayenti sokuthi umsebenzi usetshenziswe ngempumelelo.

Ezinqolobaneni zolwazi ezihlukene, le-algorithm ingase ibe nama-nuances: isibonelo, enjinini ye-InnoDB yesizindalwazi se-MySQL kukhona izingodo ezi-2: eyodwa eyokuphindaphinda (ilogi kanambambili), kanti enye elokugcina i-ACID (hlehlisa/redo log), ngenkathi iku-PostgreSQL. kunelogi eyodwa eyenza imisebenzi yomibili (bhala ilogi yangaphambili = WAL). Kodwa lokho okwethulwe ngenhla kuwumqondo ojwayelekile, ovumela ukuthi ama-nuances anjalo anganakwa.

Ukuphindaphinda okuvumelanayo (ukuvumelanisa).

Ake sengeze okunengqondo ukuze siphindaphinde izinguquko ezitholiwe ku-algorithm yokwenza umsebenzi:

  1. Ukufaka umsebenzi kulogi yesizindalwazi.
  2. Ukusebenzisa okwenziwayo enjini yedathabheyisi.
  3. Ithumela idatha kuzo zonke izifaniso.
  4. Ukuthola isiqinisekiso kuzo zonke izifaniso zokuthi umsebenzi usuqediwe kuzo.
  5. Ibuyisela isiqinisekiso kuklayenti sokuthi umsebenzi usetshenziswe ngempumelelo.

Ngale ndlela sithola inani lokungalungi:

  • iklayenti lilinda ukuthi izinguquko zisetshenziswe kuzo zonke izifaniso.
  • njengoba inani lamanodi kuqoqo likhula, sinciphisa amathuba okuthi umsebenzi wokubhala uzophumelela.

Uma konke kucace kakhulu ngephuzu le-1, khona-ke izizathu zephuzu lesi-2 zifanelekile ukuchaza. Uma ngesikhathi sokuphindaphinda okuvumelanayo singayitholi impendulo okungenani eyinodi eyodwa, sibuyisela emuva okwenziwayo. Ngakho-ke, ngokwandisa inani lamanodi kuqoqo, wandisa amathuba okuthi umsebenzi wokubhala uzohluleka.

Singalinda ukuqinisekiswa okuvela kumaphesenti athile kuphela amanodi, isibonelo, ukusuka ku-51% (ikhoramu)? Yebo, singakwazi, kodwa kunguqulo yakudala, ukuqinisekiswa okuvela kuwo wonke ama-node kuyadingeka, ngoba yile ndlela esingaqinisekisa ngayo ukuvumelana okuphelele kwedatha ku-cluster, okuyinzuzo engangabazeki yalolu hlobo lokuphindaphinda.

Ukuphindaphinda okungavumelani (async).

Masiguqule i-algorithm edlule. Sizothumela idatha kuma-replicas "esikhathini esithile kamuva", futhi "ngesinye isikhathi kamuva" izinguquko zizosetshenziswa kuzifaniso:

  1. Ukufaka umsebenzi kulogi yesizindalwazi.
  2. Ukusebenzisa okwenziwayo enjini yedathabheyisi.
  3. Ibuyisela isiqinisekiso kuklayenti sokuthi umsebenzi usetshenziswe ngempumelelo.
  4. Ukuthumela idatha kuma-replicas nokusebenzisa izinguquko kuzo.

Le ndlela iholela eqinisweni lokuthi iqoqo lisebenza ngokushesha, ngoba asiligcini iklayenti lilinde idatha ukuthi ifinyelele kuma-replicas futhi ngisho nokuzibophezela.

Kodwa isimo sokulahla idatha kuma-replicas "esikhathini esithile kamuva" singaholela ekulahlekelweni komsebenzi, kanye nokulahlekelwa umsebenzi oqinisekiswe umsebenzisi, ngoba uma idatha ingenaso isikhathi sokuphindaphinda, isiqinisekiso kuklayenti. mayelana nempumelelo yokusebenza kwathunyelwa, futhi i-node lapho izinguquko zafika khona i-HDD, silahlekelwa ukuthengiselana, okungaholela emiphumeleni engathandeki kakhulu.

Ukuphindaphinda kwe-Semisync

Ekugcineni sifinyelela ekuphindaphindeni okulinganayo. Lolu hlobo lokuphindaphinda alwaziwa kahle kakhulu noma lujwayelekile kakhulu, kodwa lunentshisekelo enkulu ngoba lungahlanganisa izinzuzo zokuphindaphinda okuvumelanayo nokungavumelani.

Ake sizame ukuhlanganisa izindlela ezi-2 ezedlule. Ngeke sigcine iklayenti isikhathi eside, kodwa sizodinga ukuthi idatha iphindwe:

  1. Ukufaka umsebenzi kulogi yesizindalwazi.
  2. Ukusebenzisa okwenziwayo enjini yedathabheyisi.
  3. Ithumela idatha kuma-replicas.
  4. Ukuthola isiqinisekiso esifanekisweni sokuthi izinguquko zamukelwe (zizosetshenziswa “ngesikhathi esithile kamuva”).
  5. Ibuyisela isiqinisekiso kuklayenti sokuthi umsebenzi usetshenziswe ngempumelelo.

Sicela uqaphele ukuthi ngale algorithm, ukulahleka kokwenziwe kwenzeka kuphela uma kokubili i-nodi ethola izinguquko ne-replica node kwehluleka. Amathuba okwehluleka okunjalo abhekwa njengaphansi, futhi lezi zingozi ziyamukelwa.

Kodwa ngale ndlela kukhona ingozi engenzeka yokufundwa kwe-phantom. Ake sicabange ngesimo esilandelayo: esinyathelweni sesi-4, asizange sithole isiqinisekiso kunoma iyiphi ikhophi. Kufanele sibuyisele emuva lokhu okwenziwayo futhi singabuyiseli isiqinisekiso kuklayenti. Njengoba idatha isetshenziswe esinyathelweni sesi-2, kunegebe lesikhathi phakathi kokuphela kwesinyathelo sesi-2 kanye nokubuyiselwa emuva komsebenzi, lapho ukuthengiselana okuhambisanayo kungabona izinguquko okungafanele zibe kusizindalwazi.

Ukuphindaphinda kwe-semisync okulahlekelwa kancane

Uma ucabanga kancane, ungavele uhlehlise izinyathelo ze-algorithm futhi ulungise inkinga yokufundwa kwe-phantom kulesi simo:

  1. Ukufaka umsebenzi kulogi yesizindalwazi.
  2. Ithumela idatha ye-replica.
  3. Ukuthola isiqinisekiso esifanekisweni sokuthi izinguquko zamukelwe (zizosetshenziswa “ngesikhathi esithile kamuva”).
  4. Ukusebenzisa okwenziwayo enjini yedathabheyisi.
  5. Ibuyisela isiqinisekiso kuklayenti sokuthi umsebenzi usetshenziswe ngempumelelo.

Manje senza izinguquko kuphela uma seziphinde zaphindwa.

isiphetho

Njengenjwayelo, azikho izixazululo ezifanele; kunesethi yezixazululo, ngayinye enezinzuzo zayo kanye nebubi bayo futhi ifanele ukuxazulula izigaba ezahlukene zezinkinga. Lokhu kuyiqiniso ngokuphelele ekukhetheni indlela yokuvumelanisa idatha kusizindalwazi esiyimpinda. Isethi yezinzuzo ukuphindaphinda kwe-semi-synchronous enazo kuqine ngokwanele futhi kuyathakazelisa ukuthi kungabhekwa njengokufanele ukunakwa, naphezu kokuvama kwayo okuphansi.

Yilokho kuphela. Sobonana kwa inkambo!

Source: www.habr.com

Engeza amazwana