Giunsa namo sa Sportmaster ang pagpili sa usa ka sistema sa caching. Bahin 1

Hello! Ang akong ngalan mao si Alexey Pyankov, usa ako ka developer sa kompanya nga Sportmaster. Sa niana post Gisultihan nako kung giunsa nagsugod ang pagtrabaho sa website sa Sportmaster kaniadtong 2012, kung unsang mga inisyatibo ang nahimo namon nga "pagduso" ug vice versa, kung unsang rake ang among nakolekta.

Karon gusto nakong ipaambit ang mga hunahuna nga nagsunod sa laing hilisgutan - pagpili sa usa ka sistema sa caching alang sa java backend sa site admin area. Kini nga laraw adunay usa ka espesyal nga kahulugan alang kanako - bisan kung ang istorya gibuklad lamang sa 2 ka bulan, sulod niining 60 ka adlaw nagtrabaho kami 12-16 ka oras ug walay usa ka adlaw nga walay pahulay. Wala gyud ko maghunahuna o maghunahuna nga posible nga magtrabaho pag-ayo.

Busa, gibahin nako ang teksto sa 2 ka bahin aron dili kini ma-load sa hingpit. Sa kasukwahi, ang unang bahin mahimong gaan kaayo - pagpangandam, pasiuna, pipila ka mga konsiderasyon kung unsa ang caching. Kung ikaw usa na ka eksperyensiyado nga developer o nagtrabaho sa mga cache, gikan sa teknikal nga bahin lagmit wala’y bag-o sa kini nga artikulo. Apan alang sa usa ka junior, ang ingon nga gamay nga pagrepaso makasulti kaniya kung asa nga direksyon ang tan-awon kung makit-an niya ang iyang kaugalingon sa ingon nga kinasang-an sa dalan.

Giunsa namo sa Sportmaster ang pagpili sa usa ka sistema sa caching. Bahin 1

Sa diha nga ang bag-ong bersyon sa Sportmaster website gibutang sa produksyon, ang data nadawat sa usa ka paagi nga, sa pagbutang niini sa malumo, dili kaayo kombenyente. Ang sukaranan mao ang mga lamesa nga giandam alang sa miaging bersyon sa site (Bitrix), nga kinahanglan ibira sa ETL, gidala sa usa ka bag-ong porma ug gipadato sa lainlaing gagmay nga mga butang gikan sa usa ka dosena pa nga mga sistema. Aron ang usa ka bag-ong hulagway o paghulagway sa produkto makita sa site, kinahanglan ka maghulat hangtud sa sunod nga adlaw - mga update lamang sa gabii, kausa sa usa ka adlaw.

Sa sinugdan, adunay daghang mga kabalaka gikan sa unang mga semana sa pag-adto sa produksiyon nga ang ingon nga mga kahasol alang sa mga tagdumala sa sulud usa ka gamay nga butang. Apan, sa diha nga ang tanan nahusay, ang pag-uswag sa proyekto nagpadayon - pipila ka bulan ang milabay, sa sinugdanan sa 2015, nagsugod kami sa aktibong pagpalambo sa admin panel. Sa 2015 ug 2016, maayo ang tanan, kanunay namon nga gipagawas, ang admin panel naglangkob sa labi pa nga pag-andam sa datos, ug nangandam kami sa kamatuoran nga sa dili madugay ang among team itugyan sa labing hinungdanon ug komplikado nga butang - ang produkto sirkito (bug-os nga pagpangandam ug pagmentinar sa datos sa tanang produkto). Apan sa ting-init sa 2017, sa wala pa ang paglansad sa commodity circuit, ang proyekto makit-an ang kaugalingon sa usa ka lisud kaayo nga kahimtang - tungod sa mga problema sa caching. Gusto nakong hisgutan kini nga yugto sa ikaduhang bahin niining duha ka bahin nga publikasyon.

Apan sa kini nga post magsugod ako gikan sa layo, ipakita nako ang pipila ka mga hunahuna - mga ideya bahin sa pag-cache, nga usa ka maayong lakang aron ma-scroll sa wala pa ang usa ka dako nga proyekto.

Kung mahitabo ang usa ka buluhaton sa pag-cache

Ang buluhaton sa pag-cache dili lang makita. Kami mga developers, nagsulat sa usa ka software nga produkto ug gusto nga kini gikinahanglan. Kung ang produkto gipangayo ug malampuson, ang mga tiggamit moabut. Ug nagkadaghan ang nangabot. Ug unya adunay daghang mga tiggamit ug unya ang produkto mahimong puno kaayo.

Sa una nga mga yugto, wala kami maghunahuna bahin sa pag-optimize ug paghimo sa code. Ang nag-unang butang mao ang pag-andar, dali nga paglansad sa usa ka piloto ug pagsulay sa mga pangagpas. Ug kung motaas ang karga, among ibomba ang puthaw. Atong dugangan kini duha o tulo ka beses, lima ka beses, tingali 10 ka beses. Sa usa ka dapit dinhi - ang panalapi dili na motugot niini. Pila ka beses nga modaghan ang mga tiggamit? Dili kini sama sa 2-5-10, apan kung malampuson, kini gikan sa 100-1000 hangtod 100 ka libo ka beses. Kana mao, sa madugay o sa madali, kinahanglan nimo nga buhaton ang pag-optimize.

Ingnon ta nga ang pipila ka bahin sa code (tawgon nato kini nga bahin nga usa ka function) nagkinahanglan og dili maayo nga taas nga panahon, ug gusto namong pakunhuran ang oras sa pagpatuman. Ang usa ka function mahimong access sa usa ka database, o kini mahimo nga ang pagpatuman sa pipila ka komplikado nga lohika - ang nag-unang butang mao nga kini nagkinahanglan og taas nga panahon sa pagpatuman. Unsa ka dako ang mahimo nimong pakunhuran ang oras sa pagpatay? Sa limitasyon, mahimo nimo kining pakunhuran ngadto sa zero, dili na. Giunsa nimo makunhuran ang oras sa pagpatuman sa zero? Tubag: wagtangon sa hingpit ang pagpatay. Hinuon, ibalik dayon ang resulta. Unsaon nimo pagkahibalo sa resulta? Tubag: kalkulado kini o tan-awa sa usa ka dapit. Nagkinahanglan kini og taas nga panahon sa pagkalkulo. Ug ang pagpaniid mao, pananglitan, ang paghinumdom sa resulta nga gihimo sa function sa katapusang higayon kung gitawag nga adunay parehas nga mga parameter.

Sa ato pa, dili importante kanamo ang pagpatuman sa function. Igo lang nga mahibal-an kung unsang mga parameter ang nagdepende sa resulta. Pagkahuman, kung ang mga kantidad sa parameter girepresentahan sa porma sa usa ka butang nga mahimong magamit ingon usa ka yawe sa pipila nga pagtipig, nan ang resulta sa pagkalkula mahimong maluwas ug mabasa sa sunod nga higayon nga kini ma-access. Kung kini nga pagsulat ug pagbasa sa resulta mas paspas kaysa sa pagpatuman sa function, kita adunay ganansya sa mga termino sa katulin. Ang kantidad sa ganansya mahimong moabot sa 100, 1000, ug 100 ka libo ka beses (10^5 kay usa ka eksepsiyon, apan sa kaso sa usa ka medyo lagging base, kini posible).

Panguna nga mga kinahanglanon alang sa usa ka sistema sa pag-cache

Ang una nga butang nga mahimong kinahanglanon alang sa usa ka sistema sa pag-cache mao ang paspas nga pagbasa sa tulin ug, sa usa ka gamay nga gamay nga gidak-on, katulin sa pagsulat. Tinuod kini, apan hangtod nga ma-roll out namon ang sistema sa produksiyon.

Atong dulaon kini nga kaso.

Ingnon ta nga gihatagan namo ang kasamtangan nga load sa hardware ug karon anam-anam nga gipaila ang caching. Ang gidaghanon sa mga tiggamit motubo og gamay, ang load motubo - kami magdugang og gamay nga mga cache, i-screw kini dinhi ug didto. Nagpadayon kini sulod sa pipila ka panahon, ug karon ang bug-at nga mga gimbuhaton halos wala na gitawag - ang tibuok nga nag-unang karga nahulog sa cache. Ang gidaghanon sa mga tiggamit niining panahona misaka N ka beses.

Ug kung ang inisyal nga suplay sa hardware mahimong 2-5 ka beses, nan sa tabang sa cache mahimo naton mapauswag ang pasundayag sa usa ka hinungdan nga 10 o, sa usa ka maayo nga kaso, sa usa ka hinungdan nga 100, sa pipila ka mga lugar tingali pinaagi sa usa ka hinungdan. sa 1000. Sa ato pa, sa parehas nga hardware - giproseso namon ang 100 ka beses nga daghang mga hangyo. Maayo, angayan nimo ang gingerbread!

Apan karon, sa usa ka maayong higayon, sa higayon, ang sistema nahagsa ug ang cache nahugno. Wala’y espesyal - pagkahuman, gipili ang cache pinasukad sa kinahanglanon nga "taas nga tulin sa pagbasa ug pagsulat, ang nahabilin dili igsapayan."

May kalabotan sa pagsugod nga pagkarga, ang among reserba nga puthaw 2-5 ka beses, ug ang pagkarga sa kini nga panahon nagdugang 10-100 ka beses. Gamit ang cache, giwagtang namon ang mga tawag alang sa bug-at nga mga gimbuhaton ug busa ang tanan nagtrabaho. Ug karon, kung wala’y cache, pila ka beses nga mohinay ang among sistema? Unsay mahitabo kanato? Mahulog ang sistema.

Bisan kung ang among cache wala mag-crash, apan na-clear lang sa makadiyot, kinahanglan kini nga magpainit, ug kini magdugay. Ug niining panahona, ang panguna nga palas-anon mahulog sa pag-andar.

Konklusyon: ang mga proyekto sa produksiyon nga puno kaayo nga nanginahanglan usa ka sistema sa pag-cache dili lamang aron adunay taas nga katulin sa pagbasa ug pagsulat, apan aron masiguro usab ang kaluwasan sa datos ug pagsukol sa mga kapakyasan.

Daghang pagpili

Sa usa ka proyekto nga adunay admin panel, ang pagpili ingon niini: una among gi-install ang Hazelcast, tungod kay Nasinati na namo kini nga produkto gikan sa kasinatian sa main site. Apan dinhi kini nga pagpili nahimo nga wala magmalampuson - ubos sa among load profile, ang Hazelcast dili lang hinay, apan hilabihan ka hinay. Ug niadtong panahona nagpalista na kami alang sa petsa sa pagpagawas.

Spoiler: kung unsa gyud ang mga kahimtang nga naugmad nga wala kami usa ka dako nga deal ug natapos sa usa ka mahait ug tensiyonado nga kahimtang - isulti ko kanimo sa ikaduha nga bahin - ug kung giunsa kami natapos ug kung giunsa kami nakagawas. Apan karon - isulti ra nako nga kini usa ka daghang kapit-os, ug "sa paghunahuna - sa usa ka paagi dili ako makahunahuna, giuyog namon ang botelya." Ang "pag-uyog sa botelya" usa usab ka spoiler, labi pa sa ulahi.

Ang among gibuhat:

  1. Naghimo kami usa ka lista sa tanan nga mga sistema nga gisugyot sa Google ug StackOverflow. Labaw gamay sa 30
  2. Gisulat namon ang mga pagsulay nga adunay usa ka karga nga kasagaran alang sa produksiyon. Aron mahimo kini, among girekord ang mga datos nga moagi sa sistema sa usa ka palibot sa produksiyon - usa ka matang sa sniffer alang sa datos dili sa network, apan sa sulod sa sistema. Eksakto nga kini nga datos gigamit sa mga pagsulay.
  3. Uban sa tibuok team, ang tanan mopili sa sunod nga sistema gikan sa listahan, i-configure kini, ug magpadagan sa mga pagsulay. Dili kini makapasar sa pagsulay, wala kini magdala sa luwan - gilabay namo kini ug nagpadayon sa sunod nga linya.
  4. Sa ika-17 nga sistema nahimong tin-aw nga ang tanan walay paglaum. Hunonga ang pag-uyog sa botelya, panahon na sa paghunahuna nga seryoso.

Apan kini usa ka kapilian kung kinahanglan nimo nga mopili usa ka sistema nga "makalusot sa katulin" sa mga pre-andam nga mga pagsulay. Unsa kaha kung wala pa ang ingon nga mga pagsulay ug gusto nimo nga makapili dayon?

Atong i-modelo kini nga kapilian (lisud hunahunaon nga ang usa ka tunga-tunga + nga developer nagpuyo sa usa ka haw-ang, ug sa panahon sa pagpili wala pa mapormal ang iyang gusto kung unsang produkto ang una nga sulayan - busa, ang dugang nga pangatarungan labi pa sa usa ka teorista / pilosopiya / mahitungod sa usa ka junior).

Kung nakahukom sa mga kinahanglanon, magsugod kami sa pagpili sa usa ka solusyon gikan sa kahon. Ngano nga gibag-o ang ligid: moadto kami ug magkuha usa ka andam nga sistema sa caching.

Kung nagsugod ka pa lang ug google kini, ihatag o kuhaa ang order, apan sa kinatibuk-an, ang mga panudlo mahimong ingon niini. Una sa tanan, makit-an nimo ang Redis, nadungog kini bisan diin. Unya mahibal-an nimo nga ang EhCache mao ang labing karaan ug labing napamatud-an nga sistema. Sunod atong isulat ang mahitungod sa Tarantool, usa ka domestic development nga adunay usa ka talagsaon nga aspeto sa solusyon. Ug usab Ignite, tungod kay kini karon sa pagtaas sa pagkapopular ug nalingaw sa suporta sa SberTech. Sa katapusan adunay usab Hazelcast, tungod kay sa kalibutan sa negosyo kini kanunay nga makita sa mga dagkong kompanya.

Ang lista dili kompleto; adunay daghang mga sistema. Ug usa ra ka butang ang atong ibaliwala. Atong kuhaon ang pinili nga 5 ka sistema para sa “beauty contest” ug magpili. Kinsa ang mahimong mananaog?

Redis

Gibasa namo ang ilang gisulat sa opisyal nga website.
Redis - opensource nga proyekto. Nagtanyag og in-memory data storage, ang abilidad sa pagluwas sa on-disk, auto-partitioning, taas nga availability ug recovery gikan sa network outages.

Ingon og maayo ang tanan, mahimo nimo kini kuhaon ug i-screw kini - ang tanan nga imong kinahanglan, mahimo kini. Apan alang sa kalingawan, tan-awon nato ang ubang mga kandidato.

EhCache

EhCache - "ang labing kaylap nga gigamit nga cache alang sa Java" (paghubad sa slogan gikan sa opisyal nga website). Opensource usab. Ug unya nahibal-an namon nga ang Redis dili alang sa java, apan sa kinatibuk-an, ug aron makig-uban niini kinahanglan nimo ang usa ka wrapper. Ug ang EhCache mahimong mas sayon. Unsa pa ang gisaad sa sistema? Kasaligan, napamatud-an, bug-os nga pagpaandar. Aw, kini usab ang labing komon. Ug nagtago sa mga terabytes sa datos.

Nakalimtan na si Redis, andam kong pilion ang EhCache.

Apan ang usa ka pagbati sa patriyotismo nagduso kanako nga makita kung unsa ang maayo sa Tarantool.

Tarantool

Tarantool - nagtagbo sa ngalan nga "Real-time data integration platform". Kini daw komplikado kaayo, mao nga among gibasa ang panid sa detalye ug nakit-an ang usa ka kusog nga pahayag: "Nag-cache sa 100% sa data sa RAM." Kini kinahanglan nga magpatunghag mga pangutana - bisan pa, mahimo’g adunay daghang mga datos kaysa memorya. Ang katin-awan mao nga kini nagpasabut nga ang Tarantool wala magpadagan sa serialization aron isulat ang data sa disk gikan sa memorya. Hinunoa, kini naggamit sa ubos nga lebel nga mga bahin sa sistema, sa diha nga ang memorya yano nga mapa sa usa ka file system nga adunay maayo kaayo nga performance sa I/O. Sa kinatibuk-an, nakahimo sila og usa ka butang nga talagsaon ug bugnaw.

Atong tan-awon ang mga pagpatuman: Mail.ru corporate highway, Avito, Beeline, Megafon, Alfa-Bank, Gazprom...

Kung aduna pa'y mga pagduhaduha mahitungod sa Tarantool, nan ang kaso sa pagpatuman sa Mastercard nagtapos kanako. Gikuha nako ang Tarantool.

Apan bisan pa…

Ignite

… naa pa ba Ignite, gisingil isip "in-memory computing platform...in-memory speeds sa mga petabytes sa data." Adunay usab daghang mga bentaha dinhi: giapod-apod nga in-memory cache, ang pinakapaspas nga key-value storage ug cache, horizontal scaling, taas nga pagkaanaa, higpit nga integridad. Sa kinatibuk-an, kini nahimo nga ang labing paspas mao ang Ignite.

Implementasyon: Sberbank, American Airlines, Yahoo! Japan. Ug unya akong nahibal-an nga ang Ignite dili lang gipatuman sa Sberbank, apan ang SberTech team nagpadala sa mga tawo niini ngadto sa Ignite team mismo aron sa pagpino sa produkto. Kini mao ang bug-os nga madanihon ug ako andam sa pagkuha sa Ignite.

Kini hingpit nga dili klaro kung ngano, akong gitan-aw ang ikalima nga punto.

hazelcast

moadto ko sa site hazelcast, pagbasa. Ug kini nahimo nga ang labing paspas nga solusyon alang sa gipang-apod-apod nga caching mao ang Hazelcast. Kini mao ang mga order sa magnitude nga mas paspas kay sa tanan nga uban nga mga solusyon ug sa kinatibuk-an kini usa ka lider sa natad sa in-memory data grid. Batok niini nga background, ang pagkuha sa lain nga butang dili ang pagtahod sa imong kaugalingon. Gigamit usab niini ang sobra nga pagtipig sa datos alang sa padayon nga operasyon sa cluster nga wala’y pagkawala sa datos.

Mao to, andam nako mukuha ug Hazelcast.

Pagtandi

Apan kung imong tan-awon, ang tanan nga lima ka mga kandidato gihulagway sa paagi nga ang matag usa kanila mao ang labing kaayo. Unsaon pagpili? Makita nato kung asa ang labing popular, pangitaa ang mga pagtandi, ug ang labad sa ulo mawala.

Kita makakita og usa nga sama niini usab, pilia ang among 5 ka sistema.

Giunsa namo sa Sportmaster ang pagpili sa usa ka sistema sa caching. Bahin 1

Dinhi sila gihan-ay: Ang Redis naa sa taas, ang Hazelcast naa sa ikaduha nga lugar, ang Tarantool ug Ignite nagkapopular, ang EhCache kaniadto ug nagpabilin nga pareho.

Apan atong tan-awon pamaagi sa kalkulasyon: mga link sa mga website, kinatibuk-ang interes sa sistema, mga tanyag sa trabaho - maayo! Sa ato pa, kung mapakyas ang akong sistema, moingon ako: "Dili, kasaligan kini! Adunay daghang mga tanyag nga trabaho. ”… Ang ingon nga yano nga pagtandi dili mahimo.

Ang tanan niini nga mga sistema dili lamang mga sistema sa pag-cache. Daghan usab sila nga mga pag-andar, lakip na kung ang mga datos wala ma-pump sa kliyente alang sa pagproseso, apan vice versa: ang code nga kinahanglan ipatuman sa mga data mobalhin sa server, ipatuman didto, ug ang resulta ibalik. Ug dili sila kanunay nga giisip nga usa ka bulag nga sistema alang sa pag-cache.

Okay, dili kita mohunong, mangita kita og direkta nga pagtandi sa mga sistema. Atong kuhaon ang nag-una nga duha nga kapilian - Redis ug Hazelcast. Interesado kami sa katulin, ug among itandi kini base sa kini nga parameter.

Hz batok sa Redis

Atong makita kini pagtandi:
Giunsa namo sa Sportmaster ang pagpili sa usa ka sistema sa caching. Bahin 1

Asul ang Redis, pula ang Hazelcast. Ang Hazelcast nakadaog bisan asa, ug adunay katarungan alang niini: kini multi-threaded, labi nga na-optimize, ang matag thread nagtrabaho sa kaugalingon nga partisyon, mao nga wala’y pag-block. Ug ang Redis single-threaded; wala kini makabenepisyo sa modernong multi-core nga mga CPU. Ang Hazelcast adunay asynchronous nga I/O, ang Redis-Jedis adunay mga blocking socket. Human sa tanan, ang Hazelcast naggamit sa usa ka binary protocol, ug ang Redis kay text-centric, nagpasabot nga kini dili epektibo.

In case lang, modangop ta sa laing tinubdan sa pagtandi. Unsay iyang ipakita kanato?

Redis batok sa Hz

Lain pagtandi:
Giunsa namo sa Sportmaster ang pagpili sa usa ka sistema sa caching. Bahin 1

Dinhi, sa kasukwahi, pula ang Redis. Kana mao, ang Redis milabaw sa Hazelcast sa mga termino sa pasundayag. Si Hazelcast nakadaog sa unang pagtandi, si Redis nakadaog sa ikaduha. Dinhi mismo gipatin-aw sa tukma kung ngano nga nakadaog si Hazelcast sa miaging pagtandi.

Kini nahimo nga ang resulta sa una sa tinuud gi-rigged: Redis gikuha sa base nga kahon, ug ang Hazelcast gipahaum alang sa usa ka pagsulay nga kaso. Unya kini nahimo: una, dili kami makasalig sa bisan kinsa, ug ikaduha, kung sa katapusan gipili namon ang usa ka sistema, kinahanglan pa namon nga i-configure kini sa husto. Kini nga mga setting naglakip sa dosena, hapit gatusan nga mga parameter.

Pag-uyog sa botelya

Ug mapasabut nako ang tibuuk nga proseso nga nahimo na naton karon sa mosunod nga metapora: "Pag-uyog sa botelya." Kana mao, karon dili ka kinahanglan nga magprograma, karon ang panguna nga butang mao ang makabasa sa stackoverflow. Ug ako adunay usa ka tawo sa akong team, usa ka propesyonal, nga nagtrabaho sama niini sa kritikal nga mga higayon.

Unsa iyang gibuhat? Nakita niya ang usa ka butang nga nabuak, nakakita sa usa ka stack trace, gikuha ang pipila ka mga pulong gikan niini (nga mao ang iyang kahanas sa programa), pagpangita sa Google, nakit-an ang stackoverflow taliwala sa mga tubag. Kung wala magbasa, nga wala maghunahuna, taliwala sa mga tubag sa pangutana, gipili niya ang usa ka butang nga labing kaamgid sa mga pulong nga "buhata kini ug kana" (pagpili sa ingon nga tubag mao ang iyang talento, tungod kay dili kanunay ang tubag ang nakadawat sa labing daghang gusto), magamit , tan-awon: kung adunay nausab, unya maayo. Kung wala kini mausab, i-roll kini balik. Ug sublion ang paglansad-check-search. Ug sa kini nga intuitive nga paagi, iyang gisiguro nga ang code molihok pagkahuman sa pila ka oras. Wala siya kabalo ngano, wala siya kabalo sa iyang gibuhat, di siya maka explain. Apan! Kini nga impeksyon molihok. Ug “ang kalayo napalong.” Karon atong mahibal-an kung unsa ang atong gibuhat. Kung ang programa molihok, kini usa ka han-ay sa kadako nga labi kadali. Ug kini makadaginot ug daghang panahon.

Kini nga pamaagi maayo kaayo nga gipatin-aw uban niini nga pananglitan.

Kaniadto popular kaayo ang pagkolekta ug sakayan sa usa ka botelya. Sa samang higayon, ang sailboat dako ug huyang, ug ang liog sa botelya hiktin kaayo, imposible nga itulod kini sa sulod. Giunsa kini pag-assemble?

Giunsa namo sa Sportmaster ang pagpili sa usa ka sistema sa caching. Bahin 1

Adunay ingon nga pamaagi, paspas kaayo ug epektibo kaayo.

Ang barko naglangkob sa usa ka hugpong sa gagmay nga mga butang: mga sungkod, mga pisi, mga layag, papilit. Gibutang namo kining tanan sa usa ka botelya.
Gikuha namo ang botelya sa duha ka kamot ug nagsugod sa pag-uyog. Giuyog namo siya. Ug kasagaran kini nahimo nga kompleto nga basura, siyempre. Pero usahay. Usahay kini nahimo nga usa ka barko! Sa mas tukma, usa ka butang nga susama sa usa ka barko.

Gipakita namo kini sa usa ka tawo: "Seryoga, nakita ba nimo!?" Ug sa pagkatinuod, gikan sa layo morag barko. Apan dili kini tugotan nga magpadayon.

Adunay laing paagi. Gigamit kini sa mas abante nga mga lalaki, sama sa mga hacker.

Gihatagan nako kini nga lalaki og buluhaton, gibuhat niya ang tanan ug mibiya. Ug tan-awon nimo - morag nahuman na. Ug pagkataud-taud, kung kinahanglan na nga ma-finalize ang code, nagsugod kini tungod kaniya ... Maayo nga nakadagan na siya sa layo. Kini ang mga lalaki nga, gamit ang panig-ingnan sa usa ka botelya, buhaton kini: nakita nimo, kung diin ang ilawom, ang baso nagliko. Ug dili kini hingpit nga klaro kung kini transparent o dili. Dayon ang mga "hacker" nagputol niini nga ubos, nagsal-ot sa usa ka barko didto, unya gipapilit pag-usab ang ubos, ug kini ingon nga ingon niana kini.

Gikan sa punto sa panglantaw sa pagpahimutang sa problema, ang tanan ingon og husto. Apan ang paggamit sa mga barko ingon usa ka pananglitan: ngano nga buhaton kini nga barko, kinsa pa ang nanginahanglan niini? Wala kini maghatag bisan unsang gamit. Kasagaran ang ingon nga mga barko mga regalo sa taas kaayo nga ranggo nga mga tawo, nga nagbutang niini sa usa ka estante sa ibabaw nila, ingon usa ka matang sa simbolo, ingon usa ka timaan. Ug kung ang ingon nga tawo, ang pangulo sa usa ka dako nga negosyo o usa ka taas nga ranggo nga opisyal, unsaon pagbarug sa bandila alang sa ingon nga usa ka hack, nga ang liog niini giputol? Mas maayo pa nga wala gyud siya makahibalo bahin niini. Busa, giunsa nila paghimo kini nga mga barko nga mahimong ihatag sa usa ka hinungdanon nga tawo?

Ang bugtong yawe nga lugar nga wala gyud nimo mahimo mao ang lawas. Ug ang kasko sa barko mohaom sa liog. Samtang ang barko gitigum sa gawas sa botelya. Apan dili lamang kini pag-assemble sa usa ka barko, kini usa ka tinuod nga craft sa alahas. Ang mga espesyal nga lever gidugang sa mga sangkap, nga dayon gitugotan sila nga maalsa. Pananglitan, ang mga layag gipilo, mabinantayon nga gidala sa sulod, ug dayon, sa tabang sa mga sipit, sila gibira ug gipataas nga tukma, nga adunay katukma. Ang resulta mao ang usa ka buhat sa arte nga mahimong gasa sa usa ka limpyo nga tanlag ug garbo.

Ug kung gusto namon nga magmalampuson ang proyekto, kinahanglan adunay labing menos usa ka alahero sa team. Usa ka tawo nga nagpakabana sa kalidad sa produkto ug naghunahuna sa tanan nga mga aspeto, nga wala magsakripisyo sa bisan unsang butang, bisan sa mga gutlo sa kapit-os, kung ang mga kahimtang nanginahanglan nga buhaton ang dinalian sa gasto sa hinungdanon. Ang tanan nga malampuson nga mga proyekto nga malungtaron, nga nakalahutay sa pagsulay sa panahon, gitukod sa kini nga prinsipyo. Adunay usa ka butang nga tukma kaayo ug talagsaon bahin kanila, usa ka butang nga nagpahimulos sa tanan nga magamit nga mga posibilidad. Sa pananglitan nga ang barko sa botelya, ang kamatuoran nga ang kasko sa barko moagi sa liog gidula.

Pagbalik sa tahas sa pagpili sa among caching server, sa unsang paagi magamit kini nga pamaagi? Gitanyag nako kini nga kapilian sa pagpili gikan sa tanan nga mga sistema nga naglungtad - ayaw pag-uyog ang botelya, ayaw pagpili, apan tan-awa kung unsa ang naa nila sa prinsipyo, kung unsa ang pangitaon kung nagpili usa ka sistema.

Asa mangita alang sa bottle-neck

Atong paningkamutan nga dili matay-og ang botelya, dili mag-agi sa tanan nga naa sa usag usa, apan tan-awon naton kung unsang mga problema ang motumaw kung sa kalit, alang sa atong buluhaton, magdesinyo sa ingon nga sistema sa atong kaugalingon. Siyempre, dili namo i-assemble ang bike, apan among gamiton kini nga diagram aron matabangan kami nga mahibal-an kung unsang mga punto ang hatagan pagtagad sa mga paghulagway sa produkto. Atong i-sketch ang ingon nga diagram.

Giunsa namo sa Sportmaster ang pagpili sa usa ka sistema sa caching. Bahin 1

Kung ang sistema giapod-apod, nan kita adunay daghang mga server (6). Ingnon ta nga adunay upat (kombenyente nga ibutang kini sa litrato, apan, siyempre, mahimo’g daghan kanila ang gusto nimo). Kung ang mga server naa sa lainlaing mga node, kini nagpasabut nga silang tanan nagpadagan sa usa ka code nga responsable sa pagsiguro nga kini nga mga node maporma nga usa ka kumpol ug, kung adunay usa ka break, magkonektar ug mag-ila sa usag usa.

Nagkinahanglan usab kami og code logic (2), nga sa tinuud mahitungod sa caching. Ang mga kliyente nakig-interact niini nga code pinaagi sa pipila ka API. Ang kodigo sa kliyente (1) mahimong sulod sa samang JVM o ma-access kini sa network. Ang lohika nga gipatuman sa sulod mao ang desisyon kung unsang mga butang ang ibilin sa cache ug kung asa ilabay. Gigamit namo ang memorya (3) sa pagtipig sa cache, apan kon gikinahanglan, mahimo namo nga i-save ang pipila ka mga datos sa disk (4).

Atong tan-awon kung asa nga mga bahin mahitabo ang load. Sa tinuud, ang matag udyong ug matag node makarga. Una, tali sa code sa kliyente ug sa api, kung kini ang komunikasyon sa network, ang pag-ubos mahimong mamatikdan. Ikaduha, sulod sa gambalay sa api mismo - kung sobrahon nato kini sa komplikadong lohika, mahimo kitang makasugat og mga problema sa CPU. Ug kini maayo kung ang lohika dili mag-usik sa oras sa panumduman. Ug adunay nagpabilin nga interaksyon sa file system - sa naandan nga bersyon kini ang serialize / ibalik ug pagsulat / pagbasa.

Sunod mao ang interaksiyon sa cluster. Lagmit, kini anaa sa sama nga sistema, apan kini mahimong gilain. Dinhi kinahanglan nimo usab nga tagdon ang pagbalhin sa datos niini, ang katulin sa serialization sa data ug mga interaksyon tali sa cluster.

Karon, sa usa ka bahin, mahanduraw nato ang "unsa nga mga gear ang moliko" sa sistema sa cache sa pagproseso sa mga hangyo gikan sa atong code, ug sa laing bahin, atong mabanabana kung unsa ug pila ka hangyo ang atong code nga mamugna niini nga sistema. Kini igo na aron makahimo usa ka labi o dili kaayo maayo nga pagpili - aron makapili usa ka sistema alang sa among kaso sa paggamit.

hazelcast

Atong tan-awon kon unsaon paggamit niini nga pagkadunot sa atong listahan. Pananglitan, Hazelcast.

Aron mabutang/kuhaan ang datos gikan sa Hazelcast, ang code sa kliyente nag-access (1) sa api. Gitugotan ka sa Hz nga modagan ang server ingon nga naka-embed, ug sa kini nga kaso, ang pag-access sa api usa ka pamaagi nga tawag sa sulod sa JVM, nga maisip nga libre.

Aron ang lohika sa (2) molihok, ang Hz nagsalig sa hash sa byte array sa serialized key - nga mao, ang yawe i-serialize sa bisan unsang kaso. Kini dili kalikayan nga overhead alang sa Hz.
Ang mga estratehiya sa pagpalayas maayo nga gipatuman, apan alang sa mga espesyal nga kaso mahimo nimong idugang ang imong kaugalingon. Dili nimo kinahanglan mabalaka bahin niini nga bahin.

Ang pagtipig (4) mahimong konektado. Nindot. Ang interaksyon (5) para sa naka-embed makonsiderar nga dayon. Pagbayloay sa datos tali sa mga node sa cluster (6) - oo, kini anaa. Kini usa ka pamuhunan sa pagtugot sa sayup sa gasto sa katulin. Ang feature sa Hz Near-cache nagtugot kanimo sa pagpakunhod sa presyo - ang mga datos nga nadawat gikan sa ubang mga node sa cluster ma-cache.

Unsa ang mahimo sa ingon nga mga kahimtang aron madugangan ang katulin?

Pananglitan, aron malikayan ang yawe nga serialization sa (2) - ibutang ang laing cache sa ibabaw sa Hazelcast, alang sa pinakainit nga datos. Gipili sa Sportmaster ang Caffeine alang niini nga katuyoan.

Alang sa pagtuis sa lebel (6), ang Hz nagtanyag og duha ka matang sa pagtipig: IMap ug ReplicatedMap.
Giunsa namo sa Sportmaster ang pagpili sa usa ka sistema sa caching. Bahin 1

Angayan nga hisgutan kung giunsa ang Hazelcast nakasulod sa stack sa teknolohiya sa Sportmaster.

Kaniadtong 2012, sa dihang nagtrabaho kami sa labing una nga piloto sa umaabot nga site, si Hazelcast ang nahimo nga una nga link nga gibalik sa search engine. Ang kaila nagsugod "sa unang higayon" - nadani kami sa kamatuoran nga duha lang ka oras ang milabay, sa dihang among gi-screw ang Hz sa sistema, kini nagtrabaho. Ug kini nagtrabaho og maayo. Sa pagtapos sa adlaw nakompleto namo ang daghang mga pagsulay ug nalipay kami. Ug kini nga reserba sa kusog igo na aron mabuntog ang mga sorpresa nga gilabay sa Hz sa paglabay sa panahon. Karon ang Sportmaster team walay rason nga biyaan ang Hazelcast.

Apan ang ingon nga mga argumento sama sa "ang una nga link sa search engine" ug "Ang HelloWorld dali nga na-assemble" siyempre, usa ka eksepsiyon ug usa ka bahin sa higayon kung diin nahitabo ang pagpili. Ang tinuud nga mga pagsulay alang sa gipili nga sistema nagsugod sa pagpagawas sa produksiyon, ug sa kini nga yugto nga kinahanglan nimong hatagan pagtagad kung nagpili sa bisan unsang sistema, lakip ang cache. Sa tinuud, sa among kaso makaingon kami nga gipili namon ang Hazelcast nga aksidente, apan pagkahuman nahimo namon nga husto ang among gipili.

Alang sa produksiyon, labi ka hinungdanon: pag-monitor, pagdumala sa mga kapakyasan sa indibidwal nga mga node, pagkopya sa datos, gasto sa pag-scale. Kana mao, angay nga hatagan pagtagad ang mga buluhaton nga motungha sa panahon sa pagmentinar sa sistema - kung ang pagkarga napulo ka beses nga mas taas kaysa sa giplano, kung dili kita aksidente nga nag-upload sa usa ka butang sa sayup nga lugar, kung kinahanglan naton nga i-roll out ang usa ka bag-ong bersyon sa code, ilisan ang datos ug buhata kini nga wala mamatikdi sa mga kliyente.

Alang sa tanan niini nga mga kinahanglanon, ang Hazelcast siguradong mohaum sa balaodnon.

Ang pagpadayon

Apan ang Hazelcast dili usa ka panacea. Sa 2017, gipili namo ang Hazelcast alang sa admin cache, base lang sa maayong mga impresyon gikan sa nangaging kasinatian. Naghimo kini usa ka hinungdanon nga papel sa usa ka mapintas nga komedya, tungod niini nakit-an namon ang among kaugalingon sa usa ka lisud nga kahimtang ug "mabayanihon" nga nakagawas gikan niini sulod sa 60 ka adlaw. Apan labaw pa niana sa sunod nga bahin.

Sa kasamtangan... Malipayong Bag-ong Kodigo!

Source: www.habr.com

Idugang sa usa ka comment