Giunsa pagtan-aw ang mga mata ni Cassandra nga wala mawala ang datos, kalig-on ug pagtuo sa NoSQL

Giunsa pagtan-aw ang mga mata ni Cassandra nga wala mawala ang datos, kalig-on ug pagtuo sa NoSQL

Giingon nila nga ang tanan sa kinabuhi takus nga sulayan bisan kausa. Ug kung naanad ka sa pagtrabaho kauban ang mga relational nga DBMS, nan kini angay nga pamilyar sa NoSQL sa praktis, una sa tanan, labing menos alang sa kinatibuk-ang kalamboan. Karon, tungod sa paspas nga pag-uswag sa kini nga teknolohiya, adunay daghang nagkasumpaki nga mga opinyon ug mainit nga mga debate bahin sa kini nga hilisgutan, nga labi nga nagpukaw sa interes.
Kung imong susihon ang esensya sa tanan nga mga panaglalis, imong makita nga kini mitungha tungod sa sayup nga pamaagi. Kadtong naggamit sa mga database sa NoSQL kung diin sila gikinahanglan natagbaw ug nakadawat sa tanan nga mga bentaha gikan niini nga solusyon. Ug ang mga eksperimento nga nagsalig niini nga teknolohiya isip usa ka panacea diin kini dili magamit sa tanan nasagmuyo, nga nawad-an sa mga kalig-on sa relational database nga walay pag-angkon og mahinungdanon nga mga benepisyo.

Isulti ko kanimo ang bahin sa among kasinatian sa pagpatuman sa usa ka solusyon nga gibase sa Cassandra DBMS: kung unsa ang kinahanglan namon nga atubangon, kung giunsa namo paggawas sa lisud nga mga sitwasyon, kung nakabenepisyo ba kami sa paggamit sa NoSQL ug kung diin kinahanglan namon nga mamuhunan sa dugang nga mga paningkamot / pondo .
Ang inisyal nga buluhaton mao ang paghimo og sistema nga nagrekord sa mga tawag sa usa ka matang sa pagtipig.

Ang operating nga prinsipyo sa sistema mao ang mosunod. Ang input naglakip sa mga file nga adunay usa ka piho nga istruktura nga naghulagway sa istruktura sa tawag. Gisiguro sa aplikasyon nga kini nga istruktura gitipigan sa angay nga mga kolum. Sa umaabot, ang mga na-save nga tawag gigamit aron ipakita ang kasayuran sa pagkonsumo sa trapiko alang sa mga subscriber (singil, tawag, kasaysayan sa balanse).

Giunsa pagtan-aw ang mga mata ni Cassandra nga wala mawala ang datos, kalig-on ug pagtuo sa NoSQL

Klaro kaayo ngano nga ilang gipili si Cassandra - nagsulat siya sama sa usa ka machine gun, dali nga masukod, ug dili matugoton sa sayup.

Busa, kini ang gihatag kanamo sa kasinatian

Oo, ang usa ka napakyas nga node dili usa ka trahedya. Mao kini ang esensya sa pagkamatugtanon ni Cassandra. Apan ang usa ka node mahimong buhi ug sa samang higayon magsugod sa pag-antos sa performance. Ingon sa nahimo, kini nakaapekto dayon sa pasundayag sa tibuuk nga cluster.

Dili ka panalipdan ni Cassandra kung diin giluwas ka sa Oracle sa mga pagpugong niini. Ug kung ang tagsulat sa aplikasyon wala makasabut niini daan, nan ang doble nga miabut alang kang Cassandra dili mas grabe pa kay sa orihinal. Sa higayon nga kini moabut, atong ibutang kini.

Ang IB kusganong wala makagusto sa libre nga Cassandra gikan sa kahon: Walay pag-log sa mga aksyon sa user, walay pagkalahi sa mga katungod. Ang kasayuran bahin sa mga tawag gikonsiderar nga personal nga datos, nga nagpasabut nga ang tanan nga pagsulay sa paghangyo / pagbag-o niini sa bisan unsang paagi kinahanglan nga ma-log nga adunay posibilidad sa sunod nga pag-awdit. Usab, kinahanglan nimong mahibal-an ang panginahanglan sa pagbulag sa mga katungod sa lainlaing lebel alang sa lainlaing mga tiggamit. Ang usa ka yano nga inhenyero sa operasyon ug usa ka super admin nga libre nga makatangtang sa tibuuk nga keyspace lainlain nga mga tahas, lainlaing mga responsibilidad, ug mga kahanas. Kung wala ang ingon nga pagkalainlain sa mga katungod sa pag-access, ang kantidad ug integridad sa datos dali nga mapangutana nga mas paspas kaysa sa bisan unsang lebel sa pagkamakanunayon.

Wala namo tagda nga ang mga tawag nanginahanglan ug seryoso nga analytics ug periodic sampling para sa lain-laing kondisyon. Tungod kay ang mga napili nga mga rekord kinahanglan nga tangtangon ug isulat pag-usab (isip bahin sa buluhaton, kinahanglan namon nga suportahan ang proseso sa pag-update sa datos kung ang datos sa una nga pagsulod sa among loop dili husto), si Cassandra dili among higala dinhi. Si Cassandra sama sa usa ka alkansiya - sayon ​​​​nga ibutang ang mga butang, apan dili ka maihap niini.

Nakasugat mi og problema sa pagbalhin sa datos ngadto sa test zones (5 node sa test versus 20 sa prom). Sa kini nga kaso, ang dump dili magamit.

Ang problema sa pag-update sa data schema sa usa ka aplikasyon nga nagsulat sa Cassandra. Ang rollback makamugna og daghang mga lapida, nga mahimong mosangpot sa pagkawala sa produktibo sa dili matag-an nga mga paagi.. Si Cassandra gi-optimize alang sa pagrekord, ug dili kaayo maghunahuna sa wala pa isulat. Ang bisan unsang operasyon nga adunay mga datos nga anaa niini usa usab ka pagrekord. Sa ato pa, pinaagi sa pagtangtang sa wala kinahanglana, maghimo na lang kita og daghang mga rekord, ug pipila ra niini ang markahan sa mga lapida.

Mga timeout sa dihang nagsal-ot. Gwapo si Cassandra sa recording, pero usahay ang umaabot nga dagan makapalibog kaniya. Mahitabo kini kung ang aplikasyon magsugod sa paglibot sa daghang mga rekord nga dili masulud sa usa ka hinungdan. Ug magkinahanglan kita ug tinuod nga DBA nga momonitor sa gc.log, system ug debug logs para sa hinay nga mga pangutana, metrics sa compaction pending.

Daghang mga sentro sa datos sa usa ka cluster. Asa magbasa gikan ug asa magsulat?
Tingali nabahin sa pagbasa ug pagsulat? Ug kung mao, kinahanglan ba nga adunay DC nga mas duol sa aplikasyon alang sa pagsulat o pagbasa? Ug dili ba kita matapos sa usa ka tinuud nga split brain kung gipili naton ang sayup nga lebel sa pagkamakanunayon? Adunay daghang mga pangutana, daghang wala mahibal-an nga mga setting, mga posibilidad nga gusto nimo nga sulayan.

Giunsa namo pagdesisyon

Aron mapugngan ang node gikan sa pagkalunod, ang SWAP gi-disable. Ug karon, kung adunay kakulang sa memorya, ang node kinahanglan nga moubos ug dili maghimo og dagkong mga paghunong sa gc.

Busa, dili na kita magsalig sa lohika sa database. Ang mga nag-develop sa aplikasyon nagbansay pag-usab sa ilang kaugalingon ug nagsugod sa aktibong paghimo og mga panagana sa ilang kaugalingong code. Maayo nga klaro nga pagbulag sa pagtipig ug pagproseso sa datos.

Nagpalit kami og suporta gikan sa DataStax. Ang pag-uswag sa boxed Cassandra nahunong na (ang katapusang commit kaniadtong Pebrero 2018). Sa samang higayon, ang Datastax nagtanyag ug maayo kaayong serbisyo ug daghang gidaghanon sa giusab ug gipahaom nga mga solusyon alang sa kasamtangang mga solusyon sa IP.

Gusto usab nako nga timan-an nga si Cassandra dili kaayo kombenyente alang sa mga pangutana sa pagpili. Siyempre, ang CQL usa ka dako nga lakang sa unahan alang sa mga tiggamit (itandi sa Trift). Apan kung ikaw adunay tibuuk nga mga departamento nga naanad sa ingon nga dali nga pag-apil, libre nga pagsala sa bisan unsang natad ug mga kapabilidad sa pag-optimize sa pangutana, ug kini nga mga departamento nagtrabaho aron masulbad ang mga reklamo ug mga aksidente, nan ang solusyon sa Cassandra ingon kontra ug hungog alang kanila. Ug nagsugod kami sa pagdesisyon kung giunsa paghimo sa among mga kauban ang mga sampol.

Among gikonsiderar ang duha ka mga opsyon.Sa unang opsyon, nagsulat mi og mga tawag dili lang sa C*, kondili sa archive nga Oracle database. Lamang, dili sama sa C*, kini nga database tindahan sa mga tawag lamang alang sa kasamtangan nga bulan (igo nga tawag storage giladmon alang sa recharging mga kaso). Dinhi nakita dayon namo ang mosunod nga problema: kung kami magsulat nga dungan, nan mawala ang tanan nga mga bentaha sa C * nga may kalabutan sa paspas nga pagsal-ot; kung kami nagsulat nga asynchronously, wala’y garantiya nga ang tanan nga kinahanglan nga mga tawag nakuha sa Oracle. Adunay usa ka dugang, apan usa ka dako: alang sa operasyon ang parehas nga pamilyar nga PL/SQL Developer nagpabilin, ie praktikal nga gipatuman namon ang pattern nga "Facade". Usa ka alternatibo nga kapilian. Gipatuman namo ang usa ka mekanismo nga nagdiskarga sa mga tawag gikan sa C*, nagbira sa pipila ka mga datos alang sa pagpalambo gikan sa katugbang nga mga lamesa sa Oracle, nag-apil sa mga resulta nga mga sample ug naghatag kanamo sa resulta, nga among gigamit sa usa ka paagi (pagbalik, pag-usab, pag-analisar, pagdayeg). Cons: ang proseso medyo multi-step, ug dugang pa, walay interface alang sa mga empleyado sa operasyon.

Sa katapusan, nahusay namon ang ikaduha nga kapilian. Ang Apache Spark gigamit sa pag-sample gikan sa lainlaing mga tadyaw. Ang esensya sa mekanismo gikunhoran ngadto sa Java code, nga, gamit ang espesipikong mga yawe (subscriber, oras sa pagtawag - mga yawe sa seksyon), gikuha ang datos gikan sa C *, ingon man ang gikinahanglan nga datos alang sa pagpalambo gikan sa bisan unsang laing database. Human nga kini miduyog kanila sa iyang panumduman ug gipakita ang resulta sa resulta nga lamesa. Gidrowing namo ang usa ka web nga nawong sa ibabaw sa spark ug kini nahimo nga magamit.

Giunsa pagtan-aw ang mga mata ni Cassandra nga wala mawala ang datos, kalig-on ug pagtuo sa NoSQL

Kung gisulbad ang problema sa pag-update sa datos sa pagsulay sa industriya, gikonsiderar na usab namon ang daghang mga solusyon. Parehong pagbalhin pinaagi sa Sstloader ug ang kapilian sa pagbahin sa cluster sa test zone ngadto sa duha ka bahin, nga ang matag usa puli-puli nga iya sa samang cluster sa promotional, sa ingon gipadagan niini. Kung gi-update ang pagsulay, giplano nga ibaylo kini: ang bahin nga nagtrabaho sa pagsulay gilimpyohan ug gisulod sa produksiyon, ug ang lain nagsugod sa pagtrabaho sa data nga gilain. Bisan pa, pagkahuman sa paghunahuna pag-usab, mas makatarunganon namon nga gisusi ang datos nga angay ibalhin, ug nahibal-an nga ang mga tawag sa ilang kaugalingon usa ka dili managsama nga entidad alang sa mga pagsulay, dali nga nahimo kung kinahanglan, ug kini ang promosyonal nga set sa datos nga wala’y bili alang sa pagbalhin sa pagsulay. Adunay ubay-ubay nga mga butang sa pagtipig nga angayan nga ibalhin, apan kini literal nga usa ka magtiayon nga mga lamesa, ug dili kaayo bug-at. Busa kami Isip usa ka solusyon, si Spark mibalik pag-usab, uban sa tabang nga among gisulat ug nagsugod sa aktibong paggamit sa usa ka script alang sa pagbalhin sa datos tali sa mga lamesa, prom-test.

Ang among kasamtangang polisiya sa pagdeploy nagtugot kanamo sa pagtrabaho nga walay mga rollback. Sa wala pa ang promo, adunay usa ka mandatory test run, diin ang usa ka sayup dili kaayo mahal. Sa kaso sa kapakyasan, mahimo nimo kanunay ihulog ang casespace ug i-roll ang tibuuk nga laraw gikan sa sinugdanan.

Para masiguro ang padayon nga pagkaanaa ni Cassandra, kinahanglan nimo ang usa ka dba ug dili lamang siya. Ang matag usa nga nagtrabaho kauban ang aplikasyon kinahanglan nga makasabut kung diin ug kung giunsa ang pagtan-aw sa karon nga kahimtang ug kung giunsa ang pagdayagnos sa mga problema sa tukma nga panahon. Aron mahimo kini, aktibo namong gigamit ang DataStax OpsCenter (Administration ug pagmonitor sa mga workloads), Cassandra Driver system metrics (gidaghanon sa mga timeout sa pagsulat ngadto sa C*, gidaghanon sa mga timeout sa pagbasa gikan sa C*, maximum latency, ug uban pa), monitor sa operasyon sa aplikasyon mismo, nagtrabaho kauban si Cassandra.

Sa dihang gihunahuna namo ang miaging pangutana, among naamgohan kon asa ang among dakong risgo. Kini ang mga porma sa pagpakita sa datos nga nagpakita sa datos gikan sa daghang independente nga mga pangutana hangtod sa pagtipig. Niining paagiha makakuha kita ug dili managsama nga kasayuran. Apan kini nga problema mahimong parehas nga may kalabotan kung nagtrabaho kami sa usa ra ka sentro sa datos. Busa ang labing makatarunganon nga butang dinhi mao, siyempre, ang paghimo sa usa ka batch function alang sa pagbasa sa datos sa usa ka ikatulo nga partido nga aplikasyon, nga magsiguro nga ang datos madawat sa usa ka yugto sa panahon. Sama sa bahin sa pagkabahin sa pagbasa ug pagsulat sa mga termino sa pasundayag, dinhi kami gipahunong sa peligro nga sa pipila nga pagkawala sa koneksyon tali sa mga DC, mahimo naton matapos ang duha nga mga pungpong nga hingpit nga dili managsama sa usag usa.

Isip resulta, sa pagkakaron mihunong sa lebel sa pagkamakanunayon alang sa pagsulat sa EACH_QUORUM, para sa pagbasa - LOCAL_QUORUM

Mubo nga mga impresyon ug mga konklusyon

Aron sa pagtimbang-timbang sa resulta nga solusyon gikan sa punto sa panglantaw sa operational nga suporta ug mga palaaboton alang sa dugang nga kalamboan, nakahukom kami sa paghunahuna kon asa pa ang maong kalamboan mahimong magamit.

Diha-diha dayon, dayon ang pag-iskor sa datos alang sa mga programa sama sa "Bayd kung kini sayon" (atong gikarga ang impormasyon ngadto sa C*, pagkalkula gamit ang Spark scripts), pag-account sa mga pag-angkon nga adunay aggregation sa lugar, pagtipig sa mga tahas ug pagkalkula sa mga katungod sa pag-access sa user base sa papel. matris.

Sama sa imong nakita, ang repertoire kay lapad ug lainlain. Ug kung atong pilion ang kampo sa mga tigpaluyo/kaatbang sa NoSQL, nan moapil kita sa mga tigpaluyo, tungod kay nadawat nato ang atong mga bentaha, ug eksakto kung asa nato gipaabot.

Bisan ang Cassandra nga kapilian sa gawas sa kahon nagtugot sa pinahigda nga pag-scale sa tinuud nga oras, hingpit nga wala’y sakit nga pagsulbad sa isyu sa pagdugang sa datos sa sistema. Kami nakahimo sa paglihok sa usa ka taas kaayo nga load nga mekanismo alang sa pagkalkula sa mga aggregate sa tawag ngadto sa usa ka bulag nga sirkito, ug usab sa pagbulag sa aplikasyon schema ug lohika, sa pagkuha sa dili maayo nga praktis sa pagsulat custom nga mga trabaho ug mga butang diha sa database sa iyang kaugalingon. Nakahigayon kami sa pagpili ug pag-configure, aron mapadali, kung unsang mga DC ang among himuon nga mga kalkulasyon ug kung diin among irekord ang mga datos, among giseguro ang among kaugalingon batok sa mga pagbangga sa mga indibidwal nga node ug sa DC sa kinatibuk-an.

Ang pagpadapat sa among arkitektura sa mga bag-ong proyekto, ug adunay pipila ka kasinatian, gusto nako nga tagdon dayon ang mga nuances nga gihulagway sa ibabaw, ug mapugngan ang pipila ka mga kasaypanan, hapsay ang pipila ka mahait nga mga kanto nga dili malikayan sa sinugdanan.

Kay sa panig-ingnan, pagsubay sa mga update ni Cassandra sa tukma sa panahon nga paagikay medyo nahibaw-an na ug naayo na ang mga problema nga among nakuha.

Ayaw ibutang ang database mismo ug ang Spark sa parehas nga mga node (o higpit nga bahinon sa gidaghanon sa gitugot nga paggamit sa kapanguhaan), tungod kay ang Spark makakaon og mas daghan nga OP kay sa gipaabot, ug dali namong makuha ang problema numero 1 gikan sa among listahan.

Pagpauswag sa pagmonitor ug katakus sa operasyon sa yugto sa pagsulay sa proyekto. Sa sinugdan, tagda kutob sa mahimo ang tanan nga potensyal nga mga konsumedor sa among solusyon, tungod kay kini ang database nga istruktura magdepende sa katapusan.

I-rotate ang resulta nga sirkito sa makadaghang higayon para sa posibleng pag-optimize. Pilia kung unsang mga natad ang mahimong serialized. Sabta kung unsa nga mga dugang nga mga lamesa ang kinahanglan namon nga buhaton aron labing tukma ug labing maayo nga tagdon, ug dayon ihatag ang gikinahanglan nga kasayuran kung gihangyo (pananglitan, pinaagi sa paghunahuna nga mahimo naton tipigan ang parehas nga datos sa lainlaing mga lamesa, nga gikonsiderar ang lainlaing mga pagkaguba sumala sa lain-laing mga criteria, kita makadaginot sa mahinungdanon nga oras sa CPU alang sa mga hangyo sa pagbasa).

Dili daotan Diha-diha dayon paghatag alang sa paglakip sa TTL ug paglimpyo sa karaan nga datos.

Kung nag-download sa datos gikan sa Cassandra Ang lohika sa aplikasyon kinahanglan molihok sa prinsipyo sa FETCH, aron dili tanan nga mga laray makarga sa memorya sa usa ka higayon, apan gipili sa mga batch.

Kini mao ang advisable sa dili pa ibalhin ang proyekto ngadto sa gihulagway nga solusyon susiha ang fault tolerance sa sistema pinaagi sa pagpahigayon og sunod-sunod nga crash test, sama sa pagkawala sa datos sa usa ka sentro sa datos, pagpasig-uli sa nadaot nga datos sulod sa usa ka panahon, pagkahulog sa network tali sa mga sentro sa datos. Ang ingon nga mga pagsulay dili lamang magtugot sa usa sa pagtimbang-timbang sa mga bentaha ug disbentaha sa gisugyot nga arkitektura, apan maghatag usab usa ka maayo nga praktis sa pagpainit alang sa mga inhenyero nga nagdumala niini, ug ang nakuha nga kahanas dili labi ka labi kung ang mga kapakyasan sa sistema gipadaghan sa produksiyon.

Kung nagtrabaho kami uban ang kritikal nga kasayuran (sama sa datos alang sa pagsingil, pagkalkula sa utang sa suskritor), kinahanglan usab nga hatagan pagtagad ang mga himan nga makapakunhod sa mga peligro nga moabut tungod sa mga bahin sa DBMS. Pananglitan, gamita ang nodesync utility (Datastax), nga nakamugna og usa ka maayo nga estratehiya alang sa paggamit niini sa han-ay alang sa pagkamakanunayon, ayaw paghimo og sobra nga load sa Cassandra ug gamiton kini alang lamang sa pipila ka mga lamesa sa usa ka piho nga panahon.

Unsay mahitabo kang Cassandra human sa unom ka bulan sa kinabuhi? Sa kinatibuk-an, walay mga problema nga wala masulbad. Wala usab namo tugoti ang bisan unsang seryoso nga mga aksidente o pagkawala sa datos. Oo, kinahanglan namon nga hunahunaon ang pagbaylo sa pipila nga mga problema nga wala pa mitungha kaniadto, apan sa katapusan wala kini labi nga nakatago sa among solusyon sa arkitektura. Kung gusto nimo ug dili mahadlok nga sulayan ang usa ka butang nga bag-o, ug sa samang higayon dili nimo gusto nga mahigawad kaayo, nan pag-andam alang sa kamatuoran nga wala’y libre. Kinahanglan nimo nga masabtan, susihon ang dokumentasyon ug tipunon ang imong kaugalingon nga indibidwal nga rake labaw pa sa daan nga solusyon sa panulundon, ug wala’y teorya nga magsulti kanimo daan kung unsang rake ang naghulat kanimo.

Source: www.habr.com

Idugang sa usa ka comment