Pehea mākou ma Sportmaster i koho ai i kahi ʻōnaehana caching. Mahele 1

Aloha! ʻO Alexey Pyankov koʻu inoa, he mea hoʻomohala wau ma ka hui Sportmaster. I loko o kēlā pou Ua haʻi aku au i ka hoʻomaka ʻana o ka hana ma ka pūnaewele Sportmaster i ka makahiki 2012, he aha nā hana a mākou i hoʻokō ai i ka "push through" a me ka hope, he aha ka rake a mākou i hōʻiliʻili ai.

I kēia lā makemake wau e kaʻana like i nā manaʻo e pili ana i kahi kumuhana ʻē aʻe - ke koho ʻana i kahi ʻōnaehana caching no ka backend java ma ka wahi admin pūnaewele. He manaʻo kūikawā kēia noʻu - ʻoiai ua wehe ʻia ka moʻolelo no 2 mahina wale nō, i loko o kēia mau lā 60 ua hana mākou i nā hola 12-16 a ʻaʻohe lā hoʻomaha. ʻAʻole wau i noʻonoʻo a noʻonoʻo paha e hiki ke hana nui.

No laila, ua hoʻokaʻawale au i ka kikokikona i ʻelua ʻāpana i ʻole e hoʻouka piha. ʻO ka mea ʻē aʻe, e maʻalahi loa ka ʻāpana mua - hoʻomākaukau, hoʻomaka, kekahi mau noʻonoʻo e pili ana i ka caching. Inā he mea hoʻomohala akamai ʻoe a i hana pū me nā caches, mai ka ʻaoʻao ʻenehana ʻaʻohe mea hou i kēia ʻatikala. Akā no ke keiki liʻiliʻi, hiki i kahi loiloi liʻiliʻi ke haʻi iā ia i ke ala e nānā ai inā loaʻa ʻo ia iā ia iho ma kēlā ala.

Pehea mākou ma Sportmaster i koho ai i kahi ʻōnaehana caching. Mahele 1

I ka wā i hoʻokomo ʻia ai ka mana hou o ka pūnaewele Sportmaster, ua loaʻa ka ʻikepili ma ke ʻano, e waiho mālie, ʻaʻole maʻalahi. ʻO ke kumu nā papa i hoʻomākaukau ʻia no ka mana mua o ka pūnaewele (Bitrix), pono e huki ʻia i loko o ka ETL, lawe ʻia i kahi ʻano hou a hoʻonui ʻia me nā mea liʻiliʻi like ʻole mai nā ʻōnaehana hou aku. I mea e ʻike ʻia ai kahi kiʻi hou a i ʻole wehewehe huahana ma ka pūnaewele, pono ʻoe e kali a hiki i ka lā aʻe - nā mea hou i ka pō, hoʻokahi manawa i ka lā.

I ka wā mua, nui nā hopohopo mai nā pule mua o ka hele ʻana i ka hana ʻana he mea liʻiliʻi kēlā mau pilikia no nā mea hoʻokele waiwai. Akā, i ka wā i noho ai nā mea a pau, ua hoʻomau ka hoʻomohala ʻana o ka papahana - i kekahi mau mahina ma hope, i ka hoʻomaka ʻana o 2015, ua hoʻomaka mākou e hoʻomohala i ka papa admin. Ma 2015 a me 2016, holo maikaʻi nā mea a pau, hoʻokuʻu mākou i nā manawa a pau, uhi ka admin panel i nā mea hou aʻe o ka hoʻomākaukau ʻana i ka ʻikepili, a ke hoʻomākaukau nei mākou no ka ʻoiaʻiʻo e hāʻawi ʻia kā mākou hui i ka mea nui a paʻakikī - ka huahana. kaapuni (hoʻomākaukau piha a mālama i ka ʻikepili ma nā huahana a pau). Akā i ke kauwela o 2017, ma mua o ka hoʻomaka ʻana o ke kaapuni waiwai, e ʻike ka papahana iā ia iho i kahi kūlana paʻakikī - ma muli o nā pilikia me ka caching. Makemake au e kamaʻilio e pili ana i kēia ʻāpana ma ka ʻāpana ʻelua o kēia hoʻolaha ʻelua ʻāpana.

Akā ma kēia pou e hoʻomaka wau mai kahi lōʻihi aku, e hōʻike wau i kekahi mau manaʻo - nā manaʻo e pili ana i ka caching, he hana maikaʻi ia e hele ai ma mua o kahi papahana nui.

I ka wā e loaʻa ai kahi hana cache

ʻAʻole ʻike wale ʻia ka hana caching. ʻO mākou nā mea hoʻomohala, kākau i kahi huahana polokalamu a makemake ia e koi ʻia. Inā makemake ka huahana a kūleʻa, e hele mai nā mea hoʻohana. A nui aʻe e hele mai. A laila ua nui nā mea hoʻohana a laila hoʻokau nui ʻia ka huahana.

I nā pae mua, ʻaʻole mākou e noʻonoʻo e pili ana i ka optimization a me ka hana code. ʻO ka mea nui ka hana, e ʻōwili koke i kahi pilote a hoʻāʻo i nā kuhiakau. A inā e hoʻonui ka ukana, e pā mākou i ka hao. Hoʻonui mākou i ʻelua a ʻekolu manawa, ʻelima manawa, 10 paha manawa. Ma kahi maʻaneʻi -ʻaʻole eʻae hou ke kālā. Ehia mau manawa e hoʻonui ai ka nui o nā mea hoʻohana? ʻAʻole ia e like me 2-5-10, akā inā kūleʻa, mai 100-1000 a 100 tausani mau manawa. ʻO ia, ma hope a ma hope paha, pono ʻoe e hana i ka optimization.

E ʻōlelo kākou aia kekahi ʻāpana o ke code (e kapa mākou i kēia ʻāpana he hana) he manawa lōʻihi loa, a makemake mākou e hōʻemi i ka manawa hoʻokō. Hiki i kahi hana ke komo i kahi waihona, a i ʻole ka hoʻokō ʻana i kekahi loiloi paʻakikī - ʻo ka mea nui ʻo ia ka lōʻihi o ka hoʻopau ʻana. ʻEhia ka nui e hiki ai iā ʻoe ke hōʻemi i ka manawa hoʻokō? I ka palena, hiki iā ʻoe ke hoʻemi i ka ʻole, ʻaʻohe mea hou aʻe. Pehea ʻoe e hoʻemi ai i ka manawa hoʻokō i ka ʻole? Pane: hoʻopau loa i ka hoʻokō. Akā, e hoʻihoʻi koke i ka hopena. Pehea ʻoe e ʻike ai i ka hopena? Pane: e helu a nānā paha i kahi. He lōʻihi ka manawa e helu ai. A ʻo ka mākaʻikaʻi, no ka laʻana, e hoʻomanaʻo i ka hopena i hana ʻia e ka hana i ka manawa hope i kāhea ʻia me nā ʻāpana like.

ʻO ia hoʻi, ʻaʻole mea nui ka hoʻokō ʻana o ka hana iā mākou. Ua lawa wale ka ʻike ʻana i nā ʻāpana o ka hopena. A laila, inā hōʻike ʻia nā koina parameter ma ke ʻano o kahi mea hiki ke hoʻohana ʻia i kī i loko o kahi mālama, a laila hiki ke mālama ʻia ka hopena o ka helu ʻana a heluhelu ʻia i ka manawa aʻe e komo ai. Inā ʻoi aku ka wikiwiki o kēia kākau ʻana a me ka heluhelu ʻana i ka hopena ma mua o ka hoʻokō ʻana i ka hana, loaʻa iā mākou ka waiwai ma ke ʻano o ka wikiwiki. Hiki i ka nui o ka loaʻa ke piʻi i 100, 1000, a me 100 tausani mau manawa (10 ^ 5 he mea ʻokoʻa, akā i ka hihia o kahi kumu haʻahaʻa, hiki ke hiki).

ʻO nā koi kumu no kahi ʻōnaehana cache

ʻO ka mea mua i lilo i koi no ka ʻōnaehana caching ʻo ia ka wikiwiki heluhelu a, i ka liʻiliʻi liʻiliʻi, kākau wikiwiki. Heʻoiaʻiʻo kēia, akā a hiki i ka wā e ʻōwili ai mākou i ka ʻōnaehana i ka hana.

E pāʻani kākou i kēia hihia.

E ʻōlelo mākou ua hoʻolako mākou i ka ukana o kēia manawa me ka lako a ke hoʻokomo mālie nei mākou i ka caching. Piʻi iki ka helu o nā mea hoʻohana, piʻi ka ukana - hoʻohui mākou i kahi huna liʻiliʻi, wili iā ia ma ʻaneʻi a ma laila. Ke hoʻomau nei kēia no kekahi manawa, a i kēia manawa ʻaʻole i kāhea hou ʻia nā hana koʻikoʻi - hāʻule ka ukana nui ma ka cache. Ua hoʻonui ʻia ka helu o nā mea hoʻohana i kēia manawa i N mau manawa.

A inā he 2-5 mau manawa ka hoʻolako mua ʻana o ka lako, a laila me ke kōkua o ka cache hiki iā mākou ke hoʻomaikaʻi i ka hana ma kahi helu o 10 a i ʻole, ma kahi hihia maikaʻi, ma kahi helu o 100, ma kekahi mau wahi paha ma kahi kumu. o 1000. ʻO ia hoʻi, ma ka lako like - ke hana nei mākou i 100 mau manawa hou aku i nā noi. Nui, pono ʻoe i ka gingerbread!

Akā i kēia manawa, i kekahi manawa maikaʻi, ma ka manawa, hāʻule ka ʻōnaehana a hāʻule ka cache. ʻAʻohe mea kūikawā - ma hope o nā mea a pau, ua koho ʻia ka cache ma muli o ke koi "heluhelu kiʻekiʻe a kākau i ka wikiwiki, ʻaʻole pili ke koena."

E pili ana i ka ukana hoʻomaka, ʻo kā mākou mea hao hao he 2-5 mau manawa, a hoʻonui ka ukana i kēia manawa i 10-100 mau manawa. Ke hoʻohana nei i ka cache, ua kāpae mākou i nā kelepona no nā hana koʻikoʻi a no laila ua hana nā mea āpau. A i kēia manawa, me ka ʻole o kahi huna, ehia mau manawa e lohi ai kā mākou ʻōnaehana? He aha ka hopena iā mākou? E hāʻule ka ʻōnaehana.

ʻOiai ʻaʻole i hāʻule kā mākou huna huna, akā ua hoʻomaʻemaʻe wale ʻia no kekahi manawa, pono e hoʻomaʻamaʻa ʻia, a e lōʻihi ka manawa. A i kēia manawa, e hāʻule ka ukana nui i ka hana.

Ka hopena: koi ʻia nā papahana hoʻouka nui i kahi ʻōnaehana caching ʻaʻole wale i ka wikiwiki heluhelu a kākau ʻana, akā no ka hōʻoia ʻana i ka palekana ʻikepili a me ke kūʻē ʻana i nā hemahema.

ʻO koho koho

Ma kahi papahana me kahi panel admin, ua like ka koho: ua hoʻokomo mua mākou iā Hazelcast, no ka mea Ua kamaʻāina mākou i kēia huahana mai ka ʻike o ka pūnaewele nui. Akā ma ʻaneʻi ua kūleʻa kēia koho - ma lalo o kā mākou ʻaoʻao hoʻoili, ʻaʻole lohi ʻo Hazelcast, akā lohi loa. A i kēlā manawa ua kau inoa mākou no ka lā hoʻokuʻu.

Spoiler: pehea ka hoʻomohala ʻana o nā kūlana i hala mākou i kahi mea nui a hoʻopau i kahi kūlana koʻikoʻi a paʻakikī - e haʻi wau iā ʻoe ma ka ʻāpana ʻelua - a pehea mākou i pau ai a pehea mākou i puka ai. Akā i kēia manawa - e ʻōlelo wau he koʻikoʻi nui ia, a "e noʻonoʻo - ʻaʻole hiki iaʻu ke noʻonoʻo, ke lulu nei mākou i ka ʻōmole." "ʻO ka lulu ʻana i ka ʻōmole" he mea hao, ʻoi aku ma hope.

He aha kā mākou i hana ai:

  1. Hana mākou i kahi papa inoa o nā ʻōnaehana āpau a Google a me StackOverflow e manaʻo ai. Ma luna iki o 30
  2. Kākau mākou i nā hoʻokolohua me kahi ukana maʻamau no ka hana ʻana. No ka hana ʻana i kēia, ua hoʻopaʻa mākou i nā ʻikepili e hele ana i ka ʻōnaehana i kahi ʻano hana - kahi ʻano sniffer no ka ʻikepili ʻaʻole ma ka pūnaewele, akā i loko o ka ʻōnaehana. Ua hoʻohana pololei ʻia kēia ʻikepili i nā hoʻokolohua.
  3. Me ka hui holoʻokoʻa, koho nā mea a pau i ka ʻōnaehana aʻe mai ka papa inoa, hoʻonohonoho iā ia, a holo i nā hoʻokolohua. ʻAʻole ia i hala i ka hoʻāʻo, ʻaʻole ia e lawe i ka ukana - hoʻolei mākou iā ia a neʻe i ka laina aʻe.
  4. Ma ka ʻōnaehana 17 ua maopopo ka manaʻo ʻole o nā mea a pau. E oki i ka lulu ʻana i ka ʻōmole, ʻo ia ka manawa e noʻonoʻo pono ai.

Akā he koho kēia inā pono ʻoe e koho i kahi ʻōnaehana e "loaʻa i ka wikiwiki" i nā hoʻokolohua i hoʻomākaukau mua ʻia. He aha inā ʻaʻohe mau hoʻokolohua like ʻole a makemake ʻoe e koho wikiwiki?

E hoʻohālike kākou i kēia koho (he paʻakikī ke noʻonoʻo e noho ana ka mea hoʻomohala waena + i loko o kahi hakahaka, a i ka manawa o ke koho ʻana ʻaʻole i hoʻokumu i kona makemake i ka huahana e hoʻāʻo mua ai - no laila, ʻoi aku ka nui o ka noʻonoʻo ʻana i ka theorist/philosophy/ e pili ana i kahi ʻōpio).

Ke hoʻoholo nei i nā koi, e hoʻomaka mākou e koho i kahi hopena ma waho o ka pahu. No ke aha e hana hou ai i ka huila: e hele mākou a lawe i kahi ʻōnaehana caching mākaukau.

Inā ʻoe e hoʻomaka wale ana a google iā ia, a laila hāʻawi a lawe paha i ke kauoha, akā ma ka laulā, e like nā alakaʻi. ʻO ka mea mua, e ʻike ʻoe iā Redis, lohe ʻia ma nā wahi āpau. A laila e ʻike ʻoe ʻo EhCache ka ʻōnaehana kahiko a hōʻoia ʻia. Ma hope aʻe e kākau mākou e pili ana iā Tarantool, kahi hoʻomohala kūloko i loaʻa kahi ʻano kūʻokoʻa o ka hopena. A ʻo Ignite hoʻi, no ka mea ke piʻi nei i ka kaulana a hauʻoli i ke kākoʻo o SberTech. I ka hopena, aia nō ʻo Hazelcast, no ka mea ma ka honua ʻoihana e ʻike pinepine ʻia i waena o nā hui nui.

ʻAʻole i pau ka papa inoa; aia nā ʻano ʻōnaehana. A e wili wale mākou i hoʻokahi mea. E lawe i nā ʻōnaehana 5 i koho ʻia no ka "hoʻokūkū nani" a koho. ʻO wai ka mea lanakila?

Ho'ōla

Heluhelu mākou i kā lākou kākau ʻana ma ka pūnaewele official.
Ho'ōla - papahana opensource. Hāʻawi i ka mālama ʻikepili i loko o ka hoʻomanaʻo, ka hiki ke mālama i ka disk, auto-partitioning, loaʻa kiʻekiʻe a me ka hoʻihoʻi ʻana mai nā outages pūnaewele.

Me he mea lā ua maikaʻi nā mea a pau, hiki iā ʻoe ke lawe a wili iā ia - nā mea āpau āu e pono ai, hana ia. Akā no ka leʻaleʻa, e nānā kākou i nā moho ʻē aʻe.

EhCache

EhCache - "ʻo ka cache i hoʻohana nui ʻia no Java" (unuhi o ka slogan mai ka pūnaewele official). Also opensource. A laila maopopo mākou ʻaʻole ʻo Redis no java, akā maʻamau, a no ka launa pū ʻana me ia pono ʻoe i kahi wīwī. A ʻoi aku ka maʻalahi o EhCache. He aha hou aʻe ka ʻōnaehana hoʻohiki? ʻO ka hilinaʻi, hōʻoia, hana piha. ʻAe, ʻo ia ka mea maʻamau. A mālama i nā terabytes o ka ʻikepili.

Poina ʻia ʻo Redis, ua mākaukau wau e koho iā EhCache.

Akā ʻo ka manaʻo aloha ʻāina e koi iaʻu e ʻike i ka mea maikaʻi e pili ana iā Tarantool.

Tarantool

Tarantool - hoʻokō i ka inoa "Real-time data integration platform". He mea paʻakikī loa ia, no laila heluhelu mākou i ka ʻaoʻao i ka kikoʻī a ʻike i kahi ʻōlelo leo nui: "Ke hoʻopaʻa nei i ka 100% o ka ʻikepili ma RAM." Pono kēia e hāpai i nā nīnau - ma hope o nā mea a pau, hiki ke ʻoi aku ka nui o ka ʻikepili ma mua o ka hoʻomanaʻo. ʻO ka wehewehe ʻana ʻo ia ka mea ʻaʻole holo ʻo Tarantool i ka serialization e kākau i ka ʻikepili i ka disk mai ka hoʻomanaʻo. Akā, hoʻohana ʻo ia i nā hiʻohiʻona haʻahaʻa haʻahaʻa o ka ʻōnaehana, ke kahakaha ʻia ka hoʻomanaʻo i kahi ʻōnaehana faila me ka hana I/O maikaʻi loa. Ma keʻano laulā, hana lākou i kahi mea kupanaha a ʻoluʻolu.

E nānā kākou i nā hoʻokō: Mail.ru hui alanui, Avito, Beeline, Megafon, Alfa-Bank, Gazprom...

Inā he mau kānalua paha e pili ana iā Tarantool, a laila hoʻopau ka hihia hoʻokō ma Mastercard iaʻu. Lawe wau iā Tarantool.

Akā naʻe…

Ignite

… aia kekahi mau mea hou aku Ignite, ua uku ʻia ma ke ʻano he "pahu hoʻonohonoho hoʻomanaʻo i loko o ka hoʻomanaʻo ... ka wikiwiki o ka hoʻomanaʻo ma nā petabytes o ka ʻikepili." Nui nō hoʻi nā pōmaikaʻi ma ʻaneʻi: puʻunaue ʻia i loko o ka hoʻomanaʻo ʻana, ʻo ka mālama ʻana i ka waiwai kī wikiwiki a me ka cache, ka hoʻonui ʻia ʻana, ka loaʻa kiʻekiʻe, ka kūpaʻa paʻa. Ma keʻano laulā, ʻike ʻia ʻo ka wikiwiki loa ʻo Ignite.

Hoʻokō: Sberbank, American Airlines, Yahoo! Iapana. A laila ʻike wau ʻaʻole hoʻokō wale ʻia ʻo Ignite ma Sberbank, akā hoʻouna ka hui SberTech i kona poʻe i ka hui Ignite ponoʻī e hoʻomaʻemaʻe i ka huahana. He mea hoihoi loa kēia a ua mākaukau wau e lawe iā Ignite.

ʻAʻole maopopo loa ke kumu, ke nānā nei au i ka helu ʻelima.

hazelcast

Hele au i ka pūnaewele hazelcast, heluhelu. A ua ʻike ʻia ʻo ka hopena wikiwiki loa no ka caching puʻupuʻu ʻo Hazelcast. ʻOi aku ka wikiwiki ma mua o nā hoʻonā ʻē aʻe a ma ke ʻano maʻamau he alakaʻi ia ma ke kahua o ka mākia ʻikepili hoʻomanaʻo. E kūʻē i kēia ʻano, ʻo ka lawe ʻana i kahi mea ʻē aʻe ʻaʻole ia e mahalo iā ʻoe iho. Hoʻohana pū ia i ka mālama ʻikepili redundant no ka hana mau ʻana o ka pūʻulu me ka nalowale ʻole o ka ʻikepili.

ʻO ia, ua mākaukau wau e lawe iā Hazelcast.

Kūlike

Akā inā ʻoe e nānā, ua wehewehe ʻia nā moho ʻelima ma ke ʻano i ʻoi aku ka maikaʻi o kēlā me kēia. Pehea e koho ai? Hiki iā mākou ke ʻike i ka mea kaulana loa, e ʻimi i ka hoʻohālikelike ʻana, a e pau ke poʻo.

Loaʻa iā mākou kekahi e like me kēia loiloi, koho i kā mākou 5 pūnaewele.

Pehea mākou ma Sportmaster i koho ai i kahi ʻōnaehana caching. Mahele 1

Eia ua hoʻokaʻawale ʻia lākou: Aia ʻo Redis ma luna, aia ʻo Hazelcast ma ka lua o ka wahi, ʻo Tarantool a me Ignite ke loaʻa nei ka kaulana, ʻo EhCache a ua mau nō.

Akā, e nānā kākou ʻano helu helu: nā loulou i nā pūnaewele, ka hoihoi nui i ka ʻōnaehana, nā hāʻawi hana - maikaʻi loa! ʻO ia, ke hāʻule kaʻu ʻōnaehana, e ʻōlelo wau: "ʻAʻole, hilinaʻi! Nui nā hāʻawi hana. ”… ʻAʻole e hana kēlā hoʻohālikelike maʻalahi.

ʻAʻole kēia mau ʻōnaehana āpau i nā ʻōnaehana caching wale nō. Loaʻa iā lākou ka nui o nā hana, me ka wā ʻaʻole i hoʻomoʻi ʻia ka ʻikepili i ka mea kūʻai aku no ka hana ʻana, akā ʻo ka hope: ʻo ke code e pono e hoʻokō ʻia ma ka ʻikepili neʻe i ke kikowaena, ua hoʻokō ʻia ma laila, a hoʻihoʻi ʻia ka hopena. ʻAʻole lākou i manaʻo pinepine ʻia he ʻōnaehana kaʻawale no ka caching.

ʻAe, mai haʻalele kākou, e ʻimi kākou i ka hoʻohālikelike pololei o nā ʻōnaehana. E lawe kākou i nā koho ʻelua - Redis a me Hazelcast. Makemake mākou i ka wikiwiki, a e hoʻohālikelike mākou iā lākou ma muli o kēia ʻāpana.

Hz vs Redis

Loaʻa iā mākou kēia hoʻohālikelike:
Pehea mākou ma Sportmaster i koho ai i kahi ʻōnaehana caching. Mahele 1

ʻO ka uliuli ʻo Redis, ʻo ka ʻulaʻula ʻo Hazelcast. Ua lanakila ʻo Hazelcast ma nā wahi a pau, a aia kahi kumu no kēia: he multi-threaded, hoʻomaikaʻi maikaʻi ʻia, hana kēlā me kēia pae me kāna ʻāpana ponoʻī, no laila ʻaʻohe mea e pale ai. A ʻo Redis he kaula hoʻokahi; ʻaʻole ia e pōmaikaʻi mai nā CPU multi-core hou. Loaʻa iā Hazelcast ka I/O asynchronous, ua pale ʻo Redis-Jedis i nā kumu. Ma hope o nā mea a pau, hoʻohana ʻo Hazelcast i kahi protocol binary, a ʻo Redis ka text-centric, ʻo ia hoʻi ʻaʻole pono.

ʻO ka hihia wale nō, e huli kākou i kahi kumu hoʻohālikelike ʻē aʻe. He aha kāna e hōʻike mai ai iā mākou?

ʻO Redis vs Hz

ʻO kekahi hoʻohālikelike:
Pehea mākou ma Sportmaster i koho ai i kahi ʻōnaehana caching. Mahele 1

Eia, ma kahi ʻē, ʻulaʻula ʻo Redis. ʻO ia hoʻi, ʻoi aku ka maikaʻi o Redis iā Hazelcast ma ke ʻano o ka hana. Ua lanakila ʻo Hazelcast i ka hoʻohālikelike mua, lanakila ʻo Redis i ka lua. Ma ʻaneʻi wehewehe pololei loa i ke kumu i lanakila ai ʻo Hazelcast i ka hoʻohālikelike mua.

Ua hoʻololi ʻia ka hopena o ka mea mua: ua lawe ʻia ʻo Redis i ka pahu kumu, a ua hana ʻia ʻo Hazelcast no kahi hihia hoʻāʻo. A laila huli mai: ʻo ka mua, ʻaʻole hiki iā mākou ke hilinaʻi i kekahi, a ʻo ka lua, ke koho hope mākou i kahi ʻōnaehana, pono mākou e hoʻonohonoho pono. Aia kēia mau hoʻonohonoho i nā kakini, kokoke i nā haneli o nā ʻāpana.

Ka lulu ʻana i ka ʻōmole

A hiki iaʻu ke wehewehe i ke kaʻina holoʻokoʻa a mākou i hana ai i kēia manawa me kēia ʻōlelo hoʻohālikelike: "Ka lulu ʻana i ka ʻōmole." ʻO ia, ʻaʻole pono ʻoe i ka papahana, i kēia manawa ka mea nui e hiki ke heluhelu i ka stackoverflow. A loaʻa iaʻu kahi kanaka ma kaʻu hui, he loea, hana like me kēia i nā manawa koʻikoʻi.

He aha kāna e hana nei? ʻIke ʻo ia i kahi mea nahā, ʻike i kahi ʻōpala, lawe i kekahi mau huaʻōlelo mai ia mea (ʻo ia kāna ʻike i ka papahana), ʻimi ma Google, ʻike i ka stackoverflow ma waena o nā pane. Me ka heluhelu ʻole ʻana, me ka noʻonoʻo ʻole, i waena o nā pane i ka nīnau, koho ʻo ia i kahi mea like loa me ka huaʻōlelo "hana i kēia a me kēlā" (ʻo ke koho ʻana i kēlā pane ʻo kāna talena, no ka mea, ʻaʻole ʻo ia ka pane i loaʻa ka makemake nui loa). pili , nānā: inā ua loli kekahi mea, a laila maikaʻi. Inā ʻaʻole i loli, e ʻōwili i hope. A e hana hou i ka hoʻomaka-check-search. A ma kēia ʻano intuitive, hōʻoia ʻo ia e hana ke code ma hope o kekahi manawa. ʻAʻole maopopo iā ia ke kumu, ʻaʻole ʻike ʻo ia i kāna mea i hana ai, ʻaʻole hiki iā ia ke wehewehe. Akā! Hana kēia maʻi. A "ua pio ke ahi." I kēia manawa e noʻonoʻo kākou i ka mea a mākou i hana ai. Ke hana nei ka polokalamu, ʻoi aku ka maʻalahi o ka maʻalahi. A mālama ia i ka manawa nui.

Ua wehewehe maikaʻi ʻia kēia ʻano me kēia laʻana.

Ua kaulana loa ka ʻohi ʻana i ka waʻa i loko o ka ʻōmole. I ka manawa like, nui a palupalu ka waʻa, a haiki loa ka ʻāʻī o ka ʻōmole, ʻaʻole hiki ke hoʻokuʻu i loko. Pehea e hui ai?

Pehea mākou ma Sportmaster i koho ai i kahi ʻōnaehana caching. Mahele 1

Aia kekahi ʻano hana, wikiwiki loa a maikaʻi loa.

ʻO ka moku he pūʻulu o nā mea liʻiliʻi: nā lāʻau, nā kaula, nā peʻa, ke kāpili. Hoʻokomo mākou i kēia mau mea a pau i loko o kahi ʻōmole.
Lawe mākou i ka'ōmole me nā limaʻelua a hoʻomaka mākou e haʻalulu. Hoʻoluliluli mākou iā ia. A ʻo ka mea maʻamau, lilo ia i ʻōpala piha, ʻoiaʻiʻo. Akā i kekahi manawa. I kekahi manawa, lilo ia i moku! ʻOi aku ka pololei, he mea like me ka moku.

Hōʻike mākou i kēia mea i kekahi: "Seryoga, ʻike ʻoe!?" A ʻoiaʻiʻo, mai kahi mamao aku me he moku lā. Akā ʻaʻole hiki ke ʻae ʻia kēia e hoʻomau.

Aia kekahi ala. Hoʻohana ʻia lākou e nā poʻe ʻoi aku ka holomua, e like me nā hacker.

Hāʻawi wau i kēia kanaka i kahi hana, hana ʻo ia i nā mea āpau a haʻalele. A ke nānā nei ʻoe - me he mea lā ua pau. A ma hope o kekahi manawa, i ka wā e pono ai e hoʻopau i ke code, hoʻomaka kēia ma muli o ia ... He mea maikaʻi ia ua hoʻokele mua ʻo ia e holo mamao. ʻO kēia ka poʻe, e hoʻohana ana i ka laʻana o ka ʻōmole, e hana i kēia: ʻike ʻoe, aia ka lalo, piʻi ke aniani. A ʻaʻole maopopo loa inā maopopo a ʻaʻole paha. A laila ʻoki ka "hackers" i kēia lalo, e hoʻokomo i kahi moku ma laila, a laila e hoʻopili hou i ka lalo, a me he mea lā ʻo ia ka mea i manaʻo ʻia.

Mai ka manaʻo o ka hoʻonohonoho ʻana i ka pilikia, me he mea lā ua pololei nā mea a pau. Akā ʻo ka hoʻohana ʻana i nā moku i laʻana: no ke aha e hana ai i kēia moku, ʻo wai ka mea e pono ai? ʻAʻole ia e hāʻawi i kekahi hana. ʻO ka mea maʻamau, ʻo ia mau moku nā makana i nā poʻe kiʻekiʻe loa, nāna e kau iā ia ma kahi papa ma luna o lākou, ma ke ʻano he hōʻailona, ​​​​he hōʻailona. A inā he kanaka ia, he poʻo o ka ʻoihana nui a he luna kūlana kiʻekiʻe paha, pehea lā e kū ai ka hae no ia hack, a ua ʻoki ʻia ka ʻāʻī? ʻOi aku ka maikaʻi inā ʻaʻole ʻo ia i ʻike. No laila, pehea lā lākou e hana ai i kēia mau moku i hiki ke hāʻawi ʻia i ke kanaka koʻikoʻi?

ʻO kahi kī nui ʻaʻole hiki iā ʻoe ke hana i kekahi mea ʻo ke kino. A pili pono ka hull o ka moku i ka ʻāʻī. ʻOiai ua hui ʻia ka moku ma waho o ka ʻōmole. Akā ʻaʻole ʻo ka hui ʻana i kahi moku, he mea hana nani maoli. Hoʻohui ʻia nā lever kūikawā i nā ʻāpana, a laila e ʻae iā lākou e hāpai. No ka laʻana, ua pelu ʻia nā peʻa, lawe maikaʻi ʻia i loko, a laila, me ke kōkua ʻana o nā tweezers, huki ʻia lākou a hoʻokiʻekiʻe pololei ʻia, me ka pololei. ʻO ka hopena he hana noʻeau i hiki ke hāʻawi ʻia me ka noʻonoʻo maʻemaʻe a me ka haʻaheo.

A inā makemake mākou e kūleʻa ka papahana, pono e loaʻa ma ka liʻiliʻi o hoʻokahi mea kūʻai aku ma ka hui. ʻO kekahi e mālama i ka maikaʻi o ka huahana a mālama i nā ʻano āpau, me ka ʻole o ka mōhai ʻana i kekahi mea, ʻoiai i nā manawa pilikia, i ka wā e koi ai nā kūlana e hana i ka wikiwiki me ka uku o ka mea nui. ʻO nā papahana holomua a pau i kūpaʻa, i kū i ka hoʻāʻo o ka manawa, ua kūkulu ʻia ma kēia kumu. Aia kekahi mea pololei a kū hoʻokahi e pili ana iā lākou, kahi mea e hoʻohana pono ai i nā mea hiki ke loaʻa. I ka laʻana me ka moku i loko o ka ʻōmole, ʻo ka ʻoiaʻiʻo o ka holo ʻana o ka moku i ka ʻāʻī e pāʻani ʻia.

Ke hoʻi nei i ka hana o ke koho ʻana i kā mākou kikowaena cache, pehea e hoʻohana ʻia ai kēia ʻano hana? Ke hāʻawi aku nei au i kēia koho o ke kohoʻana mai nā pūnaewele a pau e noho nei - mai lulu i ka'ōmole, mai koho, akā e nānā i nā mea i loaʻa iā lākou ma keʻano, he aha ka mea e nānā ai i ke kohoʻana i kahi pūnaewele.

Kahi e ʻimi ai i ka ʻāʻī ʻōmole

E ho'āʻo kākou e hoʻoluliluli i ka'ōmole,ʻaʻole e hele i nā mea a pau i laila, akā, eʻike kākou i nā pilikia e hiki mai ana inā hiki koke mākou, no kā mākou hana, e hoʻolālā i kēlā pūnaewele iā mākou iho. ʻOiaʻiʻo, ʻaʻole mākou e hōʻuluʻulu i ke kaʻa, akā e hoʻohana mākou i kēia kiʻi e kōkua iā mākou e noʻonoʻo i nā mea e hoʻolohe ai i nā wehewehe huahana. E kahakiʻi kākou i ke kiʻikuhi.

Pehea mākou ma Sportmaster i koho ai i kahi ʻōnaehana caching. Mahele 1

Inā māhele ʻia ka ʻōnaehana, a laila e loaʻa iā mākou kekahi mau kikowaena (6). E ʻōlelo mākou he ʻehā (maʻalahi ke kau ʻana iā lākou i ke kiʻi, akā, ʻoiaʻiʻo, hiki i ka nui o lākou e like me kou makemake). Inā loaʻa nā kikowaena ma nā nodes ʻokoʻa, ʻo ia hoʻi, holo lākou a pau i kekahi code i kuleana no ka hōʻoia ʻana i kēia mau nodes i hui pū ʻia a, i ka wā e haki ai, hoʻohui a ʻike kekahi i kekahi.

Pono mākou i ka logic code (2), e pili ana i ka caching. Hoʻopili nā mea kūʻai aku me kēia code ma o kekahi API. Hiki ke komo i ka helu mea kūʻai (1) i loko o ka JVM hoʻokahi a i ʻole ke komo ʻana ma luna o ka pūnaewele. ʻO ka loiloi i hoʻokō ʻia i loko ʻo ia ka hoʻoholo o nā mea e waiho ai i loko o ka cache a me ka mea e hoʻolei aku. Hoʻohana mākou i ka hoʻomanaʻo (3) e mālama i ka cache, akā inā pono, hiki iā mākou ke mālama i kekahi o nā ʻikepili ma ka disk (4).

E ʻike kākou ma nā ʻāpana hea ka ukana. ʻOiaʻiʻo, e hoʻouka ʻia kēlā me kēia pua a me kēlā me kēia node. ʻO ka mea mua, ma waena o ka code client a me ka api, inā he kamaʻilio pūnaewele kēia, hiki ke ʻike ʻia ka subsidence. ʻO ka lua, i loko o ka hoʻolālā o ka api ponoʻī - inā mākou e hana nui me ka loiloi paʻakikī, hiki iā mākou ke holo i nā pilikia me ka CPU. A he mea maikaʻi inā ʻaʻole hoʻopau ka loiloi i ka manawa ma ka hoʻomanaʻo. A ke mau nei ka launa pū ʻana me ka ʻōnaehana faila - ma ka mana maʻamau kēia e serialize / hoʻihoʻi a kākau / heluhelu.

ʻO ka mea aʻe ka pilina me ka pūʻulu. ʻO ka mea nui, aia ia i ka ʻōnaehana like, akā hiki ke kaʻawale. Maanei pono ʻoe e noʻonoʻo i ka hoʻoili ʻana o ka ʻikepili iā ia, ka wikiwiki o ka serialization data a me nā pilina ma waena o ka pūpū.

I kēia manawa, ma kekahi ʻaoʻao, hiki iā mākou ke noʻonoʻo "he aha nā mea e huli ai" i ka ʻōnaehana cache i ka wā e hoʻoponopono ai i nā noi mai kā mākou code, a ma kekahi ʻaoʻao, hiki iā mākou ke koho i ka mea a me ka nui o nā noi a kā mākou code e hana ai i kēia ʻōnaehana. Ua lawa kēia no ka hana ʻana i kahi koho ʻoi aʻe a emi ʻole - e koho i kahi ʻōnaehana no kā mākou hihia hoʻohana.

hazelcast

E ʻike pehea e hoʻopili ai i kēia decomposition i kā mākou papa inoa. No ka laʻana, Hazelcast.

I mea e kau/lawe ai i ka ʻikepili mai Hazelcast, hiki i ka mea kūʻai aku ke komo (1) i ka api. Hāʻawi ʻo Hz iā ʻoe e holo i ke kikowaena e like me ka mea i hoʻopili ʻia, a ma kēia hihia, ʻo ke komo ʻana i ka api he ala kelepona i loko o ka JVM, hiki ke manaʻo ʻia he manuahi.

I mea e hana ai ka logic in (2), hilinaʻi ʻo Hz i ka hash o ka array byte o ke kī serialized - ʻo ia hoʻi, e hoʻopili ʻia ke kī i kēlā me kēia hihia. ʻAʻole hiki ke pale ʻia kēia no ka Hz.
Hoʻokō maikaʻi ʻia nā hoʻolālā eviction, akā no nā hihia kūikawā hiki iā ʻoe ke hoʻohui i kāu ponoʻī. ʻAʻole pono ʻoe e hopohopo no kēia ʻāpana.

Hiki ke hoʻopili ʻia ka waihona (4). Nui. Hiki ke noʻonoʻo koke ʻia ka pilina (5) no ka hoʻopili ʻana. Hoʻololi ʻikepili ma waena o nā nodes i ka hui (6) - ʻae, aia. He hoʻopukapuka kālā kēia i ka hoʻomanawanui hewa ma ka lilo o ka wikiwiki. ʻO ka hiʻohiʻona Hz Near-cache hiki iā ʻoe ke hōʻemi i ke kumukūʻai - e hūnā ʻia nā ʻikepili i loaʻa mai nā nodes ʻē aʻe o ka hui.

He aha ka mea hiki ke hana i ia mau kūlana e hoʻonui ai i ka wikiwiki?

No ka laʻana, e pale i ka serialization o ke kī ma (2) - e hoʻopili i kahi huna hou ma luna o Hazelcast, no ka ʻikepili wela loa. Ua koho ʻo Sportmaster i ka Caffeine no kēia kumu.

No ka wili ʻana i ka pae (6), hāʻawi ʻo Hz i ʻelua ʻano waihona: IMap a me ReplicatedMap.
Pehea mākou ma Sportmaster i koho ai i kahi ʻōnaehana caching. Mahele 1

He mea kūpono ke haʻi ʻana pehea i komo ai ʻo Hazelcast i ka ʻenehana ʻenehana Sportmaster.

I ka makahiki 2012, i kā mākou hana ʻana i ka mea hoʻokele mua loa o ka pūnaewele e hiki mai ana, ʻo Hazelcast ka mea i lilo i loulou mua i hoʻi mai ka ʻenekini huli. Ua hoʻomaka ka kamaʻāina "ʻo ka manawa mua" - ua hoʻopio ʻia mākou e ka ʻoiaʻiʻo ʻelua mau hola ma hope, i ka wā i hoʻopili ai mākou i ka Hz i ka ʻōnaehana, ua hana. A ua hana maikaʻi. Ma ka hopena o ka lā ua hoʻopau mākou i nā hoʻokolohua he nui a hauʻoli. A ua lawa kēia mālama ʻana i ka ikaika e lanakila ai i nā mea kupanaha a Hz i hoʻolei ai i ka manawa. I kēia manawa ʻaʻohe kumu o ka hui Sportmaster e haʻalele iā Hazelcast.

Akā ʻo nā ʻōlelo hoʻopaʻapaʻa e like me "ka loulou mua i ka ʻenekini huli" a me "HelloWorld i hui koke ʻia", ʻoiaʻiʻo, he ʻokoʻa a he hiʻohiʻona o ka manawa i koho ʻia ai. ʻO nā hoʻokolohua maoli no ka ʻōnaehana i koho ʻia e hoʻomaka me ka hoʻokuʻu ʻana i ka hana ʻana, a ma kēia pae e pono ai ʻoe e hoʻolohe i ke koho ʻana i kekahi ʻōnaehana, me ka cache. ʻOiaʻiʻo, i kā mākou hihia hiki iā mākou ke ʻōlelo ua koho mākou iā Hazelcast me ka pōʻino, akā ua ʻike ʻia ua koho pololei mākou.

No ka hana ʻana, ʻoi aku ka nui o ka mea nui: ka nānā ʻana, ka mālama ʻana i nā hemahema ma nā node pākahi, ka hoʻopiʻi ʻana i ka ʻikepili, ke kumu kūʻai o ka scaling. ʻO ia hoʻi, pono e hoʻolohe i nā hana e kū mai ana i ka wā o ka mālama ʻana i ka ʻōnaehana - ke ʻoi aku ka nui o ka ukana ma mua o ka mea i hoʻolālā ʻia, i ka wā e hoʻouka ai mākou i kahi mea ma kahi hewa, i ka wā e pono ai mākou e ʻōwili i kahi mana hou. o ke code, hoʻololi i ka ʻikepili a hana me ka ʻike ʻole ʻia no nā mea kūʻai aku.

No kēia mau koi āpau, ua kūpono ʻo Hazelcast i ka bila.

E hoʻomau 'ia

Akā ʻaʻole ʻo Hazelcast kahi panacea. Ma 2017, ua koho mākou iā Hazelcast no ka cache admin, ma muli o nā manaʻo maikaʻi mai ka ʻike i hala. He hana koʻikoʻi kēia i loko o kahi hoʻohenehene koʻikoʻi loa, no laila ua ʻike mākou iā mākou iho i kahi kūlana paʻakikī a "heroically" i puka i waho no 60 mau lā. Akā ʻoi aku ka nui o kēlā ma ka ʻāpana aʻe.

I kēia manawa... Hauʻoli Code Hou!

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka