Mholo! Igama lam ngu-Alexey Pyankov, ndingumphuhlisi kwinkampani ye-Sportmaster. Kulo nto
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.
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:
- Senza uluhlu lwazo zonke iinkqubo ezicetyiswa nguGoogle kunye neStackOverflow. Kancinci ngaphezulu kwama-30
- 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.
- Ngeqela lonke, wonke umntu ukhetha inkqubo elandelayo kuluhlu, uyayiqwalasela, kwaye aqhube iimvavanyo. Ayigqithisi uvavanyo, ayithwali umthwalo - siyayilahla kwaye siqhubele phambili kumgca olandelayo.
- 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.
Kubonakala ngathi yonke into ilungile, ungayithatha kwaye uyijije - yonke into oyifunayo, iyenzeka. Kodwa nje ukuzonwabisa, makhe sijonge abanye abaviwa.
EhCache
I-Redis ilibele, ndikulungele ukukhetha i-EhCache.
Kodwa umoya wokuthand' izwe uyandityhala ukuba ndibone ukuba yintoni elungileyo ngeTarantool.
Tarantool
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
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
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
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
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
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
Apha, ngokuchaseneyo, obomvu nguRedis. Oko kukuthi, iRedis igqwesa iHazelcast ngokwemigaqo yokusebenza. UHazelcast uphumelele uthelekiso lokuqala, uRedis waphumelela owesibini.
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?
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.
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.
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