Kif tħares f'għajnejn Cassandra mingħajr ma titlef id-dejta, l-istabbiltà u l-fidi fin-NoSQL

Kif tħares f'għajnejn Cassandra mingħajr ma titlef id-dejta, l-istabbiltà u l-fidi fin-NoSQL

Jgħidu li kollox fil-ħajja ta’ min jipprova mill-inqas darba. U jekk inti mdorri taħdem ma 'DBMSs relazzjonali, allura ta' min jiffamiljarizzaw ruħhom ma 'NoSQL fil-prattika, l-ewwelnett, għall-inqas għall-iżvilupp ġenerali. Issa, minħabba l-iżvilupp mgħaġġel ta 'din it-teknoloġija, hemm ħafna opinjonijiet konfliġġenti u dibattiti jaħarqu dwar dan is-suġġett, li speċjalment iqajjem interess.
Jekk tidħol fis-essenza ta 'dawn it-tilwim kollu, tista' tara li jinqalgħu minħabba l-approċċ ħażin. Dawk li jużaw databases NoSQL eżattament fejn huma meħtieġa huma sodisfatti u jirċievu l-vantaġġi kollha minn din is-soluzzjoni. U l-esperimentaturi li jiddependu fuq din it-teknoloġija bħala rimedju fejn ma tapplika xejn huma diżappuntati, billi tilfu l-qawwiet tad-databases relazzjonali mingħajr ma jiksbu benefiċċji sinifikanti.

Ngħidlek l-esperjenza tagħna fl-implimentazzjoni ta’ soluzzjoni bbażata fuq il-Cassandra DBMS: dak li kellna niffaċċjaw, kif ħriġna minn sitwazzjonijiet diffiċli, jekk stajniex nibbenefikaw mill-użu ta’ NoSQL u fejn kellna ninvestu sforzi/fondi addizzjonali. .
Il-kompitu inizjali huwa li tinbena sistema li tirreġistra sejħiet f'xi tip ta 'ħażna.

Il-prinċipju operattiv tas-sistema huwa kif ġej. L-input jinkludi fajls bi struttura speċifika li tiddeskrivi l-istruttura tas-sejħa. L-applikazzjoni mbagħad tiżgura li din l-istruttura tinħażen fil-kolonni xierqa. Fil-futur, it-telefonati ssejvjati jintużaw biex juru informazzjoni dwar il-konsum tat-traffiku għall-abbonati (ħlasijiet, sejħiet, storja tal-bilanċ).

Kif tħares f'għajnejn Cassandra mingħajr ma titlef id-dejta, l-istabbiltà u l-fidi fin-NoSQL

Huwa pjuttost ċar għaliex għażlu lil Cassandra - tikteb bħal machine gun, hija faċilment skalabbli, u tolleranti għall-ħsarat.

Allura, dan huwa dak li tatna l-esperjenza

Iva, nodu fallut mhuwiex traġedja. Din hija l-essenza tat-tolleranza għal ħtija ta' Cassandra. Iżda node jista 'jkun ħaj u fl-istess ħin jibda jbati fil-prestazzjoni. Kif irriżulta, dan immedjatament jaffettwa l-prestazzjoni tal-cluster kollu.

Cassandra mhux se tipproteġik fejn Oracle salvak bir-restrizzjonijiet tagħha. U jekk l-awtur tal-applikazzjoni ma fehemx dan minn qabel, allura d-doppju li wasal għal Cassandra ma jkunx agħar mill-oriġinal. Ladarba tasal, indaħħluha.

IB ma għoġbitx ħafna lil Cassandra ħielsa barra mill-kaxxa: M'hemm l-ebda logging tal-azzjonijiet tal-utent, l-ebda differenzjazzjoni tad-drittijiet. L-informazzjoni dwar is-sejħiet hija meqjusa bħala dejta personali, li jfisser li kull tentattiv biex tintalab/jinbidel b'xi mod irid jiġi rreġistrat bil-possibbiltà ta' verifika sussegwenti. Ukoll, trid tkun konxju tal-ħtieġa li tissepara d-drittijiet f'livelli differenti għal utenti differenti. Inġinier tal-operat sempliċi u super admin li jistgħu jħassru liberament il-keyspace kollu huma rwoli differenti, responsabbiltajiet differenti u kompetenzi. Mingħajr tali differenzjazzjoni tad-drittijiet ta 'aċċess, il-valur u l-integrità tad-dejta immedjatament jiġu fid-dubju aktar malajr milli bi KULL livell ta' konsistenza.

Ma qisniex li s-sejħiet jeħtieġu kemm analitika serja kif ukoll kampjunar perjodiku għal varjetà ta 'kundizzjonijiet. Peress li r-rekords magħżula mbagħad suppost jitħassru u jinkitbu mill-ġdid (bħala parti mill-kompitu, irridu nappoġġaw il-proċess ta 'aġġornament tad-dejta meta d-dejta inizjalment daħlet fil-linja tagħna b'mod żbaljat), Cassandra mhix ħabiba tagħna hawn. Cassandra hija bħal piggy bank - huwa konvenjenti li tpoġġi l-affarijiet, imma ma tistax tgħodd fiha.

Iltqajna ma' problema fit-trasferiment tad-dejta f'żoni tat-test (5 nodi fit-test kontra 20 fil-prom). F'dan il-każ, id-dump ma jistax jintuża.

Il-problema bl-aġġornament tal-iskema tad-dejta ta 'applikazzjoni li tikteb lil Cassandra. A rollback se jiġġenera ħafna tombstones, li jistgħu jwasslu għal telf ta 'produttività b'modi imprevedibbli.. Cassandra hija ottimizzata għar-reġistrazzjoni, u ma taħsibx ħafna qabel tikteb.Kull operazzjoni b'dejta eżistenti fiha hija wkoll reġistrazzjoni. Jiġifieri, billi tħassar dak li mhux meħtieġ, aħna sempliċement nipproduċu saħansitra aktar rekords, u wħud minnhom biss se jkunu mmarkati b'lapidi.

Timeouts meta ddaħħal. Cassandra hija sabiħa fir-reġistrazzjoni, iżda xi drabi l-fluss li jkun dieħel jista 'jħawwadha b'mod sinifikanti. Dan jiġri meta l-applikazzjoni tibda ċiklu madwar diversi rekords li ma jistgħux jiddaħħlu għal xi raġuni. U ser ikollna bżonn DBA reali li se jimmonitorja gc.log, is-sistema u d-debug logs għal mistoqsijiet bil-mod, metriċi dwar il-kompattazzjoni pendenti.

Diversi ċentri tad-dejta fi cluster. Minn fejn taqra u fejn tikteb?
Forsi maqsuma fil-qari u l-kitba? U jekk iva, għandu jkun hemm DC eqreb lejn l-applikazzjoni għall-kitba jew il-qari? U mhux se nispiċċaw b'moħħ maqsum reali jekk nagħżlu l-livell ta 'konsistenza ħażina? Hemm ħafna mistoqsijiet, ħafna settings mhux magħrufa, possibbiltajiet li int verament trid tinkera magħhom.

Kif iddeċidejna

Biex tevita li n-nodu jegħreq, SWAP ġie diżattivat. U issa, jekk ikun hemm nuqqas ta 'memorja, in-nodu għandu jinżel u mhux joħloq pawżi kbar tal-gc.

Allura, m'għadniex niddependu fuq il-loġika fid-database. L-iżviluppaturi tal-applikazzjoni qed iħarrġu mill-ġdid lilhom infushom u qed jibdew jieħdu prekawzjonijiet b'mod attiv fil-kodiċi tagħhom stess. Separazzjoni ċara ideali tal-ħażna u l-ipproċessar tad-data.

Xtrajna appoġġ minn DataStax. L-iżvilupp ta 'Boxed Cassandra diġà waqaf (l-aħħar impenn kien fi Frar 2018). Fl-istess ħin, Datastax joffri servizz eċċellenti u numru kbir ta 'soluzzjonijiet modifikati u adattati għal soluzzjonijiet IP eżistenti.

Irrid ninnota wkoll li Cassandra mhix konvenjenti ħafna għall-mistoqsijiet tal-għażla. Naturalment, CQL huwa pass kbir 'il quddiem għall-utenti (meta mqabbel ma' Trift). Imma jekk għandek dipartimenti sħaħ li huma mdorrijin għal tali tingħaqad konvenjenti, iffiltrar b'xejn minn kwalunkwe qasam u kapaċitajiet ta 'ottimizzazzjoni tal-mistoqsijiet, u dawn id-dipartimenti qed jaħdmu biex isolvu lmenti u inċidenti, allura s-soluzzjoni fuq Cassandra tidher ostili u stupida għalihom. U bdejna niddeċiedu kif il-kollegi tagħna għandhom jagħmlu l-kampjuni.

Aħna ikkunsidrajna żewġ għażliet.Fl-ewwel għażla, niktbu sejħiet mhux biss f'C*, iżda wkoll fid-database Oracle arkivjata. Biss, b'differenza C*, din id-database taħżen sejħiet biss għax-xahar kurrenti (fond suffiċjenti ta 'ħażna ta' sejħiet għal każijiet ta 'rikarikar). Hawnhekk immedjatament rajna l-problema li ġejja: jekk niktbu b'mod sinkroniku, allura nitilfu l-vantaġġi kollha ta 'C * assoċjati ma' inserzjoni veloċi; jekk niktbu b'mod mhux sinkroniku, m'hemm l-ebda garanzija li s-sejħiet kollha meħtieġa daħlu f'Oracle. Kien hemm żieda waħda, iżda waħda kbira: għall-operat jibqa 'l-istess Żviluppatur PL/SQL familjari, jiġifieri aħna prattikament nimplimentaw il-mudell "Faċċata". Għażla alternattiva. Aħna nimplimentaw mekkaniżmu li jħott is-sejħiet minn C*, jiġbed xi data għall-arrikkiment mit-tabelli korrispondenti f'Oracle, jingħaqad mal-kampjuni li jirriżultaw u jagħtina r-riżultat, li mbagħad nużaw b'xi mod (roll back, irrepeti, janalizzaw, nammiraw). Cons: il-proċess huwa pjuttost f'diversi stadji, u barra minn hekk, m'hemm l-ebda interface għall-impjegati tal-operazzjoni.

Fl-aħħar, issetilna fuq it-tieni għażla. Apache Spark intuża għall-kampjun minn vażetti differenti. L-essenza tal-mekkaniżmu tnaqqset għal kodiċi Java, li, bl-użu taċ-ċwievet speċifikati (abbonat, ħin tas-sejħa - ċwievet tas-sezzjoni), jiġbed data minn C *, kif ukoll id-data meħtieġa għall-arrikkiment minn kwalunkwe database oħra. Wara dan jingħaqad magħhom fil-memorja tiegħu u juri r-riżultat fit-tabella li tirriżulta. Ġibna wiċċ tal-web fuq l-ispark u rriżulta pjuttost użabbli.

Kif tħares f'għajnejn Cassandra mingħajr ma titlef id-dejta, l-istabbiltà u l-fidi fin-NoSQL

Meta ssolvi l-problema tal-aġġornament tad-dejta tat-test industrijali, erġajna ikkunsidrajna diversi soluzzjonijiet. Kemm it-trasferiment permezz ta 'Sstloader kif ukoll l-għażla li l-cluster fiż-żona tat-test jinqasam f'żewġ partijiet, li kull waħda minnhom alternattivament tappartjeni għall-istess cluster ma' dik promozzjonali, u b'hekk titħaddem minnha. Meta taġġorna t-test, kien ippjanat li jiġu skambjati: il-parti li ħadmet fit-test titneħħa u tidħol fil-produzzjoni, u l-oħra tibda taħdem mad-dejta separatament. Madankollu, wara li erġajna ħsibna, ivvalutajna b'mod aktar razzjonali d-dejta li kienet ta 'min tittrasferixxi, u rrealizzajna li s-sejħiet infushom huma entità inkonsistenti għat-testijiet, iġġenerati malajr jekk meħtieġ, u huwa s-sett tad-dejta promozzjonali li m'għandu l-ebda valur għat-trasferiment għall- test. Hemm diversi oġġetti ta 'ħażna li ta' min jiċċaqilqu, iżda dawn huma litteralment koppja ta 'tabelli, u mhux tqal ħafna. Għalhekk aħna bħala soluzzjoni, Spark reġgħet waslet għall-salvataġġ, li bl-għajnuna tagħha ktibna u bdejna nużaw b'mod attiv skript għat-trasferiment tad-dejta bejn it-tabelli, il-prom-test.

Il-politika ta' skjerament attwali tagħna tippermettilna naħdmu mingħajr rollbacks. Qabel il-promo, hemm test run obbligatorju, fejn żball mhux daqshekk għali. F'każ ta' falliment, tista' dejjem twaqqa' l-casspace u tirrombla l-iskema kollha mill-bidu.

Biex tiżgura disponibbiltà kontinwa ta 'Cassandra, għandek bżonn dba u mhux lilu biss. Kull min jaħdem bl-applikazzjoni għandu jifhem fejn u kif iħares lejn is-sitwazzjoni attwali u kif jiddijanjostika l-problemi fil-ħin. Biex nagħmlu dan, nużaw b'mod attiv DataStax OpsCenter (Amministrazzjoni u monitoraġġ tal-piżijiet tax-xogħol), metriċi tas-sistema Cassandra Driver (numru ta 'timeouts għall-kitba f'C*, numru ta' timeouts għall-qari minn C *, latency massima, eċċ.), jimmonitorjaw l-operazzjoni tal-applikazzjoni nnifisha, taħdem ma Cassandra.

Meta ħsibna dwar il-mistoqsija ta’ qabel, indunajna fejn jista’ jinsab ir-riskju ewlieni tagħna. Dawn huma forom tal-wiri tad-dejta li juru d-dejta minn diversi mistoqsijiet indipendenti għall-ħażna. Dan il-mod nistgħu niksbu informazzjoni pjuttost inkonsistenti. Iżda din il-problema tkun daqstant rilevanti jekk naħdmu ma 'ċentru tad-dejta wieħed biss. Allura l-iktar ħaġa raġonevoli hawnhekk hija, ovvjament, li tinħoloq funzjoni tal-lott għall-qari tad-dejta fuq applikazzjoni ta 'parti terza, li tiżgura li d-dejta tiġi riċevuta f'perjodu wieħed ta' żmien. Fir-rigward tad-diviżjoni fil-qari u l-kitba f’termini ta’ prestazzjoni, hawn twaqqafna mir-riskju li b’xi telf ta’ konnessjoni bejn id-DCs, nistgħu nispiċċaw b’żewġ clusters li huma kompletament inkonsistenti ma’ xulxin.

Bħala riżultat, għalissa waqaf fil-livell ta' konsistenza għall-kitba EACH_QUORUM, għall-qari - LOCAL_QUORUM

Impressjonijiet u konklużjonijiet qosra

Sabiex nevalwaw is-soluzzjoni li tirriżulta mill-perspettiva ta 'appoġġ operattiv u prospetti għal aktar żvilupp, iddeċidejna li naħsbu dwar fejn ieħor jista' jiġi applikat tali żvilupp.

Dritt mill-ewwel, imbagħad punteġġ tad-dejta għal programmi bħal "Ħlas meta jkun konvenjenti" (aħna ngħabbew l-informazzjoni f'C*, kalkolu bl-użu ta' skripts Spark), kontabilizzazzjoni għal talbiet b'aggregazzjoni skont iż-żona, ħażna ta' rwoli u kalkolu tad-drittijiet tal-aċċess tal-utent ibbażati fuq ir-rwol matriċi.

Kif tistgħu taraw, ir-repertorju huwa wiesa’ u varjat. U jekk nagħżlu l-kamp ta 'partitarji/avversarji ta' NoSQL, allura aħna se ningħaqdu mal-partitarji, peress li rċevejna l-vantaġġi tagħna, u eżattament fejn stennejna.

Anke l-għażla Cassandra barra mill-kaxxa tippermetti skalar orizzontali f'ħin reali, issolvi assolutament bla tbatija l-kwistjoni taż-żieda tad-dejta fis-sistema. Konna kapaċi nimxu mekkaniżmu ta 'tagħbija għolja ħafna għall-kalkolu tal-aggregati tas-sejħiet f'ċirkwit separat, u wkoll jisseparaw l-iskema tal-applikazzjoni u l-loġika, u neħilsu mill-prattika ħażina tal-kitba ta' impjiegi u oġġetti tad-dwana fid-database nnifisha. Sibna l-opportunità li nagħżlu u kkonfigurat, biex nħaffu, liema DCs se nwettqu kalkoli fuqhom u dwar liema se nirreġistraw id-dejta, assigurajna lilna nfusna kontra ħabtiet kemm ta 'nodi individwali kif ukoll tad-DC kollu kemm hu.

Meta napplikaw l-arkitettura tagħna għal proġetti ġodda, u diġà għandi xi esperjenza, nixtieq immedjatament nikkunsidra l-sfumaturi deskritti hawn fuq, u nipprevjeni xi żbalji, twitti xi kantunieri qawwija li ma setgħux jiġu evitati inizjalment.

Per eżempju, żomm kont tal-aġġornamenti ta’ Cassandra fil-ħingħax pjuttost ftit mill-problemi li ltqajna kienu diġà magħrufa u ffissati.

Tpoġġix kemm id-database nnifisha kif ukoll Spark fuq l-istess nodi (jew jaqsam b'mod strett bl-ammont ta 'użu tar-riżorsi permess), peress li Spark jista' jiekol aktar OP milli mistenni, u malajr se nġibu l-problema numru 1 mil-lista tagħna.

Ittejjeb il-monitoraġġ u l-kompetenza operattiva fl-istadju tal-ittestjar tal-proġett. Inizjalment, ikkunsidra kemm jista 'jkun il-konsumaturi potenzjali kollha tas-soluzzjoni tagħna, għaliex dan huwa dak li l-istruttura tad-database fl-aħħar mill-aħħar se tiddependi fuq.

Dawwar iċ-ċirkwit li jirriżulta diversi drabi għal ottimizzazzjoni possibbli. Agħżel liema oqsma jistgħu jiġu serialized. Ifhem liema tabelli addizzjonali għandna nagħmlu sabiex nqisu bl-aktar mod korrett u ottimali, u mbagħad ipprovdi l-informazzjoni meħtieġa fuq talba (pereżempju, billi nassumu li nistgħu naħżnu l-istess data f’tabelli differenti, filwaqt li nqisu tqassim differenti skont kriterji differenti, nistgħu niffrankaw b'mod sinifikanti l-ħin tas-CPU għal talbiet ta 'qari).

Mhux ħażin Immedjatament ipprovdi għat-twaħħil ta 'TTL u t-tindif ta' data skaduta.

Meta tniżżel dejta minn Cassandra Il-loġika tal-applikazzjoni għandha taħdem fuq il-prinċipju FETCH, sabiex mhux ir-ringieli kollha jiġu mgħobbija fil-memorja f'daqqa, iżda jintgħażlu f'lottijiet.

Huwa rakkomandabbli qabel ma tittrasferixxi l-proġett għas-soluzzjoni deskritta iċċekkja t-tolleranza tal-ħsarat tas-sistema billi twettaq serje ta 'testijiet tal-ħabta, bħal telf ta 'data f'ċentru tad-data wieħed, restawr ta' data bil-ħsara fuq ċertu perjodu, abbandun tan-netwerk bejn ċentri tad-data. Testijiet bħal dawn mhux biss jippermettu li wieħed jevalwa l-vantaġġi u l-iżvantaġġi tal-arkitettura proposta, iżda wkoll se jipprovdu prattika tajba ta 'warm-up għall-inġiniera li jmexxuhom, u l-ħila miksuba tkun 'il bogħod milli superfluwa jekk il-fallimenti tas-sistema jiġu riprodotti fil-produzzjoni.

Jekk naħdmu b'informazzjoni kritika (bħal dejta għall-kontijiet, kalkolu tad-dejn tal-abbonat), allura ta 'min nagħtu attenzjoni wkoll għal għodod li jnaqqsu r-riskji li jinqalgħu minħabba l-karatteristiċi tad-DBMS. Per eżempju, uża l-utilità nodesync (Datastax), wara li żviluppa strateġija ottima għall-użu tagħha fl-ordni għal raġunijiet ta 'konsistenza, ma toħloqx tagħbija eċċessiva fuq Cassandra u użaha biss għal ċerti tabelli f'ċertu perjodu.

X'jiġri minn Cassandra wara sitt xhur ħajja? B'mod ġenerali, m'hemm l-ebda problemi mhux solvuti. Aħna wkoll ma ppermettewx xi inċidenti serji jew telf ta 'dejta. Iva, kellna naħsbu biex nikkumpensaw għal xi problemi li ma kinux inqalgħu qabel, iżda fl-aħħar mill-aħħar dan ma xxekkelx ħafna s-soluzzjoni arkitettonika tagħna. Jekk trid u ma tibżax tipprova xi ħaġa ġdida, u fl-istess ħin ma tridx tkun wisq diżappuntat, imbagħad lesti għall-fatt li xejn mhu b'xejn. Int ser ikollok tifhem, tidħol fid-dokumentazzjoni u tgħaqqad ir-rake individwali tiegħek stess aktar milli fis-soluzzjoni tal-wirt l-antik, u l-ebda teorija ma tgħidlek minn qabel liema rake qed jistennik.

Sors: www.habr.com

Żid kumment