Yadda ake duba idanun Cassandra ba tare da rasa bayanai ba, kwanciyar hankali da imani a cikin NoSQL

Yadda ake duba idanun Cassandra ba tare da rasa bayanai ba, kwanciyar hankali da imani a cikin NoSQL

Sun ce duk abin da ke rayuwa yana da daraja a gwada akalla sau ɗaya. Kuma idan kun saba da yin aiki tare da DBMSs masu alaƙa, to yana da daraja sanin NoSQL a aikace, da farko, aƙalla don haɓaka gabaɗaya. Yanzu, saboda saurin bunƙasa wannan fasaha, akwai ra'ayoyi da yawa masu cin karo da juna da zazzafar muhawara kan wannan batu, wanda musamman ma ke haifar da sha'awa.
Idan kuka zurfafa cikin jigon duk wadannan rigima, za ku ga cewa sun taso ne saboda rashin bin hanyar da ba ta dace ba. Wadanda ke amfani da bayanan NoSQL daidai inda ake buƙatar su sun gamsu kuma suna karɓar duk fa'idodi daga wannan bayani. Kuma masu gwajin da suka dogara da wannan fasaha a matsayin maganin da ba za a iya amfani da su ba kwata-kwata sun ji takaici, saboda sun rasa karfin rumbun adana bayanai ba tare da samun fa'ida mai mahimmanci ba.

Zan gaya muku game da kwarewarmu wajen aiwatar da mafita dangane da Cassandra DBMS: abin da ya kamata mu fuskanta, yadda muka fita daga yanayi masu wahala, ko mun sami damar cin gajiyar amfani da NoSQL da kuma inda za mu saka ƙarin ƙoƙarin / kuɗi. .
Ayyukan farko shine gina tsarin da ke rikodin kira a cikin wani nau'i na ajiya.

Ka'idar aiki na tsarin shine kamar haka. Shigar ya haɗa da fayiloli tare da takamaiman tsari wanda ke bayyana tsarin kira. Aikace-aikacen sannan yana tabbatar da cewa an adana wannan tsarin a cikin ginshiƙan da suka dace. A nan gaba, ana amfani da ajiyayyun kiran don nuna bayanai kan yawan zirga-zirga don masu biyan kuɗi (caji, kira, tarihin ma'auni).

Yadda ake duba idanun Cassandra ba tare da rasa bayanai ba, kwanciyar hankali da imani a cikin NoSQL

A bayyane yake dalilin da ya sa suka zaɓi Cassandra - ta rubuta kamar bindigar injina, tana da sauƙin daidaitawa, kuma tana da juriya.

Don haka, wannan shine abin da kwarewa ta ba mu

Eh, kumburin da ya gaza ba bala'i ba ne. Wannan shine jigon haƙurin kuskuren Cassandra. Amma kumburi na iya zama da rai kuma a lokaci guda fara wahala a cikin aiki. Kamar yadda ya juya, wannan nan da nan yana rinjayar aikin gaba ɗaya tari.

Cassandra ba zai kare ku ba inda Oracle ya cece ku tare da ƙuntatawa. Kuma idan marubucin aikace-aikacen bai fahimci wannan a gaba ba, to sau biyu wanda ya isa Cassandra ba shi da muni fiye da asali. Da zarar ya isa, za mu saka shi a ciki.

IB ba ya son Cassandra kyauta daga cikin akwatin: Babu shiga ayyukan mai amfani, babu bambancin hakki. Bayani game da kira ana ɗaukar bayanan sirri, wanda ke nufin cewa duk ƙoƙarin neman/canza shi ta kowace hanya dole ne a shigar da shi tare da yuwuwar dubawa ta gaba. Hakanan, kuna buƙatar sani game da buƙatar ware haƙƙoƙi a matakai daban-daban don masu amfani daban-daban. Injiniyan aiki mai sauƙi da babban mai gudanarwa wanda zai iya share sararin maɓalli cikin yardar kaina ayyuka daban-daban, nauyi daban-daban, da ƙwarewa. Ba tare da irin wannan bambance-bambancen haƙƙin samun dama ba, ƙima da amincin bayanan nan da nan za su shiga cikin tambaya cikin sauri fiye da kowane matakin daidaito.

Ba mu yi la'akari da cewa kira yana buƙatar duka ƙididdiga mai mahimmanci ba da kuma samfurin lokaci-lokaci don yanayi iri-iri. Tun da za a share bayanan da aka zaɓa sannan a sake rubuta su (a matsayin ɓangare na aikin, dole ne mu goyi bayan aiwatar da sabunta bayanai lokacin da bayanan suka fara shigar da madauki ba daidai ba), Cassandra ba abokinmu bane a nan. Cassandra kamar bankin alade ne - yana da dacewa don saka abubuwa a ciki, amma ba za ku iya ƙidaya a ciki ba.

Mun ci karo da matsala canja wurin bayanai zuwa yankunan gwaji (5 nodes a cikin gwajin da 20 a cikin prom). A wannan yanayin, ba za a iya amfani da juji ba.

Matsalar sabunta tsarin bayanan aikace-aikacen rubutu zuwa Cassandra. Juyawa baya zai haifar da manyan kaburbura masu yawa, wanda zai haifar da asarar yawan aiki ta hanyoyin da ba a iya faɗi ba.. Cassandra an inganta shi don yin rikodi, kuma baya tunani sosai kafin rubutawa.Duk wani aiki tare da bayanan da ke cikinsa shima rikodi ne. Wato, ta hanyar share abubuwan da ba dole ba, za mu ƙara samar da ƙarin bayanai, kuma kawai wasu daga cikinsu za a yiwa alama da duwatsun kabari.

Ƙayyadaddun lokaci lokacin sakawa. Cassandra yana da kyau a cikin rikodin, amma wani lokacin magudanar da ke shigowa na iya dagula mata mamaki. Wannan yana faruwa lokacin da aikace-aikacen ya fara zagayawa a kusa da bayanan da yawa waɗanda ba za a iya saka su ba saboda wasu dalilai. Kuma za mu buƙaci DBA na gaske wanda zai sa ido kan gc.log, tsarin da bug rajistan ayyukan don jinkirin queries, ma'auni a kan ƙaddamarwa da ke jiran.

Cibiyoyin bayanai da yawa a cikin tari. Inda za a karanta daga ina za a rubuta?
Wataƙila ya rabu zuwa karatu da rubutu? Kuma idan haka ne, shin ya kamata a sami DC kusa da aikace-aikacen rubutu ko karatu? Kuma ba za mu ƙare da ƙwalƙwalwar rarrabuwa ta gaske ba idan muka zaɓi matakin daidaito mara kyau? Akwai tambayoyi da yawa, saitunan saitunan da ba a san su ba, yuwuwar da gaske kuke son yin tinker dasu.

Yadda muka yanke shawara

Don hana kumburi daga nutsewa, an kashe SWAP. Kuma yanzu, idan akwai rashin ƙwaƙwalwar ajiya, kumburi ya kamata ya sauka kuma kada ya haifar da babban gc pauses.

Don haka, ba mu ƙara dogaro da dabaru a cikin bayanan ba. Masu haɓaka aikace-aikacen suna sake horar da kansu kuma sun fara yin taka tsantsan a cikin lambar su. Madaidaici bayyananne rabuwar adana bayanai da sarrafa bayanai.

Mun sayi tallafi daga DataStax. Ci gaban damben Cassandra ya riga ya ƙare (waɗannan alƙawari na ƙarshe shine a cikin Fabrairu 2018). A lokaci guda, Datastax yana ba da kyakkyawan sabis da adadi mai yawa na gyaran gyare-gyare da daidaitawa don mafita na IP na yanzu.

Ina kuma so in lura cewa Cassandra bai dace sosai don tambayoyin zaɓi ba. Tabbas, CQL babban ci gaba ne ga masu amfani (idan aka kwatanta da Trift). Amma idan kana da dukan sassan da suka saba da irin wannan m shiga, free tacewa da kowane filin da kuma tambaya ingantawa damar, da kuma wadannan sassan suna aiki don warware gunaguni da hatsarori, da bayani a kan Cassandra alama maƙiya da kuma wawa a gare su. Kuma mun fara yanke shawarar yadda abokan aikinmu za su yi samfurori.

Mun yi la'akari da zaɓuɓɓuka biyu. A cikin zaɓi na farko, muna rubuta kira ba kawai a cikin C* ba, har ma a cikin bayanan Oracle da aka adana. Sai kawai, ba kamar C * ba, wannan ma'ajin bayanai yana adana kira ne kawai don watan da muke ciki (isasshen zurfin ajiyar kira don caji). Nan da nan mun ga matsala mai zuwa: idan muka rubuta tare, to, mun rasa duk fa'idodin C * masu alaƙa da sakawa da sauri; idan muka rubuta asynchronously, babu tabbacin cewa duk kiran da ake buƙata ya shiga cikin Oracle kwata-kwata. Akwai ƙari guda ɗaya, amma babba: don aiki ɗaya sanannen PL/SQL Developer ya rage, watau muna aiwatar da tsarin “Facade” a zahiri. Muna aiwatar da hanyar da ke sauke kira daga C *, cire wasu bayanai don haɓakawa daga tebur masu dacewa a cikin Oracle, haɗa samfuran da aka samo kuma suna ba mu sakamakon, wanda muke amfani da shi ko ta yaya (juya baya, maimaitawa, bincika, sha'awar). Fursunoni: tsari ne quite Multi-mataki, kuma a Bugu da kari, babu wani dubawa ga aiki ma'aikata.

A ƙarshe, mun daidaita akan zaɓi na biyu. An yi amfani da Apache Spark don samfurin daga kwalba daban-daban. An rage ma'anar tsarin zuwa lambar Java, wanda, ta amfani da maɓallan ƙayyadaddun (mai biyan kuɗi, lokacin kira - maɓallan sashe), yana fitar da bayanai daga C *, da kuma bayanan da ake bukata don haɓakawa daga kowane nau'in bayanai. Bayan haka yana haɗa su a cikin ƙwaƙwalwar ajiyarsa kuma yana nuna sakamakon a cikin tebur da aka samu. Mun zana fuskar yanar gizo a kan tartsatsin kuma ya zama mai amfani sosai.

Yadda ake duba idanun Cassandra ba tare da rasa bayanai ba, kwanciyar hankali da imani a cikin NoSQL

Lokacin warware matsalar sabunta bayanan gwajin masana'antu, mun sake yin la'akari da mafita da yawa. Dukansu suna canjawa ta hanyar Sstloader da zaɓi na raba gungu a yankin gwaji zuwa sassa biyu, kowannensu yana cikin gungu iri ɗaya tare da na talla, don haka ana samun ƙarfinsa da shi. Lokacin sabunta gwajin, an shirya don musanya su: ɓangaren da ke aiki a cikin gwajin an share shi kuma ya shiga cikin samarwa, ɗayan kuma ya fara aiki tare da bayanan daban. Duk da haka, bayan sake tunani, mun fi dacewa da kimanta bayanan da suka cancanci canja wurin, kuma muka gane cewa kiran kansu wani abu ne wanda bai dace ba don gwaje-gwaje, da sauri ya haifar idan ya cancanta, kuma shine saitin bayanan talla wanda ba shi da darajar don canja wurin zuwa ga gwadawa. Akwai abubuwa da yawa na ajiya waɗanda suka cancanci motsawa, amma waɗannan a zahiri tebur biyu ne, kuma ba masu nauyi sosai ba. Don haka mu a matsayin mafita, Spark ya sake zuwa ceto, tare da taimakon wanda muka rubuta kuma muka fara amfani da rubutun rayayye don canja wurin bayanai tsakanin tebur, gwajin gwaji.

Manufar tura aikinmu na yanzu tana ba mu damar yin aiki ba tare da juyowa ba. Kafin promo, akwai gwajin gwaji na wajibi, inda kuskure ba shi da tsada sosai. A cikin yanayin rashin nasara, koyaushe kuna iya sauke filin harka kuma ku mirgine duk makircin daga farkon.

Don tabbatar da ci gaba da samun Cassandra, kuna buƙatar dba ba shi kaɗai ba. Duk wanda ke aiki da aikace-aikacen dole ne ya fahimci inda kuma yadda za a kalli halin da ake ciki da kuma yadda za a gano matsalolin cikin lokaci. Don yin wannan, muna yin amfani da DataStax OpsCenter (Gudanarwa da saka idanu na ayyukan aiki), ma'auni na tsarin Cassandra Driver (yawan lokutan lokaci don rubutawa zuwa C *, adadin lokuta don karantawa daga C *, matsakaicin latency, da dai sauransu), saka idanu aikin. na aikace-aikacen kanta, yana aiki tare da Cassandra.

Lokacin da muka yi tunani game da tambayar da ta gabata, mun fahimci inda babban haɗarinmu zai iya kasancewa. Waɗannan nau'ikan nunin bayanai ne waɗanda ke nuna bayanai daga tambayoyi masu zaman kansu da yawa zuwa ma'ajiya. Ta wannan hanyar za mu iya samun cikakkun bayanai marasa daidaituwa. Amma wannan matsalar za ta kasance daidai da dacewa idan muka yi aiki tare da cibiyar bayanai guda ɗaya kawai. Don haka abin da ya fi dacewa a nan shi ne, ba shakka, ƙirƙirar aikin batch don karanta bayanai akan aikace-aikacen ɓangare na uku, wanda zai tabbatar da cewa an karɓi bayanai a cikin lokaci guda. Dangane da rarrabuwa cikin karatu da rubutu dangane da aiki, a nan an dakatar da mu ta hanyar haɗarin cewa tare da asarar alaƙa tsakanin DCs, za mu iya ƙare tare da gungu biyu waɗanda ba su dace da juna ba.

A sakamakon haka, a yanzu ya tsaya a daidai matakin rubuta EACH_QUORUM, don karatu - LOCAL_QUORUM

Takaitaccen ra'ayi da ƙarshe

Don yin la'akari da sakamakon da aka samu daga ra'ayi na goyon bayan aiki da kuma tsammanin ci gaba, mun yanke shawarar yin tunani game da inda za a iya amfani da irin wannan ci gaba.

Nan da nan daga jemage, sannan ƙididdige maki don shirye-shirye kamar "Biya lokacin da ya dace" (muna loda bayanai cikin C*, lissafi ta amfani da rubutun Spark), yin lissafin da'awar tare da tarawa ta yanki, adana matsayi da ƙididdige haƙƙin samun damar mai amfani dangane da rawar. matrix.

Kamar yadda kake gani, repertoire yana da fadi kuma ya bambanta. Kuma idan muka zaɓi sansanin magoya bayan / abokan adawar NoSQL, to, za mu shiga cikin magoya bayan, tun da mun sami fa'idodinmu, kuma daidai inda muka sa ran.

Ko da zaɓin Cassandra daga cikin akwatin yana ba da damar ƙima a kwance a ainihin lokacin, ba tare da wahala ba yana warware matsalar ƙara bayanai a cikin tsarin. Mun sami damar matsar da na'ura mai ɗaukar nauyi don ƙididdige tarin kira a cikin keɓantaccen da'ira, da kuma raba tsarin aikace-aikacen da dabaru, kawar da mummunan aikin rubuta ayyukan al'ada da abubuwa a cikin bayanan kanta. Mun sami damar zabar da daidaitawa, don hanzarta, waɗanne DCs za mu yi lissafin da waɗanda za mu yi rikodin bayanai a kansu, mun ba da inshora kan kanmu daga faɗuwar nodes na kowane mutum da kuma DC gaba ɗaya.

Yin amfani da gine-ginen mu zuwa sababbin ayyukan, da kuma samun kwarewa, Ina so in yi la'akari da nuances da aka bayyana a sama, da kuma hana wasu kurakurai, santsi wasu kusurwoyi masu kaifi waɗanda ba za a iya guje wa farko ba.

Alal misali, ci gaba da bin diddigin abubuwan sabunta Cassandra a kan lokacisaboda kadan daga cikin matsalolin da muka samu an riga an san su kuma an gyara su.

Kar a sanya duka bayanan da kanta da Spark akan nodes iri ɗaya (ko raba sosai da adadin damar amfani da albarkatu), tunda Spark na iya cin OP fiye da yadda ake tsammani, kuma za mu sami matsala da sauri lamba 1 daga jerin mu.

Inganta kulawa da iya aiki a matakin gwajin aikin. Da farko, yi la'akari gwargwadon yuwuwar duk masu amfani da mafita na mu, saboda wannan shine abin da tsarin bayanai zai dogara da shi a ƙarshe.

Juya sakamakon da'irar sau da yawa don yuwuwar ingantawa. Zaɓi waɗanne filayen za a iya jera su. Fahimtar abin da ƙarin tebur ya kamata mu yi domin mafi daidai kuma mafi kyawun yin la'akari, sannan samar da bayanan da ake buƙata akan buƙata (misali, ta hanyar ɗauka cewa za mu iya adana bayanai iri ɗaya a cikin teburi daban-daban, la'akari da raguwa daban-daban bisa ga fa'ida. daban-daban sharudda, za mu iya ajiye muhimmanci CPU lokaci domin karanta buƙatun).

Ba mummunar ba Nan da nan tanadar don haɗa TTL da tsaftace bayanan da suka gabata.

Lokacin zazzage bayanai daga Cassandra Dabarun aikace-aikacen yakamata suyi aiki akan ka'idar FETCH, ta yadda ba duk layuka ana ɗora su cikin ƙwaƙwalwar ajiya lokaci ɗaya ba, amma an zaɓi su cikin batches.

Yana da kyau kafin canja wurin aikin zuwa bayanin da aka bayyana duba kuskuren tsarin ta gudanar da jerin gwaje-gwajen haɗari, kamar asarar bayanai a cibiyar bayanai guda ɗaya, maido da bayanan da suka lalace na wani ɗan lokaci, dainawar hanyar sadarwa tsakanin cibiyoyin bayanai. Irin waɗannan gwaje-gwajen ba wai kawai za su ba da damar yin la'akari da fa'ida da lahani na gine-ginen da aka tsara ba, har ma za su samar da kyakkyawan aiki na ɗumi ga injiniyoyin da ke gudanar da su, kuma ƙwarewar da aka samu za ta yi nisa da wuce gona da iri idan aka sake haifar da gazawar tsarin a cikin samarwa.

Idan muka yi aiki tare da mahimman bayanai (kamar bayanai don lissafin kuɗi, ƙididdige bashin masu biyan kuɗi), to yana da kyau a kula da kayan aikin da za su rage haɗarin da ke tasowa saboda fasalulluka na DBMS. Misali, yi amfani da nodesync utility (Datastax), tun da ya ɓullo da ingantacciyar dabara don amfani da shi. don tabbatar da daidaito, kada ku haifar da nauyi mai yawa akan Cassandra kuma amfani da shi kawai don wasu teburi a cikin wani ɗan lokaci.

Menene ya faru da Cassandra bayan watanni shida na rayuwa? Gabaɗaya, babu matsalolin da ba a warware su ba. Har ila yau, ba mu ƙyale wani mummunan haɗari ko asarar bayanai ba. Ee, dole ne mu yi tunani game da rama wasu matsalolin da ba su taso ba a baya, amma a ƙarshe wannan bai yi duhu ga tsarin gine-ginenmu ba. Idan kuna so kuma ba ku ji tsoron gwada sabon abu ba, kuma a lokaci guda ba sa so ku zama masu takaici, to, ku shirya don gaskiyar cewa babu wani abu kyauta. Dole ne ku fahimta, ku shiga cikin takaddun ku tattara rake naku fiye da na tsohuwar maganin gado, kuma babu wata ka'ida da za ta gaya muku a gaba wane rake yake jiran ku.

source: www.habr.com

Add a comment