Ki jan yo gade nan je Cassandra san yo pa pèdi done, estabilite ak lafwa nan NoSQL

Ki jan yo gade nan je Cassandra san yo pa pèdi done, estabilite ak lafwa nan NoSQL

Yo di ke tout bagay nan lavi a vo eseye omwen yon fwa. Men, si ou abitye travay ak DBMS relasyon, Lè sa a, li vo fè konesans ak NoSQL nan pratik, premye a tout moun, omwen pou devlopman jeneral. Koulye a, akòz devlopman rapid nan teknoloji sa a, gen yon anpil nan opinyon konfli ak deba chofe sou sijè sa a, ki espesyalman gaz enterè.
Si ou fouye nan sans nan tout diskisyon sa yo, ou ka wè ke yo leve akòz apwòch la mal. Moun ki sèvi ak baz done NoSQL egzakteman kote yo bezwen yo satisfè epi resevwa tout avantaj ki genyen nan solisyon sa a. Ak eksperimantè ki konte sou teknoloji sa a kòm yon mirak kote li pa aplikab ditou yo wont, yo te pèdi fòs yo nan baz done relasyon san yo pa jwenn benefis enpòtan.

Mwen pral pale w sou eksperyans nou nan enplemante yon solisyon ki baze sou Cassandra DBMS la: kisa nou te gen pou fè fas a, ki jan nou te soti nan sitiyasyon difisil, si nou te kapab benefisye nan itilize NoSQL ak ki kote nou te oblije envesti plis efò/lajan. .
Travay inisyal la se bati yon sistèm ki anrejistre apèl nan kèk kalite depo.

Prensip fonksyònman sistèm lan se jan sa a. Antre a gen ladan dosye ki gen yon estrikti espesifik ki dekri estrikti apèl la. Lè sa a, aplikasyon an asire ke estrikti sa a estoke nan kolòn ki apwopriye yo. Nan lavni an, apèl yo sove yo itilize yo montre enfòmasyon sou konsomasyon trafik pou abonnés (chaj, apèl, istwa balans).

Ki jan yo gade nan je Cassandra san yo pa pèdi done, estabilite ak lafwa nan NoSQL

Li byen klè poukisa yo te chwazi Cassandra - li ekri tankou yon mitray, se fasil évolutive, ak fay-toleran.

Se konsa, sa a se sa eksperyans te ban nou

Wi, yon ne echwe se pa yon trajedi. Sa a se sans nan tolerans fòt Cassandra a. Men yon ne ka vivan epi an menm tan an kòmanse soufri nan pèfòmans. Kòm li te tounen soti, sa a imedyatman afekte pèfòmans nan tout gwoup la.

Cassandra p ap pwoteje w kote Oracle te sove w ak kontrent li yo. Men, si otè aplikasyon an pa t 'konprann sa a davans, Lè sa a, doub ki te rive pou Cassandra pa pi mal pase orijinal la. Yon fwa li rive, nou pral mete l 'nan.

IB te pa renmen Cassandra gratis ki soti nan bwat la: Pa gen okenn antre nan aksyon itilizatè, pa gen okenn diferansyasyon nan dwa. Enfòmasyon sou apèl yo konsidere kòm done pèsonèl, ki vle di ke tout tantativ pou mande/chanje li nan nenpòt fason yo dwe konekte ak posibilite pou odit ki vin apre. Epitou, ou bezwen konsyan de bezwen separe dwa nan diferan nivo pou itilizatè diferan. Yon enjenyè operasyon senp ak yon super admin ki ka efase tout espas kle a se diferan wòl, responsablite diferan, ak konpetans. San diferansyasyon dwa aksè sa yo, valè ak entegrite done yo pral imedyatman vin nan kesyon pi vit pase ak nenpòt nivo konsistans.

Nou pa t 'pran an kont ke apèl yo mande tou de analiz serye ak echantiyon peryodik pou yon varyete kondisyon. Depi dosye yo chwazi yo sipoze efase ak reekri (kòm yon pati nan travay la, nou dwe sipòte pwosesis la aktyalizasyon done lè done yo okòmansman antre nan bouk nou an mal), Cassandra se pa zanmi nou isit la. Cassandra se tankou yon bank pigi - li bon pou mete bagay sa yo, men ou pa ka konte ladan l.

Nou te rankontre yon pwoblèm transfere done nan zòn tès yo (5 nœuds nan tès la kont 20 nan bal la). Nan ka sa a, pil fatra a pa ka itilize.

Pwoblèm nan ak ajou done chema nan yon aplikasyon ekri Cassandra. Rollback pral jenere yon gwo pil tonb, ki ka mennen nan pèt pwodiktivite nan fason enprevizib.. Cassandra optimize pou anrejistreman, epi li pa panse anpil anvan ekri.Nenpòt operasyon ki gen done ki deja egziste ladan l se tou yon anrejistreman. Sa vle di, lè nou efase sa ki pa nesesè, nou pral tou senpleman pwodwi menm plis dosye, epi sèlman kèk nan yo pral make ak wòch tonb.

Delè lè w ap mete. Cassandra bèl nan anrejistreman an, men pafwa koule a fèk ap rantre ka siyifikativman devinèt li. Sa rive lè aplikasyon an kòmanse sikile nan plizyè dosye ki pa ka mete pou kèk rezon. Epi nou pral bezwen yon DBA reyèl ki pral kontwole gc.log, sistèm ak debogaj mòso bwa pou demann dousman, mezi sou konpaksyon annatant.

Plizyè sant done nan yon gwoup. Ki kote pou li epi ki kote pou ekri?
Petèt divize an lekti ak ekri? Men, si se konsa, ta dwe gen yon DC ki pi pre aplikasyon an pou ekri oswa lekti? Epi nou p ap fini ak yon sèvo fann reyèl si nou chwazi nivo konsistans mal? Gen yon anpil nan kesyon, yon anpil nan anviwònman enkoni, posiblite ke ou reyèlman vle brikole ak.

Ki jan nou te deside

Pou anpeche ne a koule, SWAP te enfim. Epi, koulye a, si gen yon mank de memwa, ne a ta dwe desann epi yo pa kreye gwo poz gc.

Se konsa, nou pa konte sou lojik nan baz done a. Devlopè aplikasyon yo ap antrene tèt yo epi yo kòmanse aktivman pran prekosyon nan pwòp kòd pa yo. Ideyal separasyon klè nan depo done ak pwosesis.

Nou te achte sipò nan men DataStax. Devlopman nan bwat Cassandra deja sispann (dènye angajman an te nan mwa fevriye 2018). An menm tan an, Datastax ofri sèvis ekselan ak yon gwo kantite solisyon modifye ak adapte pou solisyon IP ki deja egziste.

Mwen vle tou sonje ke Cassandra pa trè pratik pou demann seleksyon. Natirèlman, CQL se yon gwo etap pi devan pou itilizatè yo (konpare ak Trift). Men, si ou gen tout depatman ki abitye rantre pratik sa yo, filtraj gratis pa nenpòt jaden ak kapasite optimize rechèch, ak depatman sa yo ap travay pou rezoud plent ak aksidan, Lè sa a, solisyon an sou Cassandra sanble ostil ak estipid yo. Epi nou te kòmanse deside ki jan kòlèg nou yo ta dwe fè echantiyon.

Nou konsidere de opsyon.Nan premye opsyon, nou ekri apèl pa sèlman nan C*, men tou nan baz done achiv Oracle. Sèlman, kontrèman ak C*, baz done sa a estoke apèl sèlman pou mwa aktyèl la (ase pwofondè depo apèl pou ka rechaje). Isit la nou imedyatman wè pwoblèm sa a: si nou ekri synchrone, Lè sa a, nou pèdi tout avantaj ki genyen nan C * ki asosye ak ensèsyon rapid; si nou ekri asynchrone, pa gen okenn garanti ke tout apèl ki nesesè yo te antre nan Oracle ditou. Te gen yon sèl plis, men yon gwo: pou operasyon menm PL/SQL Developer abitye rete, sa vle di nou pratikman aplike modèl "Facade" la. Yon opsyon altènatif. Nou aplike yon mekanis ki dechaje apèl ki soti nan C*, rale kèk done pou anrichisman soti nan tab korespondan yo nan Oracle, rantre nan echantiyon yo ki kapab lakòz yo epi li ba nou rezilta a, ki nou Lè sa a, yon jan kanmenm itilize (woule tounen, repete, analize, admire). Dezavantaj: pwosesis la se byen milti-etap, epi anplis, pa gen okenn koòdone pou anplwaye operasyon yo.

Nan fen a, nou rezoud sou dezyèm opsyon an. Apache Spark te itilize pou echantiyon nan diferan krich. Te sans nan mekanis la te redwi a Java kòd, ki, lè l sèvi avèk kle yo espesifye (abònen, tan nan apèl - kle seksyon), rale soti done ki soti nan C *, osi byen ke done ki nesesè pou anrichisman nan nenpòt ki lòt baz done. Apre sa, li rantre nan yo nan memwa li yo epi li montre rezilta a nan tablo a ki kapab lakòz. Nou te trase yon figi entènèt sou etensèl la epi li te byen ka itilize.

Ki jan yo gade nan je Cassandra san yo pa pèdi done, estabilite ak lafwa nan NoSQL

Lè rezoud pwoblèm nan aktyalizasyon done tès endistriyèl yo, nou ankò konsidere plizyè solisyon. Tou de transfere atravè Sstloader ak opsyon pou divize gwoup la nan zòn tès la an de pati, chak nan yo ki altènativman fè pati gwoup la menm ak youn nan pwomosyon, kidonk yo te Powered by li. Lè mete ajou tès la, li te planifye pou swap yo: pati ki te travay nan tès la otorize ak antre nan pwodiksyon, ak lòt la kòmanse travay ak done yo separeman. Sepandan, apre yo fin reflechi ankò, nou plis rasyonèl evalye done yo ki te vo transfere, ak reyalize ke apèl yo tèt yo se yon antite enkonsistan pou tès yo, byen vit pwodwi si sa nesesè, epi li se seri a done pwomosyon ki pa gen okenn valè pou transfere nan la. tès. Gen plizyè objè depo ki vo deplase, men sa yo se literalman yon koup nan tab, epi yo pa trè lou. Se poutèt sa nou kòm yon solisyon, Spark ankò te vin pote sekou, avèk èd nan ki nou te ekri epi yo te kòmanse aktivman sèvi ak yon script pou transfere done ant tab, bal-tès.

Règleman aktyèl deplwaman nou an pèmèt nou travay san rollback. Anvan promo a, gen yon tès obligatwa kouri, kote yon erè pa tèlman chè. Nan ka echèk, ou ka toujou lage kasespace a epi woule tout konplo a depi nan konmansman an.

Pou asire disponiblite kontinyèl Cassandra, ou bezwen yon dba epi li pa sèlman li. Tout moun ki travay ak aplikasyon an dwe konprann ki kote ak ki jan yo gade nan sitiyasyon aktyèl la ak ki jan yo dyagnostike pwoblèm nan yon fason apwopriye. Pou fè sa, nou aktivman itilize DataStax OpsCenter (Administrasyon ak siveyans chaj travay), metriz sistèm Cassandra Driver (kantite delè pou ekri nan C*, kantite delè pou lekti nan C*, latansi maksimòm, elatriye), kontwole operasyon an. nan aplikasyon an li menm, k ap travay ak Cassandra.

Lè nou te reflechi sou kesyon anvan an, nou te reyalize kote risk prensipal nou an ta ka kouche. Sa yo se fòm ekspozisyon done ki montre done ki sòti nan plizyè demann endepandan nan depo a. Nan fason sa a nou ka jwenn enfòmasyon byen konsistan. Men, pwoblèm sa a ta menm enpòtan si nou te travay ak yon sèl sant done. Se konsa, bagay ki pi rezonab isit la se, nan kou, yo kreye yon fonksyon pakèt pou lekti done sou yon aplikasyon twazyèm pati, ki pral asire ke done yo resevwa nan yon sèl peryòd de tan. Kòm pou divizyon an nan lekti ak ekri an tèm de pèfòmans, isit la nou te sispann pa risk pou ke ak kèk pèt koneksyon ant DC yo, nou ta ka fini ak de grap ki konplètman enkonsistan youn ak lòt.

Kòm yon rezilta, pou kounye a sispann nan nivo konsistans pou ekri EACH_QUORUM, pou lekti - LOCAL_QUORUM

Enpresyon kout ak konklizyon

Yo nan lòd yo evalye solisyon an ki kapab lakòz soti nan pwen de vi nan sipò operasyonèl ak kandida pou plis devlopman, nou deside reflechi sou ki lòt kote yon devlopman sa yo ta ka aplike.

Tousuit, Lè sa a, done nòt pou pwogram tankou "Peye lè li bon" (nou chaje enfòmasyon nan C*, kalkil lè l sèvi avèk scripts Spark), kontablite pou reklamasyon ak agrégation pa zòn, estoke wòl ak kalkile dwa aksè itilizatè ki baze sou wòl la. matris.

Kòm ou ka wè, repètwa a se lajè ak varye. Men, si nou chwazi kan sipòtè / opozan NoSQL, Lè sa a, nou pral rantre nan sipòtè yo, depi nou te resevwa avantaj nou yo, ak egzakteman ki kote nou te espere.

Menm opsyon Cassandra soti nan bwat la pèmèt dekale orizontal nan tan reyèl, absoliman san doulè rezoud pwoblèm nan nan ogmante done nan sistèm nan. Nou te kapab deplase yon mekanis trè wo-chaj pou kalkile total apèl nan yon sikwi separe, epi tou separe chema aplikasyon an ak lojik, debarase m de move pratik nan ekri travay koutim ak objè nan baz done a tèt li. Nou te gen opòtinite pou chwazi ak konfigirasyon, akselere, ki DC nou pral fè kalkil sou yo ak sa yo ki nou pral anrejistre done sou, nou asire tèt nou kont aksidan nan tou de nœuds endividyèl ak DC a kòm yon antye.

Aplike achitekti nou an nan nouvo pwojè, ak deja gen kèk eksperyans, mwen ta renmen imedyatman pran an kont nuans ki dekri pi wo a, ak anpeche kèk erè, lis kèk kwen byen file ki pa t 'kapab evite okòmansman.

Pou egzanp, kenbe tras de dènye Cassandra yo nan yon fason apwopriyepaske anpil nan pwoblèm nou te resevwa yo te deja konnen epi yo te fikse.

Pa mete tou de baz done a tèt li ak Spark sou nœuds yo menm (oswa estrikteman divize pa kantite itilizasyon resous akseptab), depi Spark ka manje plis OP pase espere, epi nou pral byen vit jwenn pwoblèm nimewo 1 nan lis nou an.

Amelyore siveyans ak konpetans operasyonèl nan etap tès pwojè a. Okòmansman, pran an kont otank posib tout konsomatè potansyèl nan solisyon nou an, paske se sa estrikti baz done a pral finalman depann sou.

Wotasyon sikwi ki kapab lakòz plizyè fwa pou optimize posib. Chwazi ki jaden yo ka serialize. Konprann ki tab adisyonèl nou ta dwe fè yo nan lòd yo pran an kont ki pi kòrèkteman ak pi bon, epi Lè sa a, bay enfòmasyon ki nesesè yo sou demann (pa egzanp, lè nou sipoze ke nou ka estoke menm done yo nan tab diferan, pran an kont pann diferan selon nan kritè diferan, nou ka sove siyifikativman CPU tan pou demann li).

Pa move Imedyatman bay pou atache TTL ak netwaye done demode.

Lè w ap telechaje done ki soti nan Cassandra Lojik aplikasyon an ta dwe travay sou prensip FETCH la, pou se pa tout ranje yo chaje nan memwa alafwa, men yo chwazi nan lo.

Li rekòmande anvan transfere pwojè a nan solisyon ki dekri a tcheke tolerans fay sistèm nan lè w fè yon seri tès aksidan, tankou pèt done nan yon sant done, restorasyon nan done domaje sou yon sèten peryòd, abandon rezo ant sant done. Tès sa yo pa pral sèlman pèmèt yon moun evalye avantaj ak dezavantaj nan achitekti yo pwopoze a, men yo pral bay tou bon pratik chofe pou enjenyè yo ap fè yo, ak konpetans akeri yo pral lwen soti nan initil si echèk sistèm yo repwodui nan pwodiksyon an.

Si nou travay ak enfòmasyon kritik (tankou done pou bòdwo, kalkil dèt abònen), Lè sa a, li vo tou peye atansyon sou zouti ki pral diminye risk ki rive akòz karakteristik yo nan DBMS la. Pou egzanp, sèvi ak sèvis piblik la nodesync (Datastax), li te devlope yon estrateji optimal pou itilize li yo nan lòd pou dedomajman pou la konsistans, pa kreye yon chaj twòp sou Cassandra epi sèvi ak li sèlman pou sèten tab nan yon sèten peryòd.

Kisa k ap pase Cassandra apre sis mwa nan lavi? An jeneral, pa gen okenn pwoblèm ki pako rezoud. Nou menm tou nou pa t pèmèt okenn aksidan grav oswa pèt done. Wi, nou te oblije reflechi sou konpansasyon pou kèk pwoblèm ki pa te parèt anvan, men nan fen a sa a pa t 'nombre anpil solisyon achitekti nou an. Si ou vle epi yo pa bezwen pè eseye yon bagay nouvo, epi an menm tan an pa vle twò wont, Lè sa a, pare pou lefèt ke pa gen anyen ki gratis. Ou pral gen konprann, fouye nan dokiman an ak rasanble pwòp rato endividyèl ou a plis pase nan solisyon an eritaj fin vye granmoun, epi pa gen okenn teyori pral di ou davans ki rato ap tann pou ou.

Sous: www.habr.com

Add nouvo kòmantè