Yadda mu a Sportmaster ya zaɓi tsarin caching. Kashi na 1

Sannu! Sunana Alexey Pyankov, Ni mai haɓakawa ne a kamfanin Sportmaster. A cikin haka aikawa Na fada yadda aiki akan gidan yanar gizon Sportmaster ya fara a cikin 2012, waɗanne yunƙurin da muka gudanar don "turawa ta hanyar" da kuma akasin haka, menene rake da muka tattara.

A yau ina so in raba tunanin da ya biyo bayan wani batu - zabar tsarin caching don java backend a yankin admin na rukunin yanar gizon. Wannan makirci yana da ma'ana ta musamman a gare ni - kodayake labarin ya bayyana tsawon watanni 2 kacal, a cikin wadannan kwanaki 60 mun yi aiki awanni 12-16 ba tare da hutun kwana daya ba. Ban taba tunani ko tunanin cewa zai yiwu a yi aiki tuƙuru ba.

Saboda haka, na raba rubutun zuwa kashi 2 don kada in loda shi gaba daya. Akasin haka, kashi na farko zai zama haske sosai - shirye-shirye, gabatarwa, wasu la'akari game da abin da caching yake. Idan kun kasance ƙwararren mai haɓakawa ko kun yi aiki tare da caches, daga ɓangaren fasaha ba za a sami wani sabon abu a cikin wannan labarin ba. Amma ga ƙarami, irin wannan ɗan ƙaramin bita zai iya gaya masa wace hanya zai duba idan ya sami kansa a irin wannan mararrabar.

Yadda mu a Sportmaster ya zaɓi tsarin caching. Kashi na 1

Lokacin da aka shigar da sabon sigar gidan yanar gizon Sportmaster, an karɓi bayanan ta hanyar da ta kasance, don sanya shi a hankali, ba dacewa sosai ba. Tushen shine tebur da aka shirya don sigar rukunin yanar gizon da ta gabata (Bitrix), wanda dole ne a ja shi zuwa ETL, an kawo shi zuwa sabon tsari kuma an wadatar da shi da ƙananan abubuwa daban-daban daga dozin ƙarin tsarin. Domin sabon hoto ko bayanin samfurin ya bayyana akan rukunin yanar gizon, dole ne ku jira har zuwa rana ta gaba - sabuntawa kawai da dare, sau ɗaya a rana.

Da farko, akwai damuwa da yawa daga farkon makonni na shiga samarwa wanda irin wannan rashin jin daɗi ga manajojin abun ciki sun kasance kaɗan. Amma, da zaran duk abin ya zauna, ci gaban aikin ya ci gaba - 'yan watanni bayan haka, a farkon 2015, mun fara haɓaka kwamitin gudanarwa na rayayye. A cikin 2015 da 2016, duk abin yana tafiya daidai, muna sakewa akai-akai, kwamitin gudanarwa yana ɗaukar ƙarin shirye-shiryen bayanai, kuma muna shirya don gaskiyar cewa ba da daɗewa ba za a ba wa ƙungiyarmu amana mafi mahimmanci da rikitarwa - samfurin. kewaye (cikakken shiri da kiyaye bayanai akan duk samfuran). Amma a lokacin rani na 2017, kafin kaddamar da da'irar kayayyaki, aikin zai sami kansa a cikin mawuyacin hali - daidai saboda matsalolin caching. Ina so in yi magana game da wannan lamarin a kashi na biyu na wannan littafin mai kashi biyu.

Amma a cikin wannan sakon zan fara daga nesa, zan gabatar da wasu tunani - ra'ayoyi game da caching, wanda zai zama kyakkyawan mataki don gungurawa kafin babban aikin.

Lokacin da aikin caching ya faru

Aikin caching baya bayyana kawai. Mu masu haɓakawa ne, rubuta samfurin software kuma muna son ya kasance cikin buƙata. Idan samfurin yana cikin buƙata kuma yayi nasara, masu amfani zasu zo. Kuma da yawa suna zuwa. Sannan akwai masu amfani da yawa sannan samfurin ya zama mai kayatarwa sosai.

A matakai na farko, ba ma tunanin ingantawa da aikin lamba. Babban abu shine aiki, da sauri mirgine fitar da matukin jirgi da gwaje-gwajen hasashe. Kuma idan kaya ya karu, muna fitar da ƙarfe. Muna kara sau biyu ko uku, sau biyar, watakila sau 10. Wani wuri a nan - kudi ba zai ƙyale shi ba. Sau nawa adadin masu amfani zai karu? Ba zai zama kamar 2-5-10 ba, amma idan ya yi nasara, zai kasance daga 100-1000 zuwa sau dubu 100. Wato ba dade ko ba jima, za ku yi ingantawa.

Bari mu ce wani ɓangare na lambar (bari mu kira wannan ɓangaren aiki) yana ɗaukar lokaci mai tsawo da ba daidai ba, kuma muna so mu rage lokacin aiwatarwa. Aiki na iya zama damar shiga rumbun adana bayanai, ko kuma yana iya zama aiwatar da wasu hadaddun dabaru - babban abu shi ne yana daukar lokaci mai tsawo kafin a kammala shi. Nawa za ku iya rage lokacin aiwatarwa? A cikin iyaka, zaku iya rage shi zuwa sifili, babu ƙari. Ta yaya za ku iya rage lokacin aiwatarwa zuwa sifili? Amsa: kawar da kisa gaba daya. Maimakon haka, mayar da sakamakon nan take. Ta yaya za ku iya gano sakamakon? Amsa: ko dai a lissafta shi ko a duba wani wuri. Yana ɗaukar lokaci mai tsawo don yin lissafi. Kuma yin rahõto shine, alal misali, tunawa da sakamakon da aikin ya haifar a ƙarshe lokacin da ake kira tare da sigogi iri ɗaya.

Wato aiwatar da aikin ba shi da mahimmanci a gare mu. Ya isa kawai don sanin menene sigogin sakamakon ya dogara. Sa'an nan, idan ma'auni na ma'auni suna wakiltar wani abu da za a iya amfani da shi a matsayin maɓalli a wasu ma'ajiyar, to za a iya ajiye sakamakon lissafin kuma a karanta a gaba lokacin da aka isa. Idan wannan rubuce-rubuce da karatun sakamakon ya fi sauri fiye da aiwatar da aikin, muna da riba a cikin sauri. Adadin riba zai iya kaiwa sau 100, 1000, da sau dubu 100 (10 ^ 5 shine banda, amma a cikin yanayin rashin daidaituwa, yana yiwuwa).

Abubuwan buƙatu na asali don tsarin caching

Abu na farko da zai iya zama abin buƙata don tsarin caching shine saurin karantawa da sauri kuma, zuwa ɗan ƙarami, rubuta saurin. Wannan gaskiya ne, amma sai mun fitar da tsarin don samarwa.

Bari mu buga wannan harka.

Bari mu ce mun samar da kayan aiki na yanzu tare da kayan aiki kuma a hankali muna gabatar da caching. Yawan masu amfani yana girma kadan, nauyin yana girma - muna ƙara ɗan caches, murkushe shi a nan da can. Wannan yana ci gaba na ɗan lokaci, kuma yanzu ba a sake kiran ayyuka masu nauyi ba - duk babban nauyin ya faɗi akan cache. Adadin masu amfani a wannan lokacin ya ƙaru sau N.

Kuma idan farkon samar da kayan aiki zai iya zama sau 2-5, to, tare da taimakon cache za mu iya inganta aikin ta hanyar 10 ko, a cikin yanayi mai kyau, ta hanyar 100, a wasu wurare watakila ta hanyar factor. na 1000. Wato, akan hardware iri ɗaya - muna aiwatar da buƙatun sau 100. Mai girma, kun cancanci gingerbread!

Amma yanzu, a wani lokaci mai kyau, kwatsam, tsarin ya rushe kuma cache ɗin ya rushe. Babu wani abu na musamman - bayan haka, an zaɓi cache bisa ga buƙatun "saurin karatu da rubutu, sauran ba su da mahimmanci."

Dangane da nauyin farawa, ajiyar ƙarfenmu ya kasance sau 2-5, kuma nauyin a wannan lokacin ya karu sau 10-100. Yin amfani da cache, mun kawar da kira don ayyuka masu nauyi don haka duk abin da ke aiki. Kuma yanzu, ba tare da cache ba, sau nawa tsarinmu zai ragu? Me zai faru da mu? Tsarin zai fadi.

Ko da cache ɗinmu bai fado ba, amma an share shi na ɗan lokaci, zai buƙaci a ɗora shi, kuma wannan zai ɗauki ɗan lokaci. Kuma a wannan lokacin, babban nauyin zai fada kan aiki.

Kammalawa: ayyukan samarwa da aka ɗora sosai suna buƙatar tsarin caching ba kawai don samun saurin karantawa da rubutawa ba, har ma don tabbatar da amincin bayanai da juriya ga gazawa.

Zafin zabi

A cikin aikin tare da kwamitin gudanarwa, zaɓin ya tafi kamar haka: da farko mun shigar da Hazelcast, saboda Mun riga mun saba da wannan samfurin daga kwarewar babban rukunin yanar gizon. Amma a nan wannan zaɓin ya zama wanda bai yi nasara ba - a ƙarƙashin bayanin martabarmu, Hazelcast ba kawai jinkiri ba ne, amma jinkirin gaske. Kuma a lokacin mun riga mun sanya hannu don ranar saki.

Mai ɓarna: yadda ainihin yanayin ya ɓullo har muka rasa irin wannan babban lamari kuma ya ƙare da wani yanayi mai tsanani da tashin hankali - Zan gaya muku a kashi na biyu - da yadda muka ƙare da kuma yadda muka fita. Amma yanzu - Zan kawai ce cewa yana da yawa damuwa, kuma "don tunani - ko ta yaya ba zan iya tunani ba, muna girgiza kwalban." “Girgiza kwalbar” shima ɓarna ce, ƙari akan haka daga baya.

Abin da muka yi:

  1. Muna yin jerin duk tsarin da Google da StackOverflow ke ba da shawara. Kadan fiye da 30
  2. Muna rubuta gwaje-gwaje tare da kaya na yau da kullun don samarwa. Don yin wannan, mun rubuta bayanan da ke wucewa ta tsarin a cikin yanayin samarwa - wani nau'i na sniffer don bayanai ba akan hanyar sadarwa ba, amma a cikin tsarin. An yi amfani da wannan bayanan daidai a cikin gwaje-gwajen.
  3. Tare da dukan ƙungiyar, kowa ya zaɓi tsarin na gaba daga jerin, ya tsara shi, kuma yana gudanar da gwaje-gwaje. Ba ya wuce gwajin, ba ya ɗaukar kaya - muna jefa shi kuma mu matsa zuwa na gaba a layi.
  4. A tsarin na 17 ya bayyana a fili cewa duk abin da ba shi da bege ba ne. Dakatar da girgiza kwalban, lokaci yayi da za a yi tunani da gaske.

Amma wannan zaɓi ne lokacin da kake buƙatar zaɓar tsarin da zai "samun saurin" a cikin gwaje-gwajen da aka riga aka shirya. Menene idan babu irin waɗannan gwaje-gwajen tukuna kuma kuna son zaɓar da sauri?

Bari mu kwaikwayi wannan zabin (yana da wuya a yi tunanin cewa mai haɓakawa na tsakiya yana rayuwa a cikin sarari, kuma a lokacin zaɓin bai riga ya ƙayyadad da fifikonsa game da wane samfurin da zai fara gwadawa ba - don haka ƙarin tunani shine ƙari na theorist/philosophy/ game da karamin).

Bayan yanke shawarar abubuwan da ake buƙata, za mu fara zaɓar mafita daga cikin akwatin. Me ya sa ya sake ƙirƙira dabaran: za mu je mu ɗauki tsarin caching wanda aka shirya.

Idan kun fara farawa da google shi, to, ba ko ɗaukar oda, amma gabaɗaya, jagororin za su kasance kamar haka. Da farko, za ku gamu da Redis, ana jin shi a ko'ina. Sa'an nan za ku gano cewa EhCache shine mafi tsufa kuma mafi ingantaccen tsarin. Na gaba za mu rubuta game da Tarantool, ci gaban gida wanda ke da nau'i na musamman na mafita. Har ila yau, Ignite, saboda yanzu yana kan karuwa a cikin shahararrun kuma yana jin dadin goyon bayan SberTech. A ƙarshe akwai kuma Hazelcast, saboda a cikin kasuwancin duniya yakan bayyana a tsakanin manyan kamfanoni.

Jerin bai ƙare ba; akwai da yawa na tsarin. Kuma za mu murƙushe abu ɗaya kawai. Bari mu ɗauki tsarin 5 da aka zaɓa don “gasar ƙawa” kuma mu zaɓi. Wanene zai yi nasara?

Redis

Mun karanta abin da suke rubuta a kan official website.
Redis - aikin bude tushen. Yana ba da ma'ajin bayanai a cikin ƙwaƙwalwar ajiya, ikon adana kan-faifai, rarrabawa ta atomatik, babban samuwa da murmurewa daga katsewar hanyar sadarwa.

Da alama cewa komai yana da kyau, zaku iya ɗauka kuma ku dunƙule shi - duk abin da kuke buƙata, yana aikatawa. Amma don jin daɗi kawai, bari mu kalli sauran ƴan takara.

EhCache

EhCache - "mafi amfani da cache don Java" (fassara taken daga gidan yanar gizon hukuma). Hakanan opensource. Sannan mun fahimci cewa Redis ba don java bane, amma gabaɗaya, kuma don yin hulɗa tare da shi kuna buƙatar abin rufewa. Kuma EhCache zai zama mafi dacewa. Menene kuma tsarin yayi alkawari? Amincewa, tabbatarwa, cikakken aiki. To, shi ma ya fi kowa. Kuma caches terabytes na bayanai.

An manta Redis, Na shirya don zaɓar EhCache.

Amma tunanin kishin ƙasa yana motsa ni don ganin abin da ke da kyau game da Tarantool.

Tarantool

Tarantool - ya sadu da sunan "Dandali na haɗa bayanai na lokaci-lokaci". Yana da matukar rikitarwa, don haka mun karanta shafin daki-daki kuma muka sami sanarwa mai ƙarfi: "Cache 100% na bayanai a RAM." Wannan yakamata ya tayar da tambayoyi - bayan haka, ana iya samun ƙarin bayanai fiye da ƙwaƙwalwar ajiya. Bayanin shine yana nufin cewa Tarantool baya gudanar da serialization don rubuta bayanai zuwa faifai daga ƙwaƙwalwar ajiya. Madadin haka, yana amfani da ƙananan fasalulluka na tsarin, lokacin da aka tsara ƙwaƙwalwar ajiya kawai zuwa tsarin fayil tare da kyakkyawan aikin I/O. Gabaɗaya, sun yi wani abu mai ban mamaki da sanyi.

Bari mu dubi aiwatarwa: Hanyar kamfani Mail.ru, Avito, Beeline, Megafon, Alfa-Bank, Gazprom ...

Idan har yanzu akwai shakku game da Tarantool, to, shari'ar aiwatarwa a Mastercard ta ƙare ni. Ina ɗaukar Tarantool.

Amma duk da haka…

Ignite

… akwai sauran Ignite, ana cajin shi azaman “in-memory computing computing...in-memory speeds on petabytes of data.” Har ila yau, akwai fa'idodi da yawa anan: rarraba cache a cikin ƙwaƙwalwar ajiya, ma'ajiyar ƙimar maɓalli mafi sauri da cache, sikeli a kwance, babban samuwa, ingantaccen amincin. Gabaɗaya, ya bayyana cewa mafi sauri shine Ignite.

Ayyuka: Sberbank, American Airlines, Yahoo! Japan. Kuma a sa'an nan na gano cewa Ignite ba kawai ana aiwatar da shi a cikin Sberbank ba, amma ƙungiyar SberTech ta aika da mutanenta zuwa ƙungiyar Ignite kanta don tace samfurin. Wannan yana da ban sha'awa gaba ɗaya kuma na shirya ɗaukar Ignite.

Ba a san dalilin da ya sa ba, ina kallon batu na biyar.

hazelcast

Ina zuwa wurin hazelcast, karatu. Kuma ya bayyana cewa mafi sauri mafita don rarraba caching shine Hazelcast. Yana da oda na girma da sauri fiye da duk sauran mafita kuma gabaɗaya shi ne jagora a fagen grid na bayanan ƙwaƙwalwar ajiya. A kan wannan asalin, ɗaukar wani abu dabam ba don girmama kanku ba ne. Hakanan yana amfani da ma'ajin bayanai masu yawa don ci gaba da aiki na gungu ba tare da asarar bayanai ba.

Shi ke nan, Ina shirye in ɗauki Hazelcast.

Daidaita

Amma idan ka duba, an kwatanta dukkan ’yan takara biyar ta yadda kowannensu ya fi kyau. Yadda za a zabi? Za mu iya ganin wanda ya fi shahara, neman kwatance, kuma ciwon kai zai tafi.

Mun sami daya kamar wannan обзор, zaɓi tsarin mu 5.

Yadda mu a Sportmaster ya zaɓi tsarin caching. Kashi na 1

Anan an jera su: Redis yana saman, Hazelcast yana a matsayi na biyu, Tarantool da Ignite suna samun shahara, EhCache ya kasance kuma ya kasance iri ɗaya.

Amma bari mu duba hanyar lissafi: hanyoyin haɗin yanar gizo, sha'awar gabaɗaya a cikin tsarin, tayin aiki - mai girma! Wato, lokacin da tsarina ya gaza, zan ce: "A'a, abin dogara ne! Akwai tayin aiki da yawa..." Irin wannan sauƙin kwatanta ba zai yi ba.

Duk waɗannan tsarin ba tsarin caching bane kawai. Har ila yau, suna da ayyuka da yawa, ciki har da lokacin da ba a tura bayanai ga abokin ciniki don sarrafawa ba, amma akasin haka: lambar da ake buƙatar aiwatarwa akan bayanan tana motsawa zuwa uwar garken, ana aiwatar da shi a can, kuma sakamakon ya dawo. Kuma ba sau da yawa ana la'akari da su azaman tsarin daban don caching.

To, kada mu daina, bari mu nemo kwatancen tsarin kai tsaye. Bari mu ɗauki manyan zaɓuɓɓuka biyu - Redis da Hazelcast. Muna sha'awar gudun, kuma za mu kwatanta su bisa wannan siga.

Hz vs Redis

Mun sami wannan kwatanta:
Yadda mu a Sportmaster ya zaɓi tsarin caching. Kashi na 1

Blue shine Redis, ja shine Hazelcast. Hazelcast yana cin nasara a ko'ina, kuma akwai dalili don wannan: yana da nau'i-nau'i da yawa, an inganta shi sosai, kowane zaren yana aiki tare da ɓangarensa, don haka babu wani toshewa. Kuma Redis mai zaren guda ɗaya ne; baya amfana daga CPUs masu yawan gaske na zamani. Hazelcast yana da asynchronous I/O, Redis-Jedis yana da toshe kwasfa. Bayan haka, Hazelcast yana amfani da ka'idar binary, kuma Redis shine tushen rubutu, ma'ana ba shi da inganci.

Kawai idan, bari mu juya zuwa wani tushen kwatanta. Me zai nuna mana?

Redis vs Hz

Wani kwatanta:
Yadda mu a Sportmaster ya zaɓi tsarin caching. Kashi na 1

Anan, akasin haka, ja shine Redis. Wato, Redis ya zarce Hazelcast wajen aiki. Hazelcast ya ci kwatancen farko, Redis ya ci na biyu. A nan yayi bayani daidai dalilin da yasa Hazelcast ya lashe kwatancen baya.

Ya bayyana cewa sakamakon na farko da gaske an yi magudi: An ɗauki Redis a cikin akwatin tushe, kuma Hazelcast an keɓance shi don shari'ar gwaji. Sa'an nan kuma ya juya: na farko, ba za mu iya amincewa da kowa ba, kuma na biyu, lokacin da muka zabi tsarin, har yanzu muna buƙatar daidaita shi daidai. Waɗannan saitunan sun haɗa da yawa, kusan ɗaruruwan sigogi.

Girgiza kwalbar

Kuma zan iya bayyana dukan tsarin da muka yi a yanzu tare da ma'anar mai zuwa: "Girgiza kwalban." Wato, yanzu ba sai ka yi shiri ba, yanzu babban abu shi ne ka iya karanta stackoverflow. Kuma ina da mutum a cikin ƙungiyara, ƙwararre, wanda ke aiki daidai da wannan a lokuta masu mahimmanci.

Me yake yi? Yana ganin abin da ya karye, ya ga tari, ya dauki wasu kalmomi daga ciki (wadanda ke da kwarewarsa a cikin shirin), ya yi bincike a Google, ya samu cikas a cikin amsoshi. Ba tare da karantawa ba, ba tare da tunani ba, a cikin amsoshin tambayar, ya zaɓi wani abu mafi kama da jumlar "yi wannan da wancan" (zabar irin wannan amsar ita ce basirarsa, domin ba koyaushe ba ne amsar da aka fi so). ya shafi , ya dubi: idan wani abu ya canza, to, mai girma. Idan bai canza ba, mirgine shi baya. Kuma maimaita farawa-check-search. Kuma ta wannan hanya mai mahimmanci, yana tabbatar da cewa lambar tana aiki bayan ɗan lokaci. Bai san dalili ba, bai san abin da ya yi ba, ba zai iya bayyanawa ba. Amma! Wannan kamuwa da cuta yana aiki. Kuma "wuta ta ƙare." Yanzu bari mu gano abin da muka yi. Lokacin da shirin yayi aiki, tsari ne mai sauƙi. Kuma yana adana lokaci mai yawa.

An bayyana wannan hanya da kyau tare da wannan misali.

Ya kasance sananne sosai don tattara jirgin ruwa a cikin kwalba. A lokaci guda kuma, kwale-kwalen yana da girma kuma mai rauni, kuma wuyan kwalbar yana da kunkuntar, ba zai yiwu a tura shi a ciki ba. Yadda za a hada shi?

Yadda mu a Sportmaster ya zaɓi tsarin caching. Kashi na 1

Akwai irin wannan hanyar, mai sauri da inganci.

Jirgin ya ƙunshi tarin ƙananan abubuwa: sanduna, igiyoyi, jiragen ruwa, manne. Mun sanya duk wannan a cikin kwalba.
Muna ɗaukar kwalban da hannu biyu kuma mu fara girgiza. Muka girgiza da girgiza ta. Kuma yawanci yakan zama cikakkiyar shara, ba shakka. Amma wani lokacin. Wani lokaci yakan zama jirgi! Fiye da daidai, wani abu mai kama da jirgin ruwa.

Muna nuna wannan wani abu ga wani: "Seryoga, ka gani!?" Kuma lalle ne, daga nesa ya zama kamar jirgin ruwa. Amma ba za a iya barin wannan ya ci gaba ba.

Akwai wata hanya kuma. Ana amfani da su ta wasu manyan mutane, irin su hackers.

Na ba wa wannan mutumin aiki, ya yi komai ya tafi. Kuma kun duba - yana kama da an yi shi. Kuma bayan ɗan lokaci, lokacin da lambar ya buƙaci kammalawa, wannan yana farawa saboda shi ... Yana da kyau cewa ya riga ya yi nasarar gudu daga nesa. Waɗannan su ne mutanen da, ta yin amfani da misalin kwalban, za su yi haka: ka ga, inda kasa yake, gilashin yana lanƙwasa. Kuma ba a bayyana gaba ɗaya ko a bayyane yake ko a'a. Sa'an nan "hackers" sun yanke wannan kasa, su sa jirgi a can, sa'an nan kuma manna kasa baya, kuma kamar dai haka ya kamata ya kasance.

Daga ra'ayi na saita matsala, duk abin da yake daidai ne. Amma yin amfani da jiragen ruwa a matsayin misali: me yasa ke yin wannan jirgin kwata-kwata, wa ke bukata ta wata hanya? Ba ya samar da wani aiki. Yawancin lokaci irin waɗannan jiragen ruwa kyauta ne ga mutane masu daraja sosai, waɗanda suka sanya shi a kan shiryayye sama da su, a matsayin wani nau'i na alama, a matsayin alama. Kuma idan irin wannan mutumin, shugaban babban kasuwanci ko babban jami'i, ta yaya tutar za ta tsaya ga irin wannan kutse, wanda aka yanke wuyansa? Zai fi kyau idan bai sani ba. Don haka, ta yaya suka ƙare yin waɗannan jiragen ruwa waɗanda za a iya ba wa wani muhimmin mutum?

Mabuɗin wurin da gaske ba za ku iya yin komai game da shi ba shine jiki. Kuma kwandon jirgin yana daidai da wuyansa. Alhali an tattaro jirgin a wajen kwalbar. Amma ba kawai haɗa jirgi ba ne, kayan ado ne na gaske. Ana ƙara lefi na musamman a cikin abubuwan da aka gyara, wanda zai ba da damar a ɗaga su. Alal misali, ana ninke magudanar ruwa, an shigar da su a hankali, sa'an nan kuma, tare da taimakon tweezers, an ja su da kuma tayar da su daidai, tare da madaidaici. Sakamakon aikin fasaha ne wanda za a iya ba shi kyauta da lamiri mai tsabta da girman kai.

Kuma idan muna son aikin ya yi nasara, dole ne a sami aƙalla mai kayan ado ɗaya a cikin ƙungiyar. Wani wanda ya damu game da ingancin samfurin kuma yayi la'akari da dukkan bangarori, ba tare da sadaukar da wani abu ba, har ma a cikin lokutan damuwa, lokacin da yanayi ya buƙaci yin gaggawa a kashe mahimmanci. Duk ayyukan da suka yi nasara waɗanda suke dawwama, waɗanda suka tsaya tsayin daka, an gina su akan wannan ka'ida. Akwai wani abu madaidaici kuma na musamman game da su, wani abu da ke amfani da duk damar da ake da shi. A cikin misali tare da jirgin a cikin kwalban, gaskiyar cewa kullun jirgin ya wuce ta wuyansa yana wasa.

Komawa kan aikin zaɓar uwar garken caching ɗin mu, ta yaya za a yi amfani da wannan hanyar? Ina ba da wannan zaɓi na zabar daga duk tsarin da ke wanzu - kada ku girgiza kwalban, kada ku zabi, amma dubi abin da suke da shi bisa manufa, abin da za ku nema lokacin zabar tsarin.

Inda za a nemi wuyan kwalban

Bari mu yi ƙoƙari kada mu girgiza kwalban, kada mu shiga cikin duk abin da ke can daya bayan daya, amma bari mu ga irin matsalolin da za su tashi idan muka ba zato ba tsammani, don aikinmu, tsara irin wannan tsarin da kanmu. Tabbas, ba za mu haɗa keken ba, amma za mu yi amfani da wannan zane don taimaka mana gano abubuwan da za mu kula da su a cikin kwatancin samfur. Bari mu zana irin wannan zane.

Yadda mu a Sportmaster ya zaɓi tsarin caching. Kashi na 1

Idan an rarraba tsarin, to za mu sami sabar da yawa (6). Bari mu ce akwai hudu (yana da dacewa don sanya su a cikin hoton, amma, ba shakka, ana iya samun yawancin su kamar yadda kuke so). Idan uwar garken suna kan nodes daban-daban, yana nufin cewa dukkansu suna gudanar da wasu lambobi waɗanda ke da alhakin tabbatar da cewa waɗannan nodes ɗin sun samar da gungu kuma, a yayin hutu, haɗawa da gane juna.

Muna kuma buƙatar dabaru na lamba (2), wanda shine ainihin game da caching. Abokan ciniki suna hulɗa da wannan lambar ta wasu API. Lambar abokin ciniki (1) na iya kasancewa ko dai a cikin JVM iri ɗaya ko samun dama ta hanyar hanyar sadarwa. Hankalin da aka aiwatar a ciki shine yanke shawarar abubuwan da za a bar a cikin cache da abin da za a jefa. Muna amfani da ƙwaƙwalwar ajiya (3) don adana cache, amma idan ya cancanta, zamu iya adana wasu bayanan akan faifai (4).

Bari mu ga a cikin wanne sassa nauyin zai faru. A zahiri, kowace kibiya da kowace kumburi za a ɗora ta. Da fari dai, tsakanin lambar abokin ciniki da api, idan wannan sadarwar hanyar sadarwa ce, tallafin zai iya zama sananne sosai. Abu na biyu, a cikin tsarin api da kanta - idan muka wuce shi da hadaddun dabaru, zamu iya fuskantar matsaloli tare da CPU. Kuma zai yi kyau idan basira ba ta ɓata lokaci akan ƙwaƙwalwar ajiya ba. Kuma akwai sauran hulɗa tare da tsarin fayil - a cikin sigar ta yau da kullun wannan shine serialize / dawo da rubutu / karantawa.

Na gaba shine hulɗa tare da tari. Mafi mahimmanci, zai kasance a cikin tsarin guda ɗaya, amma yana iya zama daban. Anan kuma kuna buƙatar yin la'akari da canja wurin bayanai zuwa gare su, saurin tattara bayanai da mu'amala tsakanin gungu.

Yanzu, a gefe guda, zamu iya tunanin "abin da gears zai juya" a cikin tsarin cache lokacin sarrafa buƙatun daga lambar mu, kuma a gefe guda, zamu iya kimanta menene da adadin buƙatun lambar mu za ta haifar da wannan tsarin. Wannan ya isa don yin zaɓi mai zurfi ko žasa - don zaɓar tsarin don yanayin amfaninmu.

hazelcast

Bari mu ga yadda za a yi amfani da wannan bazuwar zuwa lissafin mu. Alal misali, Hazelcast.

Domin saka/ɗaukar bayanai daga Hazelcast, lambar abokin ciniki tana samun dama ga (1) api. Hz yana ba ku damar gudanar da uwar garken kamar yadda aka saka, kuma a wannan yanayin, samun dama ga api shine hanyar kira a cikin JVM, wanda za'a iya ɗaukar shi kyauta.

Domin ma'anar (2) ta yi aiki, Hz ya dogara da zanta na jeri na byte na maɓallin serialized - wato, maɓallin za a jera shi a kowane hali. Wannan babu makawa sama da sama don Hz.
Ana aiwatar da dabarun korar da kyau, amma ga lokuta na musamman zaka iya ƙara naka. Ba lallai ne ku damu da wannan bangare ba.

Ana iya haɗa ma'ajiya (4). Mai girma. Ana iya ɗaukar ma'amala (5) don haɗawa nan take. Musanya bayanai tsakanin nodes a cikin tari (6) - i, akwai. Wannan saka hannun jari ne a cikin haƙurin kuskure a kashe saurin gudu. Halin Hz Kusa-cache yana ba ku damar rage farashi - za a adana bayanan da aka karɓa daga wasu nodes a cikin gungu.

Menene za a iya yi a irin waɗannan yanayi don ƙara sauri?

Misali, don guje wa serialization na maɓalli a cikin (2) - haɗa wani cache a saman Hazelcast, don mafi kyawun bayanai. Sportmaster ya zaɓi Caffeine don wannan dalili.

Don karkatarwa a matakin (6), Hz yana ba da nau'ikan ajiya iri biyu: IMap da ReplicatedMap.
Yadda mu a Sportmaster ya zaɓi tsarin caching. Kashi na 1

Yana da daraja ambaton yadda Hazelcast ya shiga cikin tarin fasaha na Sportmaster.

A cikin 2012, lokacin da muke aiki akan matukin jirgi na farko na rukunin yanar gizo na gaba, Hazelcast ce ta zama hanyar haɗin farko da injin binciken ya dawo. Masanin ya fara "lokacin farko" - mun sha'awar gaskiyar cewa kawai sa'o'i biyu bayan haka, lokacin da muka kunna Hz a cikin tsarin, ya yi aiki. Kuma yayi aiki da kyau. A karshen ranar mun kammala gwaje-gwaje da yawa kuma mun yi farin ciki. Kuma wannan ajiyar kuzari ya isa ya shawo kan abubuwan mamakin da Hz ya jefa sama da lokaci. Yanzu ƙungiyar Sportmaster ba ta da dalilin yin watsi da Hazelcast.

Amma irin waɗannan muhawarar kamar "hanyar hanyar farko a cikin injin bincike" da "HelloWorld an taru da sauri" sune, ba shakka, banda da kuma yanayin lokacin da zaɓin ya faru. Gwaje-gwaje na ainihi don tsarin da aka zaɓa yana farawa tare da saki a cikin samarwa, kuma a wannan mataki ya kamata ku kula lokacin zabar kowane tsarin, ciki har da cache. A zahiri, a cikin yanayinmu zamu iya cewa mun zaɓi Hazelcast ta hanyar haɗari, amma sai ya zama cewa mun zaɓi daidai.

Don samarwa, mafi mahimmanci: saka idanu, sarrafa gazawar akan nodes, kwafin bayanai, farashin ƙima. Wato, yana da kyau a mai da hankali ga ayyukan da za su taso a lokacin kiyaye tsarin - lokacin da nauyin ya ninka sau goma fiye da yadda aka tsara, lokacin da muka yi kuskuren loda wani abu a wurin da ba daidai ba, lokacin da muke buƙatar fitar da wani sabon salo. na code, maye gurbin bayanai kuma yi shi ba tare da lura da abokan ciniki ba.

Don duk waɗannan buƙatun, Hazelcast tabbas ya dace da lissafin.

A ci gaba

Amma Hazelcast ba panacea bane. A cikin 2017, mun zaɓi Hazelcast don cache mai gudanarwa, kawai bisa kyawawan ra'ayoyi daga gogewar da ta gabata. Wannan ya taka muhimmiyar rawa a cikin wani mummunan ba'a, saboda wanda muka sami kanmu a cikin wani mawuyacin hali kuma "jarumi" mun fita daga ciki har tsawon kwanaki 60. Amma ƙari akan haka a kashi na gaba.

A halin yanzu... Happy New Code!

source: www.habr.com

Add a comment