Indlela thina kwi-Sportmaster esikhethe ngayo inkqubo ye-caching. Icandelo loku-1

Mholo! Igama lam ngu-Alexey Pyankov, ndingumphuhlisi kwinkampani ye-Sportmaster. Kulo nto iposi Ndixelele indlela umsebenzi kwiwebhusayithi ye-Sportmaster waqala ngayo kwi-2012, ngawaphi amanyathelo esikwazile "ukutyhala" kwaye ngokuphambene noko, yintoni iraki esiyiqokelele.

Namhlanje ndifuna ukwabelana ngeengcamango ezilandela esinye isihloko - ukukhetha inkqubo ye-caching ye-java backend kwindawo yolawulo lwesayithi. Eli qhinga linentsingiselo ekhethekileyo kum - nangona ibali liqhubeka kwiinyanga ezi-2 kuphela, ngeli xesha leentsuku ezingama-60 sasebenza iiyure eziyi-12-16 kwaye ngaphandle kosuku olunye. Ndandingazange ndicinge okanye ndicinge ukuba kunokwenzeka ukusebenza nzima ngolo hlobo.

Ngoko ke, ndahlula isicatshulwa kwiindawo ezi-2 ukuze ndingalayishi ngokupheleleyo. Ngokuchasene noko, inxalenye yokuqala iya kuba lula kakhulu - ukulungiswa, isingeniso, ezinye iingcamango malunga nokuba yintoni i-caching. Ukuba sele ungumphuhlisi onamava okanye usebenze ngee-cache, ukusuka kwicala lobugcisa kuya kubakho into entsha kweli nqaku. Kodwa kumntwana omncinci, uphononongo oluncinci olunjalo lunokumxelela ukuba leliphi icala amakajonge kulo ukuba uzifumana ekwindlela enjalo.

Indlela thina kwi-Sportmaster esikhethe ngayo inkqubo ye-caching. Icandelo loku-1

Xa inguqulelo entsha ye-website ye-Sportmaster ifakwe kwimveliso, idatha yafunyanwa ngendlela eyayiyiyo, ukuyibeka ngobumnene, kungekhona kakhulu. Isiseko yayiziitafile ezilungiselelwe inguqulelo yangaphambili yesiza (i-Bitrix), ekwakufuneka itsalwe kwi-ETL, iziswe kwifomu entsha kwaye ityetyiswe ngezinto ezincinci ezahlukeneyo ukusuka kwiinkqubo ezininzi ezingaphezulu. Ukuze umfanekiso omtsha okanye inkcazo yemveliso ibonakale kwisayithi, kwafuneka ulinde kude kube yimini elandelayo - ukuhlaziywa kuphela ebusuku, kanye ngosuku.

Ekuqaleni, bekukho amaxhala amaninzi ukusuka kwiiveki zokuqala zokuya kwimveliso kangangokuba ukuphazamiseka okunjalo kubaphathi bomxholo kwakuyinto encinci. Kodwa, ngokukhawuleza nje ukuba yonke into ihlale phantsi, ukuphuhliswa kweprojekthi kwaqhubeka - kwiinyanga ezimbalwa kamva, ekuqaleni kwe-2015, saqala ukuphuhlisa ngokusebenzayo ipaneli yokulawula. Ngo-2015 kunye no-2016, yonke into ihamba kakuhle, sikhulula rhoqo, iphaneli yokulawula igubungela ngakumbi nangakumbi ukulungiswa kwedatha, kwaye silungiselela into yokuba kungekudala iqela lethu liya kuphathiswa eyona nto ibalulekileyo kunye neyinkimbinkimbi - imveliso. isekethe (ukulungiswa ngokupheleleyo kunye nokugcinwa kwedatha kuzo zonke iimveliso). Kodwa ehlotyeni lika-2017, ngaphambi nje kokuqaliswa kwesekethe yempahla, iprojekthi iya kuzifumana ikwimeko enzima kakhulu - ngokuchanekileyo ngenxa yeengxaki ze-caching. Ndifuna ukuthetha ngesi siqendu kwinxalenye yesibini yale ncwadi inamacandelo amabini.

Kodwa kule post ndiza kuqala kude, ndiza kubonisa ezinye iingcamango malunga ne-caching, eya kuba linyathelo elilungileyo lokuskrola phambi kweprojekthi enkulu.

Когда Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡Π° ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

Umsebenzi we-caching awubonakali nje. Singabaphuhlisi, sibhala imveliso yesoftware kwaye sifuna ukuba iyimfuneko. Ukuba imveliso ifunwa kwaye iphumelele, abasebenzisi baya kuza. Kwaye abaninzi ngakumbi beza. Kwaye ke kukho abasebenzisi abaninzi kwaye ke imveliso ilayishwa kakhulu.

Kwizigaba zokuqala, asicingi malunga nokulungiswa kunye nokusebenza kwekhowudi. Into ephambili kukusebenza, ngokukhawuleza ukukhupha umqhubi kunye nokuvavanya i-hypotheses. Kwaye ukuba umthwalo uyanda, simpompa intsimbi. Siyinyusa kabini okanye kathathu, kahlanu, mhlawumbi ka-10. Kwenye indawo apha - iimali azisayi kuvumela kwakhona. Liza kunyuka kangaphi inani labasebenzisi? Ayiyi kuba njenge-2-5-10, kodwa ukuba iphumelele, iya kuvela kwi-100-1000 ukuya kwi-100 lamawaka amaxesha. Oko kukuthi, kungekudala okanye kamva, kuya kufuneka wenze ulungiselelo.

Masithi inxalenye yekhowudi (masibize le nxalenye ngomsebenzi) ithatha ixesha elide ngokungafanelekanga, kwaye sifuna ukunciphisa ixesha lokuphumeza. Umsebenzi unokufikelela kwisiseko sedatha, okanye ingaba kukuphunyezwa kwengqiqo ethile enzima - into ephambili kukuba kuthatha ixesha elide ukwenza. Ungalinciphisa kangakanani ixesha lokubulawa? Kumda, ungawunciphisa ube ngu-zero, ungaqhubeli phambili. Ungalinciphisa njani ixesha lokwenziwa libe zero? Impendulo: phelisa ukubulawa ngokupheleleyo. Kunoko, buyisela umphumo ngokukhawuleza. Unokuwufumanisa njani umphumo? Impendulo: yibale okanye ujonge ndaweni ithile. Kuthatha ixesha elide ukubala. Kwaye ukuhlola, umzekelo, ukukhumbula isiphumo ukuba umsebenzi wavelisa ixesha lokugqibela xa ebizwa kunye parameters efanayo.

Oko kukuthi, ukuphunyezwa komsebenzi akubalulekanga kuthi. Kwanele nje ukwazi ukuba zeziphi iiparamitha isiphumo sixhomekeke. Ke, ukuba amaxabiso eparameter amelwe ngendlela yento enokuthi isetyenziswe njengesitshixo kwindawo ethile yokugcina, ke isiphumo sokubala singagcinwa kwaye sifundelwe kwixesha elizayo xa ifunyenwe. Ukuba oku kubhalwa kunye nokufunda kwesiphumo kukhawuleza kunokuqhuba umsebenzi, sinenzuzo ngokwesantya. Isixa senzuzo sinokufikelela kwi-100, i-1000, kunye ne-100 lamawaka amaxesha (i-10 ^ 5 iyinto engaqhelekanga, kodwa kwimeko yesiseko esinesigxina, kunokwenzeka).

Iimfuno ezisisiseko zenkqubo ye-caching

Into yokuqala enokuthi ibe yimfuneko yenkqubo ye-caching isantya sokufunda ngokukhawuleza kwaye, ukuya kwinqanaba elincinci, isantya sokubhala. Oku kuyinyaniso, kodwa kuphela de sikhuphe inkqubo kwimveliso.

Masidlale elityala.

Masithi sinikeze umthwalo wangoku kunye nehardware kwaye ngoku ngokuthe ngcembe sazisa i-caching. Inani labasebenzisi likhula kancinci, umthwalo ukhula - songeza i-cache encinci, siyijike apha naphaya. Oku kuyaqhubeka ixesha elithile, kwaye ngoku imisebenzi enzima ayisabizwa ngoku - wonke umthwalo oyintloko uwela kwi-cache. Inani labasebenzisi ngeli xesha liye landa amaxesha angama-N.

Kwaye ukuba unikezelo lokuqala lwe-hardware lunokuba ngamaxesha angama-2-5, ngoko ngoncedo lwe-cache sinokuphucula ukusebenza kwe-10 okanye, kwimeko efanelekileyo, nge-100, kwezinye iindawo mhlawumbi nge-factor. ye-1000. Oko kukuthi, kwi-hardware efanayo - siqhuba izicelo ze-100 ngaphezulu. Kulungile, usifanele i-gingerbread!

Kodwa ngoku, ngomzuzu omnye olungileyo, ngethamsanqa, inkqubo yaqhekeka kwaye i-cache yawa. Akukho nto ikhethekileyo - emva kwayo yonke loo nto, i-cache yakhethwa ngokusekwe kwimfuno "isantya esiphezulu sokufunda nokubhala, okunye akunamsebenzi."

Ngokumalunga nomthwalo wokuqala, ukugcinwa kwethu kwentsimbi kwakungamaxesha angama-2-5, kwaye umthwalo ngeli xesha wanda ngamaxesha angama-10-100. Sisebenzisa i-cache, sacima iifowuni zemisebenzi enzima kwaye ke yonke into yasebenza. Kwaye ngoku, ngaphandle kwe-cache, ingaba inkqubo yethu iyakuthothisa kangaphi? Kuya kwenzeka ntoni kuthi? Inkqubo iya kuwa.

Nokuba i-cache yethu ayizange iphazamiseke, kodwa yacinywa nje okwethutyana, kuya kufuneka ifudunyezwe, kwaye oku kuya kuthatha ixesha. Kwaye ngeli xesha, umthwalo oyintloko uya kuwela ekusebenzeni.

Isiphelo: iiprojekthi zemveliso ezilayishwe kakhulu zifuna inkqubo ye-caching kungekhona nje ukuba nesantya esiphezulu sokufunda nokubhala, kodwa nokuqinisekisa ukhuseleko lwedatha kunye nokuchasana nokungaphumeleli.

Intlungu yokukhetha

Kwiprojekthi enephaneli yolawulo, ukhetho luhambe ngolu hlobo: okokuqala sifake iHazelcast, kuba Sasisele siqhelene nale mveliso kumava esayithi eliphambili. Kodwa apha olu khetho luye lwangaphumelelanga - phantsi kweprofayile yethu yomthwalo, iHazelcast ayicothi nje, kodwa icotha kakhulu. Kwaye ngelo xesha sasisele sibhalisele umhla wokukhululwa.

Spoiler: njani kanye ukuba iimeko ziye zavela njani ukuba siphoswe yinto enkulu kwaye saphela sinemeko enzima kwaye enzima - ndiza kukuxelela kwicandelo lesibini - kwaye siphelile njani kwaye siphume njani. Kodwa ngoku-ndizotsho nje ukuba yayiluxinzelelo oluninzi, kwaye "ukucinga - ngandlela thile andikwazi ukucinga, siyayishukumisa ibhotile." "Ukugungqa ibhotile" kukwasonakalisa, ngakumbi emva koko.

Into esiyenzileyo:

  1. Senza uluhlu lwazo zonke iinkqubo ezicetyiswa nguGoogle kunye neStackOverflow. Kancinci ngaphezulu kwama-30
  2. Sibhala iimvavanyo ezinomthwalo oqhelekileyo wemveliso. Ukwenza oku, sirekhode idatha edlula kwinkqubo kwindawo yokuvelisa - uhlobo lwe-sniffer yedatha kungekhona kwinethiwekhi, kodwa ngaphakathi kwenkqubo. Ngokuchanekileyo le datha isetyenziswe kwiimvavanyo.
  3. Ngeqela lonke, wonke umntu ukhetha inkqubo elandelayo kuluhlu, uyayiqwalasela, kwaye aqhube iimvavanyo. Ayigqithisi uvavanyo, ayithwali umthwalo - siyayilahla kwaye siqhubele phambili kumgca olandelayo.
  4. Kwinkqubo ye-17 kwacaca ukuba yonke into ayinathemba. Yeka ukungcangcazela ibhotile, lixesha lokucinga nzulu.

Kodwa oku kukhetho xa kufuneka ukhethe inkqubo eya "kudlula isantya" kwiimvavanyo ezilungiselelwe kwangaphambili. Kuthekani ukuba akukho vavanyo olunjalo kwaye ufuna ukukhetha ngokukhawuleza?

Masenze imodeli yolu khetho (kunzima ukucinga ukuba umphuhlisi ophakathi + uhlala kwindawo engenanto, kwaye ngexesha lokukhetha akakakulungeli ngokusesikweni ukhetho lwakhe malunga nokuba yeyiphi imveliso ekufuneka ayizame kuqala - ke ngoko, ukuqiqa okungaphezulu kungaphezulu kwethiyori/ifilosofi/ malunga nomntwana omncinci).

Emva kokuba sigqibe kwiimfuno, siya kuqala ukukhetha isisombululo ngaphandle kwebhokisi. Kutheni ukubuyisela kwakhona ivili: siya kuhamba kwaye sithathe i-caching system esele yenziwe.

Ukuba uqala nje kwaye uyi-google, ke unike okanye uthathe umyalelo, kodwa ngokubanzi, izikhokelo ziya kuba ngolu hlobo. Okokuqala, uya kufumana iRedis, iviwa kuyo yonke indawo. Emva koko uya kufumanisa ukuba i-EhCache yeyona nkqubo indala kwaye iqinisekisiweyo. Okulandelayo siza kubhala malunga neTarantool, uphuhliso lwasekhaya olunenkalo ekhethekileyo yesisombululo. Kwaye kwakhona Ignite, kuba ngoku iyanda ekuthandeni kwaye iyonwabela inkxaso yeSberTech. Ekugqibeleni kukho iHazelcast, kuba kwihlabathi lezoshishino lihlala livela phakathi kweenkampani ezinkulu.

Uluhlu aluphelelanga; kukho ezininzi iinkqubo. Kwaye siya kubetha into enye kuphela. Masithathe iinkqubo ezi-5 ezikhethiweyo "zokhuphiswano lobuhle" kwaye senze ukhetho. Ngubani oza kuphumelela?

Redis

Sifunda oko bakubhalayo kwiwebhusayithi esemthethweni.
Redis -iprojekthi yomthombo ovulekileyo. Inikeza ukugcinwa kwedatha kwimemori, ukukwazi ukugcina kwi-disk, i-auto-partitioning, ukufumaneka okuphezulu kunye nokubuyisela ekuphumeni kwenethiwekhi.

Kubonakala ngathi yonke into ilungile, ungayithatha kwaye uyijije - yonke into oyifunayo, iyenzeka. Kodwa nje ukuzonwabisa, makhe sijonge abanye abaviwa.

EhCache

EhCache - "eyona cache isetyenziswa kakhulu kwiJava" (inguqulelo yesilogeni esivela kwiwebhusayithi esemthethweni). Kwakhona i-opensource. Kwaye ke siyaqonda ukuba i-Redis ayisiyiyo ye-java, kodwa ngokubanzi, kwaye ukusebenzisana nayo udinga i-wrapper. Kwaye i-EhCache iya kuba lula ngakumbi. Yintoni enye ethenjiswa yile nkqubo? Ukuthembeka, ubungqina, ukusebenza ngokupheleleyo. Ewe, ikwayeyona ixhaphakileyo. Kwaye i-cache terabytes yedatha.

I-Redis ilibele, ndikulungele ukukhetha i-EhCache.

Kodwa umoya wokuthand' izwe uyandityhala ukuba ndibone ukuba yintoni elungileyo ngeTarantool.

Tarantool

Tarantool - idibana negama elithi "Iqonga lokudibanisa idatha yexesha langempela". Ivakala inzima kakhulu, ke ngoko sifunde iphepha ngokweenkcukacha kwaye sifumana ingxelo ephezulu: "Igcina i-100% yedatha kwi-RAM." Oku kufanele kuphakamise imibuzo - emva koko, kunokubakho idatha eninzi kunememori. Ingcaciso kukuba ithetha ukuba iTarantool ayisebenzi ukulandelelana ukubhala idatha kwidiski ukusuka kwimemori. Endaweni yoko, isebenzisa inqanaba elisezantsi leempawu zesixokelelwano, xa inkumbulo ibhalwe ngokulula kwindlela yefayile enentsebenzo entle kakhulu ye-I/O. Ngokubanzi, benza into emangalisayo kwaye epholileyo.

Makhe sijonge ekuphunyezweni: Mail.ru uhola wenkampani, Avito, Beeline, Megafon, Alfa-Bank, Gazprom...

Ukuba bekusekho amathandabuzo malunga neTarantool, ke ityala lokuphunyezwa kwi-Mastercard liyandigqiba. Ndithatha iTarantool.

Kodwa kunjalo…

Ignite

... ingaba kukho okunye Ignite, ihlawuliswa "njengeqonga lekhompyutheni yememori ... kwimemori yesantya kwiipetabytes zedatha." Kukho nezinto ezininzi eziluncedo apha: i-cache yememori esasaziweyo, esona sitshixo sikhawulezayo sokugcinwa kwexabiso kunye ne-cache, ukukala okuthe tye, ukufumaneka okuphezulu, ingqibelelo engqongqo. Ngokubanzi, kuvela ukuba eyona nto ikhawulezayo yi-Ignite.

Ukuphunyezwa: Sberbank, American Airlines, Yahoo! Japhan. Kwaye ke ndifumanisa ukuba i-Ignite ayiphunyezwanga nje kwi-Sberbank, kodwa iqela le-SberTech lithumela abantu balo kwiqela le-Ignite ngokwalo ukuze licokise imveliso. Oku kunomtsalane ngokupheleleyo kwaye ndikulungele ukuthatha i-Ignite.

Akucaci ngokupheleleyo ukuba kutheni, ndijonge inqaku lesihlanu.

ihazelcast

Ndiya kwindawo ihazelcast, ukufunda. Kwaye kuvela ukuba isisombululo esikhawulezayo sokusasazwa kwe-caching yiHazelcast. Yimiyalelo yobukhulu ngokukhawuleza kunazo zonke ezinye izisombululo kwaye ngokubanzi yinkokeli kwintsimi yegridi yedatha yememori. Ngokuchasene nale mvelaphi, ukuthatha enye into ayikukuhlonipha. Ikwasebenzisa ukugcinwa kwedatha okungafunekiyo ekusebenzeni ngokuqhubekayo kweqela ngaphandle kokulahleka kwedatha.

Yiyo loo nto, ndilungele ukuthatha iHazelcast.

The lekiswa

Kodwa ukuba ukhangele, bonke abaviwa abahlanu bachazwa ngendlela yokuba ngamnye kubo ngoyena ubalaseleyo. Indlela yokukhetha? Siyakwazi ukubona ukuba yeyiphi eyona ithandwa kakhulu, khangela ukuthelekisa, kwaye intloko iya kuhamba.

Sifumana enye enje kuhlolwa, khetha iinkqubo zethu ezi-5.

Indlela thina kwi-Sportmaster esikhethe ngayo inkqubo ye-caching. Icandelo loku-1

Apha zihlelwa: I-Redis iphezulu, i-Hazelcast ikwindawo yesibini, i-Tarantool kunye ne-Ignite ifumana ukuthandwa, i-EhCache iye kwaye ihlala ifana.

Kodwa makhe sijonge indlela yokubala: amakhonkco kwiiwebhusayithi, umdla jikelele kwinkqubo, ukunikezelwa kwemisebenzi - kuhle! Oko kukuthi, xa inkqubo yam isilela, ndiya kuthi: β€œHayi, ithembekile! Kukho imisebenzi emininzi. ”… Uthelekiso olulula olunjalo aluyi kwenza.

Zonke ezi nkqubo azikho nje iinkqubo zecaching. Kwakhona banomsebenzi omningi, kubandakanywa xa idatha ingapompelwa kumxhasi ukuze iqhutywe, kodwa ngokuphambene noko: ikhowudi efuna ukuphunyezwa kwidatha ihambisa kumncedisi, iqhutyelwa apho, kwaye umphumo ubuyiselwa. Kwaye azisoloko zijongwa njengenkqubo eyahlukileyo ye-caching.

Kulungile, masingayeki, masifumane uthelekiso oluthe ngqo lweenkqubo. Makhe sithathe iinketho ezimbini eziphezulu - iRedis kunye neHazelcast. Sinomdla kwisantya, kwaye siya kuzithelekisa ngokusekelwe kule parameter.

Hz vs Redis

Sifumana oku uthelekiso:
Indlela thina kwi-Sportmaster esikhethe ngayo inkqubo ye-caching. Icandelo loku-1

IBlue yiRedis, ebomvu yiHazelcast. I-Hazelcast iphumelela kuyo yonke indawo, kwaye kukho ingqiqo yoku: i-multi-threaded, iphuculwe kakhulu, intambo nganye isebenza ngokuhlukana kwayo, ngoko akukho kuthintela. Kwaye iRedis inentambo enye; ayixhamli kwii-CPU zanamhlanje ezininzi. I-Hazelcast ine-asynchronous I / O, i-Redis-Jedis ineesokethi zokuthintela. Emva kwayo yonke loo nto, iHazelcast isebenzisa iprotocol yokubini, kwaye iRedis yiteksti-centric, okuthetha ukuba ayisebenzi.

Ukuba kunokwenzeka, makhe sijonge komnye umthombo wothelekiso. Uza kusibonisa ntoni?

Redis vs Hz

Enye uthelekiso:
Indlela thina kwi-Sportmaster esikhethe ngayo inkqubo ye-caching. Icandelo loku-1

Apha, ngokuchaseneyo, obomvu nguRedis. Oko kukuthi, iRedis igqwesa iHazelcast ngokwemigaqo yokusebenza. UHazelcast uphumelele uthelekiso lokuqala, uRedis waphumelela owesibini. Apha ichaze ngokuchanekileyo ukuba kutheni iHazelcast iphumelele uthelekiso lwangaphambili.

Kuvela ukuba isiphumo sokuqala sasixutywe ngokwenene: I-Redis yathathwa kwibhokisi yesiseko, kwaye i-Hazelcast yayilungiselelwe ityala lokuvavanya. Emva koko kuvela: okokuqala, asinakuthemba nabani na, kwaye okwesibini, xa ekugqibeleni sikhetha inkqubo, sisafuna ukuyiqwalasela ngokuchanekileyo. Ezi setingi zibandakanya ezininzi, phantse amakhulu eeparamitha.

Ukushukumisa ibhotile

Kwaye ndingacacisa yonke inkqubo esiyenzileyo ngoku ngesikweko silandelayo: β€œUkuhlukuhla ibhotile.” Oko kukuthi, ngoku akudingeki ukuba wenze inkqubo, ngoku into ephambili kukuba ukwazi ukufunda i-stackoverflow. Kwaye ndinomntu kwiqela lam, ingcali, osebenza kanye ngolu hlobo ngamaxesha anzima.

Inga wenzantoni? Ubona into ephukileyo, ubona umkhondo we-stack, uthatha amagama athile kuyo (awaphi abuchwephesha bakhe kwinkqubo), ukhangele kwiGoogle, ufumana i-stackoverflow phakathi kweempendulo. Ngaphandle kokufunda, ngaphandle kokucinga, phakathi kweempendulo zombuzo, ukhetha into efana kakhulu nesivakalisi esithi "yenza le nto kwaye" (ukukhetha impendulo enjalo italente yakhe, kuba akusoloko impendulo ifumana ukuthandwa kakhulu), iyasebenza, ijongeka: ukuba kukho into etshintshileyo, ke enkulu. Ukuba ayitshintshanga, yibuyisele kwakhona. Kwaye phinda uphendlo-khangela. Kwaye ngale ndlela intuitive, uqinisekisa ukuba ikhowudi isebenza emva kwexesha elithile. Akayazi ukuba kutheni, akayazi into ayenzileyo, akanakuyichaza. Kodwa! Olu sulelo luyasebenza. Yaye β€œumlilo uyacima.” Ngoku makhe sibone ukuba senze ntoni na. Xa inkqubo isebenza, kulandelelwano lobungakanani lula. Kwaye konga ixesha elininzi.

Le ndlela icaciswe kakuhle kakhulu ngalo mzekelo.

Kwakukade kudume kakhulu ukuqokelela iphenyane lokuseyile ebhotileni. Ngelo xesha, i-seilboat inkulu kwaye iyancipha, kwaye intamo yebhotile iyancipha kakhulu, akunakwenzeka ukuyityhalela ngaphakathi. Indlela yokudibanisa?

Indlela thina kwi-Sportmaster esikhethe ngayo inkqubo ye-caching. Icandelo loku-1

Kukho indlela enjalo, ngokukhawuleza kwaye isebenza kakhulu.

Inqanawa iqulethe izinto ezincinci: iintonga, iintambo, iiseyile, iglue. Konke oku sikufaka ebhotileni.
Sithatha ibhotile ngezandla zombini kwaye siqale ukugubha. Siyamdlikidla kwaye simdlikidla. Kwaye ngokuqhelekileyo ijika ibe yinkunkuma epheleleyo, kunjalo. Kodwa ngamanye amaxesha. Ngamanye amaxesha ijika ibe yinqanawa! Ngokuchanekileyo, into efana nenqanawa.

Sibonisa le nto kumntu: "Seryoga, uyabona!?" Kwaye eneneni, xa ukude kubonakala ngathi yinqanawa. Kodwa oku akunakuvunyelwa ukuba kuqhubeke.

Kukho enye indlela. Zisetyenziswa ngabafana abaphambili ngakumbi, njengabaphangi.

Ndinike lomfana umsebenzi, wenza yonke into wahamba. Kwaye ujongeka - kubonakala ngathi yenziwe. Kwaye emva kwexesha, xa ikhowudi kufuneka igqitywe, oku kuqala ngenxa yakhe ... Kulungile ukuba sele ekwazile ukubaleka kude. Laba ngaba bafana abathi, besebenzisa umzekelo webhotile, baya kwenza oku: uyabona, apho iphantsi, iglasi igoba. Kwaye akucaci ngokupheleleyo ukuba akukho nto elubala okanye hayi. Emva koko "abahlaseli" banqumle le ngezantsi, bafake inqanawa apho, baze baphinde badibanise i-bottom phantsi kwakhona, kwaye ngathi yindlela ekumele ibe ngayo.

Ukusuka kwindawo yokubeka ingxaki, yonke into ibonakala ichanekile. Kodwa usebenzisa iinqanawa njengomzekelo: kutheni ukwenza le nqanawa konke konke, ngubani oyifunayo? Ayiboneleli naluphi na umsebenzi. Ngokuqhelekileyo iinqanawa ezinjalo zizipho kubantu abaphezulu kakhulu, abayibeka kwi-shelf ngaphezu kwabo, njengolunye uhlobo lwesimboli, njengophawu. Yaye ukuba umntu onjalo, intloko yeshishini elikhulu okanye igosa eliphezulu, iflegi iya kuyimela njani indwe enqunyulwe intamo? Bekuya kuba ngcono ukuba akazange azi ngayo. Ke, bagqiba njani ukwenza ezi nqanawa ezinokunikwa umntu obalulekileyo?

Indawo ekuphela kwayo ongenakukwazi ukwenza nto ngayo ngumzimba. Kwaye i-hull yenqanawa ingena ngqo entanyeni. Nangona inqanawa ihlanganiswe ngaphandle kwebhotile. Kodwa ayikokudibanisa inqanawa kuphela, bubuchule bokwenyani bobucwebe. Iilevers ezikhethekileyo zongezwa kumacandelo, emva koko zivumela ukuba ziphakanyiswe. Ngokomzekelo, iiseyile zihlanganiswe, zifakwe ngokucophelela ngaphakathi, kwaye emva koko, ngoncedo lwe-tweezers, zitsalwa kwaye ziphakanyiswe ngokuchanekileyo, ngokuchanekileyo. Umphumo ngumsebenzi wobugcisa onokuphiwa isazela esicocekileyo nokuzingca.

Kwaye ukuba sifuna ukuba iprojekthi ibe yimpumelelo, kufuneka kubekho ubuncinci i-jeweler kwiqela. Umntu okhathalele umgangatho wemveliso kwaye uqwalasela yonke imiba, ngaphandle kokuncama nantoni na, nangexesha loxinzelelo, xa iimeko zifuna ukwenza ngokukhawuleza kwindleko ebalulekileyo. Zonke iiprojekthi eziyimpumelelo ezizinzileyo, ezithe zanyamezela uvavanyo lwexesha, zakhelwe phezu kwalo mgaqo. Kukho into echaneke kakhulu kwaye eyodwa malunga nabo, into ethatha ithuba kuwo onke akhoyo anokwenzeka. Kumzekelo kunye nenqanawa ebhotileni, into yokuba i-hull yenqanawa idlula entanyeni idlalwa.

Ukubuyela kumsebenzi wokukhetha iseva yethu ye-caching, le ndlela ingasetyenziswa njani? Ndinikezela olu khetho lokukhetha kuzo zonke iinkqubo ezikhoyo - musa ukugubha ibhotile, ungakhethi, kodwa jonga into abanayo ngokomgaqo, into onokuyijonga xa ukhetha inkqubo.

Apho ukukhangela ibhotile-intamo

Masizame ukungagungqi ibhotile, ukuba singahambi kuyo yonke into ekhoyo enye, kodwa makhe sibone ukuba zeziphi iingxaki eziza kuvela ukuba ngokukhawuleza, ngenxa yomsebenzi wethu, siyila inkqubo enjalo ngokwethu. Ngokuqinisekileyo, asiyi kudibanisa ibhayisekile, kodwa siya kusebenzisa lo mzobo ukusinceda ukuba siqonde ukuba zeziphi iingongoma ekufuneka sinikele ingqalelo kuzo kwiinkcazo zemveliso. Masizobe umzobo onjalo.

Indlela thina kwi-Sportmaster esikhethe ngayo inkqubo ye-caching. Icandelo loku-1

Ukuba inkqubo isasazwa, ngoko siya kuba neeseva ezininzi (6). Masithi kukho ezine (kukulungele ukuzibeka emfanekisweni, kodwa, ngokuqinisekileyo, kunokuba baninzi njengoko uthanda). Ukuba abancedisi bakwiindawo ezahlukeneyo, kuthetha ukuba bonke baqhuba ikhowudi ethile enoxanduva lokuqinisekisa ukuba ezi nodi zenza iqela kwaye, xa kwenzeka ikhefu, zidibanise kwaye ziqaphelane.

Sikwafuna ikhowudi yokuqiqa (2), eneneni imalunga ne-caching. Abathengi banxibelelana nale khowudi nge-API ethile. Ikhowudi yomthengi (1) inokuba ngaphakathi kwe-JVM enye okanye ifikelele kuyo ngenethiwekhi. Ingqiqo ephunyeziweyo ngaphakathi sisigqibo sokuba zeziphi izinto ezizishiya kwi-cache kunye nokuba zeziphi zilahle ngaphandle. Sisebenzisa imemori (3) ukugcina i-cache, kodwa ukuba kuyimfuneko, sinokugcina enye idatha kwidiski (4).

Makhe sibone ukuba zeziphi iindawo umthwalo oya kwenzeka. Ngokwenyani, zonke iintolo nazo zonke iindawo ziya kulayishwa. Okokuqala, phakathi kwekhowudi yomxhasi kunye ne-api, ukuba oku kunxibelelwano lwenethiwekhi, ukuthotywa kunokubonakala kakhulu. Okwesibini, ngaphakathi kwesakhelo se-api ngokwayo - ukuba siyayidlula ngengqiqo enzima, sinokungena kwiingxaki nge-CPU. Kwaye kuya kuba kuhle ukuba ingqiqo ayizange ichithe ixesha kwimemori. Kwaye kukho intsebenziswano kunye nenkqubo yefayile - kwinguqu eqhelekileyo le yi-serialize / buyisela kwaye ubhale / ufunde.

Okulandelayo yintsebenziswano kunye neqela. Ngokunokwenzeka, iya kuba kwinkqubo efanayo, kodwa inokuba ngokwahlukeneyo. Apha kwakhona kufuneka uthathele ingqalelo ukuhanjiswa kwedatha kuyo, isantya solandelelwano lwedatha kunye nokusebenzisana phakathi kweqela.

Ngoku, kwelinye icala, sinokucinga ukuba "zeziphi iigiya eziya kujika" kwinkqubo ye-cache xa sicubungula izicelo ezisuka kwikhowudi yethu, kwaye kwelinye icala, sinokuqikelela ukuba yintoni kwaye zingaphi izicelo zethu eziza kuvelisa le nkqubo. Oku kwanele ukwenza ukhetho olungaphezulu okanye oluncinci - ukukhetha inkqubo yemeko yethu yokusetyenziswa.

ihazelcast

Makhe sibone indlela yokusebenzisa oku kubola kuluhlu lwethu. Umzekelo, Hazelcast.

Ukuze ubeke / uthathe idatha kwi-Hazelcast, ikhowudi yomxhasi ifikelela (1) i-api. I-Hz ikuvumela ukuba usebenzise iseva njengoko ifakwe, kwaye kule meko, ukufikelela kwi-api yindlela yokufowuna ngaphakathi kwe-JVM, enokuthi ithathwe njengekhululekile.

Ukuze i-logic ku-(2) isebenze, i-Hz ixhomekeke kwi-hash ye-byte array yesitshixo se-serialized - oko kukuthi, isitshixo siya kwenziwa serialized kuyo nayiphi na imeko. Oku kungaphezu kwamandla e-Hz.
Izicwangciso zokugxotha ziphunyezwa kakuhle, kodwa kwiimeko ezikhethekileyo unokongeza eyakho. Awunakukhathazeka malunga nale nxalenye.

Ukugcinwa (4) kunokudityaniswa. Kakhulu. Ukusebenzisana (5) ku-embedded kunokuqwalaselwa ngoko nangoko. Utshintshiselwano lwedatha phakathi kweenodi kwiqela (6) - ewe, likhona. Olu lutyalo-mali ekunyamezeleni impazamo ngeendleko zesantya. Inqaku le-Hz elikufuphi ne-cache likuvumela ukuba unciphise ixabiso - idatha efunyenwe kwezinye iindawo kwiqela iya kugcinwa.

Yintoni enokwenziwa kwiimeko ezinjalo ukwandisa isantya?

Umzekelo, ukunqanda ulandelelwano oluphambili kwi-(2) -ncamathisela enye i-cache phezulu kwe-Hazelcast, yedatha eshushu kakhulu. I-Sportmaster yakhetha iCaffeine ngale njongo.

Ukujija kwinqanaba (6), i-Hz inikezela ngeentlobo ezimbini zokugcina: IMap kunye neReplicatedMap.
Indlela thina kwi-Sportmaster esikhethe ngayo inkqubo ye-caching. Icandelo loku-1

Kufanelekile ukukhankanya indlela iHazelcast eyangena ngayo kwisitaki sobuchwephesha beSportmaster.

Kwi-2012, xa sasisebenza kwi-pilot yokuqala yesayithi elizayo, yayiyi-Hazelcast eyajika yaba likhonkco lokuqala ukuba injini yokukhangela ibuyele. Umntu omaziyo waqala "okokuqala" - sachukunyiswa yinto yokuba kwiiyure nje ezimbini emva koko, xa sifaka i-Hz kwinkqubo, yasebenza. Kwaye kwasebenza kakuhle. Yaphela loo mini sasigqibile iimvavanyo ezininzi kwaye sonwabile. Kwaye lo vimba wamandla wawanele ukoyisa izinto ezothusayo ezaziphoswe nguHz ngokuhamba kwexesha. Ngoku iqela le-Sportmaster alinasizathu sokuyishiya iHazelcast.

Kodwa iingxabano ezinje "ikhonkco lokuqala kwi-injini yokukhangela" kunye ne "HelloWorld yahlanganiswa ngokukhawuleza", ngokuqinisekileyo, yinto ekhethekileyo kunye nenqaku lomzuzu apho ukhetho lwenzeka khona. Iimvavanyo zangempela zenkqubo ekhethiweyo ziqala ngokukhululwa kwimveliso, kwaye ngeli nqanaba kufuneka ubeke ingqalelo xa ukhetha nayiphi na inkqubo, kuquka i-cache. Enyanisweni, kwimeko yethu sinokuthi sikhethe iHazelcast ngengozi, kodwa ke kwavela ukuba sikhethe ngokuchanekileyo.

Ukuvelisa, kubaluleke kakhulu: ukubeka iliso, ukuphatha ukungaphumeleli kwiindawo zomntu ngamnye, ukuphindaphinda kwedatha, iindleko zokulinganisa. Oko kukuthi, kukufanelekile ukunikela ingqalelo kwimisebenzi eya kuvela ngexesha lokugcinwa kwenkqubo - xa umthwalo uphindwe ngamashumi amaxesha aphezulu kunokuba bekucwangcisiwe, xa sifaka ngengozi into ethile kwindawo engafanelekanga, xa sifuna ukukhupha inguqu entsha. yekhowudi, buyisela idatha kwaye uyenze ingaqatshelwanga kubaxhasi.

Kuzo zonke ezi mfuno, iHazelcast ngokuqinisekileyo ihambelana nebhili.

Iza kuqhubeka

Kodwa iHazelcast ayisiyiyo i-panacea. Ngo-2017, sakhetha i-Hazelcast ye-cache yolawulo, ngokusekwe kwimibono emihle kumava adlulileyo. Oku kwadlala indima ephambili kwi-joke ekhohlakele kakhulu, ngenxa yokuba sazifumana sikwimeko enzima kwaye "ngobuqhawe" saphuma kuyo iintsuku ezingama-60. Kodwa ngaphezulu koko kwinxalenye elandelayo.

Okwangoku ... IKhowudi eNtsha yolonwabo!

umthombo: www.habr.com

Yongeza izimvo