Ki jan nou nan Sportmaster te chwazi yon sistèm kachèt. Pati 1

Bonjou! Non mwen se Alexey Pyankov, mwen se yon pwomotè nan konpayi Sportmaster. Nan sa poste Mwen te di ki jan travay sou sit entènèt Sportmaster la te kòmanse nan 2012, ki inisyativ nou te jere "pouse nan" ak vis vèrsa, ki rato nou kolekte.

Jodi a mwen vle pataje panse ki swiv yon lòt sijè - chwazi yon sistèm kachèt pou backend java nan zòn admin sit la. Konplo sa a gen yon siyifikasyon espesyal pou mwen - byenke istwa a te dewoule pandan 2 mwa sèlman, pandan 60 jou sa yo nou te travay 12-16 èdtan ak san yon sèl jou konje. Mwen pa t janm panse oswa imajine ke li te posib travay di konsa.

Kidonk, mwen divize tèks la an 2 pati pou m pa chaje l nèt. Okontrè, premye pati a pral trè lejè - preparasyon, entwodiksyon, kèk konsiderasyon sou sa ki kachèt. Si ou se deja yon pwomotè ki gen eksperyans oswa ou te travay ak kachèt, nan bò teknik la pral gen plis chans pa gen anyen nouvo nan atik sa a. Men, pou yon jinyò, tankou yon ti revi ka di l 'ki direksyon pou gade nan si li jwenn tèt li nan yon kafou konsa.

Ki jan nou nan Sportmaster te chwazi yon sistèm kachèt. Pati 1

Lè yo te mete nouvo vèsyon an nan sit entènèt Sportmaster la nan pwodiksyon, done yo te resevwa nan yon fason ki te, yo mete li léjèrman, pa trè pratik. Baz la se te tab prepare pou vèsyon anvan an nan sit la (Bitrix), ki te dwe rale nan ETL, mennen l 'nan yon nouvo fòm ak rich ak divès kalite ti bagay ki soti nan yon douzèn plis sistèm. Pou yon nouvo foto oswa deskripsyon pwodwi parèt sou sit la, ou te oblije rete tann jiska jou kap vini an - mizajou sèlman nan mitan lannwit, yon fwa pa jou.

Okòmansman, te gen anpil enkyetid soti nan premye semèn yo nan antre nan pwodiksyon ke enkonvenyan sa yo pou administratè kontni yo te yon vetiy. Men, le pli vit ke tout bagay rezoud, devlopman nan pwojè a kontinye - kèk mwa pita, nan kòmansman 2015, nou te kòmanse aktivman devlope panèl la admin. Nan 2015 ak 2016, tout bagay ap mache byen, nou lage regilyèman, panèl admin kouvri pi plis ak plis nan preparasyon an done, epi nou ap prepare pou lefèt ke byento ekip nou an pral konfye ak bagay ki pi enpòtan ak konplèks - pwodwi a. kous (plen preparasyon ak antretyen nan done sou tout pwodwi). Men, nan sezon lete an 2017, jis anvan lansman kous la komodite, pwojè a pral jwenn tèt li nan yon sitiyasyon trè difisil - jisteman paske nan pwoblèm ak kachèt. Mwen vle pale sou epizòd sa a nan dezyèm pati piblikasyon sa a ki gen de pati.

Men, nan pòs sa a mwen pral kòmanse soti byen lwen, mwen pral prezante kèk panse - lide sou kachèt, ki ta yon bon etap defile anvan yon gwo pwojè.

Lè yon travay kachèt rive

Travay la kachèt pa jis parèt. Nou se devlopè, ekri yon pwodwi lojisyèl epi nou vle li nan demann. Si pwodwi a nan demann ak siksè, itilizatè yo ap vini. Ak plis ak plis vini. Lè sa a, gen yon anpil nan itilizatè yo ak Lè sa a, pwodwi a vin trè chaje.

Nan premye etap yo, nou pa panse sou optimize ak pèfòmans kòd. Bagay pwensipal lan se fonksyonalite, byen vit woule soti yon pilòt ak tès ipotèz. Men, si chaj la ogmante, nou ponpe fè a. Nou ogmante li de oswa twa fwa, senk fwa, petèt 10 fwa. Yon kote isit la - finans pa pral pèmèt li ankò. Konbyen fwa kantite itilizatè yo pral ogmante? Li pa pral tankou 2-5-10, men si siksè, li pral soti nan 100-1000 a 100 mil fwa. Sa vle di, pi bonè oswa pita, ou pral oblije fè optimize.

Ann di ke kèk pati nan kòd la (an nou rele pati sa a yon fonksyon) pran yon tan endesan anpil, epi nou vle redwi tan an ekzekisyon. Yon fonksyon ka gen aksè nan yon baz done, oswa li ka ekzekisyon an nan kèk lojik konplèks - bagay la prensipal se ke li pran yon tan long pou egzekite. Konbyen ou ka diminye tan an ekzekisyon? Nan limit la, ou ka diminye li a zewo, pa gen plis. Ki jan ou ka diminye tan ekzekisyon a zewo? Repons: elimine ekzekisyon tout ansanm. Olye de sa, retounen rezilta a imedyatman. Ki jan ou ka jwenn rezilta a? Repons: swa kalkile li oswa gade yon kote. Li pran anpil tan pou kalkile. Ak al rekonèt se, pou egzanp, sonje rezilta a ke fonksyon an te pwodwi dènye fwa a lè yo rele ak paramèt yo menm.

Sa vle di, aplikasyon fonksyon an pa enpòtan pou nou. Li se ase jis konnen sou ki paramèt rezilta a depann. Lè sa a, si valè paramèt yo reprezante nan fòm lan nan yon objè ki ka itilize kòm yon kle nan kèk depo, Lè sa a, rezilta a nan kalkil la ka sove epi li pwochen fwa yo jwenn aksè nan li. Si sa a ekri ak lekti nan rezilta a pi vit pase egzekite fonksyon an, nou gen yon pwofi an tèm de vitès. Kantite pwofi ka rive nan 100, 1000, ak 100 mil fwa (10 ^ 5 se pito yon eksepsyon, men nan ka yon baz jistis lagging, li se byen posib).

Kondisyon debaz pou yon sistèm kachèt

Premye bagay ki ka vin yon kondisyon pou yon sistèm kachèt se vitès lekti rapid epi, nan yon ti kras pi piti, vitès ekri. Sa a se vre, men sèlman jiskaske nou woule sistèm nan pwodiksyon an.

Ann jwe ka sa a.

Ann di nou te bay chaj aktyèl la ak pyès ki nan konpitè epi kounye a yo piti piti entwodwi kachèt. Nimewo a nan itilizatè ap grandi yon ti kras, chaj la ap grandi - nou ajoute yon ti kachèt, vis li nan isit la epi la. Sa a ap kontinye pou kèk tan, e kounye a, fonksyon lou yo pratikman pa rele ankò - tout chaj prensipal la tonbe sou kachèt la. Kantite itilizatè yo pandan tan sa a ogmante N fwa.

Men, si rezèv inisyal la nan pyès ki nan konpitè ta ka 2-5 fwa, Lè sa a, avèk èd nan kachèt la nou ta ka amelyore pèfòmans pa yon faktè de 10 oswa, nan yon bon ka, pa yon faktè de 100, nan kèk kote petèt pa yon faktè. nan 1000. Sa se, sou pyès ki nan konpitè menm - nou trete 100 fwa plis demann. Gwo, ou merite Gingerbread la!

Men kounye a, nan yon bon moman, pa chans, sistèm nan te fè aksidan ak kachèt la tonbe. Pa gen anyen espesyal - apre yo tout, yo te chwazi kachèt la baze sou kondisyon an "segondè vitès lekti ak ekri, rès la pa gen pwoblèm."

Relatif ak chaj la kòmanse, rezèv fè nou an te 2-5 fwa, ak chaj la pandan tan sa a ogmante 10-100 fwa. Sèvi ak kachèt la, nou elimine apèl pou fonksyon lou ak Se poutèt sa tout bagay te travay. Epi kounyeya, san yon kachèt, konbyen fwa sistèm nou an pral ralanti? Kisa ki pral rive nou? Sistèm nan pral tonbe.

Menm si kachèt nou an pa t aksidan, men li te sèlman netwaye pou yon ti tan, li pral bezwen chofe, epi sa a pral pran kèk tan. Ak pandan tan sa a, chay prensipal la pral tonbe sou fonctionnalités.

Konklizyon: pwojè pwodiksyon trè chaje mande pou yon sistèm kachèt pa sèlman gen gwo vitès lekti ak ekri, men tou pou asire sekirite done ak rezistans nan echèk.

Agoni nan chwa

Nan yon pwojè ak yon panèl admin, chwa a te ale tankou sa a: premye nou enstale Hazelcast, paske Nou te deja abitye ak pwodui sa a soti nan eksperyans nan sit prensipal la. Men, isit la chwa sa a te tounen soti yo dwe san siksè - anba pwofil chaj nou an, Hazelcast se pa sèlman dousman, men fò anpil dousman. Epi nan moman sa a nou te deja enskri pou dat lage a.

Spoiler: ki jan egzakteman sikonstans yo te devlope ke nou rate yon gwo zafè ak te fini ak yon sitiyasyon egi ak tansyon - mwen pral di w nan dezyèm pati a - ak ki jan nou te fini ak ki jan nou te soti. Men, kounye a - mwen pral jis di ke se te yon anpil nan estrès, ak "panse - yon jan kanmenm mwen pa ka panse, nou ap souke boutèy la." "Shaking boutèy la" se tou yon spoiler, plis sou sa pita.

Sa nou te fè:

  1. Nou fè yon lis tout sistèm yo ke Google ak StackOverflow sijere. Yon ti kras plis pase 30
  2. Nou ekri tès ak yon chaj tipik pou pwodiksyon an. Pou fè sa, nou anrejistre done ki pase atravè sistèm nan nan yon anviwònman pwodiksyon - yon kalite sniffer pou done pa sou rezo a, men andedan sistèm nan. Egzakteman done sa yo te itilize nan tès yo.
  3. Ak tout ekip la, tout moun chwazi pwochen sistèm nan nan lis la, configured li, epi kouri tès yo. Li pa pase tès la, li pa pote chay la - nou jete li epi ale nan pwochen an nan liy.
  4. Sou sistèm nan 17th li te vin klè ke tout bagay te san espwa. Sispann souke boutèy la, li lè pou nou reflechi seryezman.

Men, sa a se yon opsyon lè ou bezwen chwazi yon sistèm ki pral "pran vitès la" nan tès pre-prepare. E si pa gen okenn tès sa yo ankò epi ou vle chwazi byen vit?

Ann modle opsyon sa a (li difisil pou imajine ke yon devlopè mwayen+ ap viv nan yon vakyòm, epi nan moman seleksyon an poko ofisyèlman preferans li sou ki pwodwi pou eseye premye - Se poutèt sa, plis rezònman se plis nan yon teorisyen / filozofi / sou yon jinyò).

Lè w fin deside sou kondisyon yo, nou pral kòmanse chwazi yon solisyon soti nan bwat la. Poukisa re-envante wou an: nou pral ale epi pran yon sistèm kachèt pare-fè.

Si w ap fèk kòmanse ak google li, Lè sa a, bay oswa pran lòd la, men an jeneral, direktiv yo pral tankou sa a. Premye a tout, ou pral tonbe sou Redis, li tande tout kote. Lè sa a, ou pral jwenn ke EhCache se sistèm ki pi ansyen ak ki pi pwouve. Apre sa, nou pral ekri sou Tarantool, yon devlopman domestik ki gen yon aspè inik nan solisyon an. Epi tou Ignite, paske li se kounye a sou ogmantasyon nan popilarite ak jwi sipò nan SberTech. Nan fen a gen tou Hazelcast, paske nan mond lan antrepriz li souvan parèt nan mitan gwo konpayi yo.

Lis la pa konplè, gen plizyè douzèn sistèm. Epi nou pral sèlman vis yon sèl bagay. Ann pran 5 sistèm yo chwazi pou "konkou bote" epi fè yon seleksyon. Ki moun ki pral gayan an?

Redis

Nou li sa yo ekri sou sit entènèt ofisyèl la.
Redis - pwojè opensource. Ofri depo done nan memwa, kapasite pou konsève pou sou-disk, oto-partisyone, segondè disponiblite ak rekiperasyon soti nan pann rezo a.

Li sanble ke tout bagay anfòm, ou ka pran li epi vis li sou - tout sa ou bezwen, li fè. Men, jis pou plezi, ann gade lòt kandida yo.

EhCache

EhCache - "kachèt ki pi lajman itilize pou Java" (tradiksyon eslogan ki soti nan sit entènèt ofisyèl la). Epitou opensource. Lè sa a, nou konprann ke Redis se pa pou java, men jeneral, epi yo kominike avèk li ou bezwen yon anbalaj. Ak EhCache pral pi pratik. Ki lòt bagay sistèm nan pwomèt? Fyab, pwouve, fonksyonalite konplè. Oke, li se tou ki pi komen an. Ak kachèt teraocte nan done.

Redis bliye, mwen prè poum chwazi EhCache.

Men, yon sans patriyotis pouse m 'wè sa ki bon nan Tarantool.

Tarantool

Tarantool - satisfè deziyasyon "platfòm entegrasyon done an tan reyèl". Li son trè konplike, kidonk nou li paj la an detay epi nou jwenn yon deklarasyon byen fò: "Kachèt 100% done yo nan RAM." Sa a ta dwe poze kesyon - apre tout, ka gen anpil plis done pase memwa. Eksplikasyon an se ke sa vle di ke Tarantool pa kouri serializasyon ekri done sou disk soti nan memwa. Olye de sa, li itilize karakteristik ki ba-nivo nan sistèm nan, lè memwa se tou senpleman trase nan yon sistèm dosye ak trè bon pèfòmans I/O. An jeneral, yo te fè yon bagay bèl bagay ak fre.

Ann gade nan aplikasyon yo: Mail.ru antrepriz gran wout, Avito, Beeline, Megafon, Alfa-Bank, Gazprom...

Si te gen nenpòt dout toujou sou Tarantool, Lè sa a, ka aplikasyon an nan Mastercard fini m '. Mwen pran Tarantool.

Men de tout fason...

Dife

… èske gen kèk plis Dife, yo faktire kòm yon "platfòm enfòmatik nan memwa... vitès nan memwa sou petabyte nan done." Genyen tou anpil avantaj isit la: distribiye nan memwa kachèt, depo kle-valè ki pi rapid ak kachèt, dekale orizontal, disponiblite segondè, entegrite strik. An jeneral, li sanble ke pi rapid la se Ignite.

Aplikasyon: Sberbank, American Airlines, Yahoo! Japon. Apre sa, mwen jwenn ke Ignite pa sèlman aplike nan Sberbank, men ekip la SberTech voye moun li yo nan ekip la Ignite li menm pou rafine pwodwi a. Sa a se konplètman kaptivan e mwen pare yo pran Ignite.

Li konplètman klè poukisa, mwen gade nan senkyèm pwen an.

hazelcast

Mwen ale sou sit la hazelcast, lekti. Epi li sanble ke solisyon ki pi rapid pou kachèt distribiye se Hazelcast. Li se lòd nan grandè pi vit pase tout lòt solisyon ak an jeneral li se yon lidè nan domèn nan kadriyaj done nan memwa. Sou background sa a, pran yon lòt bagay se pa respekte tèt ou. Li itilize tou depo done redondants pou operasyon kontinyèl nan gwoup la san pèt done.

Se sa, mwen prè poum pran Hazelcast.

Konparezon

Men, si ou gade, tout senk kandida yo dekri nan yon fason ke chak nan yo se pi bon an. Ki jan yo chwazi? Nou ka wè kilès ki pi popilè, chèche konparezon, epi maltèt la pral disparèt.

Nou jwenn youn konsa revizyon, chwazi 5 sistèm nou yo.

Ki jan nou nan Sportmaster te chwazi yon sistèm kachèt. Pati 1

Isit la yo klase: Redis se nan tèt la, Hazelcast se nan dezyèm plas, Tarantool ak Ignite ap pran popilarite, EhCache te e li rete menm jan an.

Men ann gade metòd kalkil: lyen ki mennen nan sit entènèt, enterè jeneral nan sistèm nan, òf travay - gwo! Sa vle di, lè sistèm mwen an echwe, mwen pral di: "Non, li serye! Gen anpil òf travay..." Tankou yon konparezon senp pa pral fè.

Tout sistèm sa yo se pa sèlman sistèm kachèt. Yo gen tou yon anpil nan fonksyonalite, ki gen ladan lè done yo pa ponpe nan kliyan an pou tretman, men vis vèrsa: kòd la ki bezwen yo dwe egzekite sou done yo deplase nan sèvè a, yo egzekite la, epi rezilta a retounen. Epi yo pa tèlman souvan konsidere kòm yon sistèm separe pou kachèt.

Oke, ann pa abandone, ann jwenn yon konparezon dirèk nan sistèm yo. Ann pran de opsyon ki pi wo yo - Redis ak Hazelcast. Nou enterese nan vitès, epi nou pral konpare yo ki baze sou paramèt sa a.

Hz vs Redis

Nou jwenn sa konparezon:
Ki jan nou nan Sportmaster te chwazi yon sistèm kachèt. Pati 1

Blue se Redis, wouj se Hazelcast. Hazelcast genyen tout kote, e gen yon rezon pou sa a: li se milti-threaded, trè optimize, chak fil travay ak patisyon pwòp li yo, kidonk pa gen okenn bloke. Ak Redis se yon sèl-threaded li pa benefisye de CPU modèn milti-nwayo. Hazelcast gen I/O asynchrone, Redis-Jedis gen priz bloke. Apre yo tout, Hazelcast sèvi ak yon pwotokòl binè, ak Redis se tèks-santre, sa vle di li pa efikas.

Jis nan ka, ann ale nan yon lòt sous konparezon. Kisa l ap montre nou?

Redis vs Hz

Yon sèl plis konparezon:
Ki jan nou nan Sportmaster te chwazi yon sistèm kachèt. Pati 1

Isit la, okontrè, wouj se Redis. Sa vle di, Redis depase Hazelcast an tèm de pèfòmans. Hazelcast te genyen premye konparezon an, Redis te genyen dezyèm lan. Dwa isit la eksplike trè jisteman poukisa Hazelcast te genyen konparezon anvan an.

Li sanble ke rezilta a nan yon sèl la te aktyèlman truke: Redis te pran nan bwat la baz, ak Hazelcast te pwepare pou yon ka tès. Lè sa a, li vire soti: premyèman, nou pa ka fè pèsonn konfyans, ak dezyèmman, lè nou finalman chwazi yon sistèm, nou toujou bezwen konfigirasyon li kòrèkteman. Anviwònman sa yo gen plizyè douzèn, prèske dè santèn de paramèt.

Souke boutèy la

Apre sa, mwen ka eksplike tout pwosesis nou te fè kounye a ak metafò sa a: "Shaking the bottle." Sa vle di, kounye a ou pa bezwen pwograme, kounye a bagay prensipal la se pou kapab li stackoverflow. Apre sa, mwen gen yon moun nan ekip mwen an, yon pwofesyonèl, ki travay egzakteman tankou sa a nan moman kritik.

Ki sa l ap fè? Li wè yon bagay ki kase, li wè yon tras pile, li pran kèk mo nan li (kiyès ki ekspètiz li nan pwogram nan), li fè rechèch sou Google, li jwenn stackoverflow nan mitan repons yo. San yo pa li, san yo pa reflechi, pami repons yo nan kesyon an, li chwazi yon bagay ki pi sanble ak fraz "fè sa a ak sa" (chwazi yon repons konsa se talan li, paske se pa toujou repons lan ki te resevwa plis renmen), aplike, sanble: si yon bagay te chanje, Lè sa a, gwo. Si li pa chanje, woule l tounen. Epi repete lansman-tcheke-rechèch. Ak nan fason sa a entwisyon, li asire ke kòd la ap travay apre kèk tan. Li pa konnen poukisa, li pa konnen sa li te fè, li pa ka eksplike. Men! Enfeksyon sa a ap travay. Epi "dife a etenn." Koulye a, ann evalye sa nou te fè. Lè pwogram nan travay, li se yon lòd de grandè pi fasil. Epi li sove anpil tan.

Metòd sa a trè byen eksplike ak egzanp sa a.

Li te yon fwa trè popilè yo kolekte yon vwalye nan yon boutèy. An menm tan an, vwal la gwo ak frajil, ak kou boutèy la trè etwat, li enposib pouse li andedan. Ki jan yo rasanble li?

Ki jan nou nan Sportmaster te chwazi yon sistèm kachèt. Pati 1

Gen yon metòd konsa, trè vit ak trè efikas.

Bato a konsiste de yon pakèt ti bagay: baton, kòd, vwal, lakòl. Nou mete tout bagay sa yo nan yon boutèy.
Nou pran boutèy la ak tou de men epi kòmanse souke. Nou souke epi souke l. Epi anjeneral li vire soti yo dwe fatra konplè, nan kou. Men pafwa. Pafwa li vire soti nan yon bato! Plis jisteman, yon bagay ki sanble ak yon bato.

Nou montre yon bagay sa a bay yon moun: "Seryoga, ou wè!?" Ak tout bon, soti byen lwen li sanble yon bato. Men, sa pa ka pèmèt yo kontinye.

Gen yon lòt fason. Yo itilize yo pa nèg ki pi avanse, tankou entru.

Mwen te bay nèg sa a yon travay, li te fè tout bagay epi li ale. Epi ou gade - li sanble ke li te fè. Epi apre yon ti tan, lè kòd la bezwen finalize, sa a kòmanse akòz li... Li bon ke li te deja jere kouri byen lwen. Sa yo se mesye yo ki sèvi ak egzanp yon boutèy, pral fè sa: ou wè, kote anba a ye, vè a koube. Epi li pa totalman klè si li transparan oswa ou pa. Lè sa a, "entru yo" koupe anba sa a, mete yon bato la, Lè sa a, lakòl anba a tounen sou ankò, epi li nan kòm si se konsa li sipoze ye.

Soti nan pwen de vi nan mete pwoblèm nan, tout bagay sanble yo kòrèk. Men, lè l sèvi avèk bato kòm yon egzanp: poukisa fè bato sa a nan tout, ki moun ki bezwen li de tout fason? Li pa bay okenn fonksyonalite. Anjeneral bato sa yo se kado bay moun ki trè wo plase, ki mete l 'sou yon etajè anlè yo, kòm kèk kalite senbòl, kòm yon siy. Men, si yon moun konsa, chèf yon gwo biznis oswa yon ofisyèl wo-plase, ki jan drapo a pral kanpe pou yon Hack konsa, kou a ki te koupe? Li ta pi bon si li pa janm konnen sou li. Se konsa, ki jan yo fini fè bato sa yo ki ka bay yon moun enpòtan?

Sèl kote kle ke ou reyèlman pa ka fè anyen sou se kò a. Ak kòk bato a adapte dwa nan kou a. Lè nou konsidere ke bato a reyini deyò boutèy la. Men, li pa jis rasanble yon bato, li se yon navèt bijou reyèl. Levye espesyal yo ajoute nan eleman yo, ki Lè sa a, pèmèt yo leve. Pou egzanp, vwal yo pliye, ak anpil atansyon pote andedan, ak Lè sa a, avèk èd nan pensèt, yo rale ak leve soti vivan trè jisteman, ak presizyon. Rezilta a se yon travay atistik ki ka gen don ak yon konsyans klè ak fyète.

Men, si nou vle pwojè a gen siksè, dwe gen omwen yon bijou nan ekip la. Yon moun ki gen sousi pou bon jan kalite a nan pwodwi a ak pran an kont tout aspè yo, san yo pa sakrifye anyen, menm nan moman estrès, lè sikonstans mande pou fè ijan nan depans lan nan enpòtan an. Tout pwojè siksè ki dirab, ki te kanpe tès la nan tan, yo bati sou prensip sa a. Gen yon bagay trè presi ak inik sou yo, yon bagay ki pran avantaj de tout posiblite ki disponib. Nan egzanp lan ak bato a nan boutèy la, lefèt ke ekòs la nan bato a pase nan kou a jwe soti.

Retounen nan travay la nan chwazi sèvè kachèt nou an, ki jan metòd sa a ta ka aplike? Mwen ofri opsyon sa a nan chwazi nan tout sistèm ki egziste yo - pa souke boutèy la, pa chwazi, men gade nan sa yo genyen an prensip, ki sa yo gade pou lè w ap chwazi yon sistèm.

Ki kote yo gade pou boutèy-kou

Ann eseye pa souke boutèy la, pa ale nan tout sa ki la youn pa youn, men ann wè ki pwoblèm ki pral leve si nou toudenkou, pou travay nou an, konsepsyon yon sistèm konsa tèt nou. Natirèlman, nou pa pral rasanble bisiklèt la, men nou pral sèvi ak dyagram sa a pou ede nou konnen ki pwen yo dwe peye atansyon sou deskripsyon pwodwi yo. Ann trase yon dyagram konsa.

Ki jan nou nan Sportmaster te chwazi yon sistèm kachèt. Pati 1

Si sistèm nan distribye, Lè sa a, nou pral gen plizyè serveurs (6). Ann di gen kat (li bon pou mete yo nan foto a, men, nan kou, ka gen anpil nan yo jan ou renmen). Si sèvè yo sou nœuds diferan, sa vle di ke yo tout kouri kèk kòd ki responsab pou asire ke nœuds sa yo fòme yon gwoup epi, nan evènman an nan yon repo, konekte ak rekonèt youn ak lòt.

Nou bezwen tou lojik kòd (2), ki se aktyèlman sou kachèt. Kliyan yo kominike avèk kòd sa a atravè kèk API. Kòd kliyan (1) ka swa nan menm JVM a oswa jwenn aksè nan li sou rezo a. Lojik aplike andedan se desizyon an nan ki objè yo kite nan kachèt la ak ki yo jete deyò. Nou itilize memwa (3) pou estoke kachèt la, men si sa nesesè, nou ka sove kèk nan done yo sou disk (4).

Ann wè nan ki pati chaj la pral rive. Aktyèlman, chak flèch ak chak ne yo pral chaje. Premyèman, ant kòd kliyan an ak API a, si sa a se kominikasyon rezo, sibvansyon an ka byen aparan. Dezyèmman, nan kad api nan tèt li - si nou twòp li ak lojik konplèks, nou ka kouri nan pwoblèm ak CPU a. Epi li ta bèl si lojik pa t pèdi tan sou memwa. Apre sa, rete entèraksyon ak sistèm nan dosye - nan vèsyon abityèl sa a se seri / retabli ak ekri / li.

Apre sa, se entèraksyon ak gwoup la. Gen plis chans, li pral nan menm sistèm nan, men li ta ka separeman. Isit la ou bezwen tou pran an kont transfè a nan done nan li, vitès la nan seri done ak entèraksyon ant gwoup la.

Koulye a, sou yon bò, nou ka imajine "ki angrenaj yo pral vire" nan sistèm nan kachèt lè pwosesis demann ki soti nan kòd nou an, ak nan lòt men an, nou ka estime kisa ak konbyen demann kòd nou an pral jenere nan sistèm sa a. Sa a se ase yo fè yon chwa plis oswa mwens modere - yo chwazi yon sistèm pou ka itilize nou an.

hazelcast

Ann wè kijan pou aplike dekonpozisyon sa a nan lis nou an. Pou egzanp, Hazelcast.

Pou mete/pran done nan Hazelcast, kòd kliyan an aksè (1) api a. Hz pèmèt ou kouri sèvè a kòm entegre, ak nan ka sa a, aksè api a se yon apèl metòd andedan JVM la, ki ka konsidere kòm gratis.

Nan lòd pou lojik nan (2) travay, Hz depann sou hash la nan etalaj la byte nan kle a serialize - se sa ki, kle a pral serialize nan nenpòt ka. Sa a se anlè inevitab pou Hz.
Estrateji degèpisman yo byen aplike, men pou ka espesyal ou ka ajoute pwòp ou yo. Ou pa bezwen enkyete w sou pati sa a.

Depo (4) ka konekte. Gwo. Entèraksyon (5) pou embedded kapab konsidere kòm instant. Echanj done ant nœuds nan gwoup la (6) - wi, li egziste. Sa a se yon envestisman nan tolerans fay nan depans lan nan vitès. Karakteristik Hz Near-cache pèmèt ou diminye pri a - done yo resevwa nan men lòt nœuds nan gwoup la pral kach.

Ki sa ki ka fè nan kondisyon sa yo ogmante vitès?

Pou egzanp, pou fè pou evite seri kle nan (2) - tache yon lòt kachèt sou tèt Hazelcast, pou done ki pi cho yo. Sportmaster te chwazi Kafeyin pou objektif sa a.

Pou trese nan nivo (6), Hz ofri de kalite depo: IMap ak ReplicatedMap.
Ki jan nou nan Sportmaster te chwazi yon sistèm kachèt. Pati 1

Li vo mansyone ki jan Hazelcast te antre nan pil teknoloji Sportmaster la.

An 2012, lè nou t ap travay sou premye pilòt sit la nan lavni an, li te Hazelcast ki te tounen premye lyen ke motè rechèch la te retounen. Konesans la te kòmanse "premye fwa" - nou te kaptive pa lefèt ke jis de zè de tan pita, lè nou vise Hz nan sistèm nan, li te travay. Epi li te travay byen. Nan fen jounen an nou te konplete yon kantite tès epi yo te kontan. Ak rezèv sa a nan vigè te ase simonte supriz yo ke Hz te voye moute sou tan. Koulye a, ekip Sportmaster a pa gen okenn rezon pou abandone Hazelcast.

Men, agiman tankou "premye lyen nan motè rechèch la" ak "HelloWorld te reyini byen vit" se, nan kou, yon eksepsyon ak yon karakteristik nan moman sa a nan ki chwa a te pran plas. Tès yo reyèl pou sistèm chwazi a kòmanse ak lage nan pwodiksyon, epi li se nan etap sa a ke ou ta dwe peye atansyon lè w ap chwazi nenpòt sistèm, ki gen ladan kachèt. Aktyèlman, nan ka nou an nou ka di ke nou te chwazi Hazelcast pa aksidan, men Lè sa a, li te tounen soti ke nou te chwazi kòrèkteman.

Pou pwodiksyon, pi plis enpòtan: siveyans, manyen echèk sou nœuds endividyèl, replikasyon done, pri dekale. Sa vle di, li vo peye atansyon sou travay yo ki pral leve pandan antretyen an nan sistèm nan - lè chaj la se dè dizèn de fwa pi wo pase te planifye, lè nou aksidantèlman Upload yon bagay nan move kote, lè nou bezwen woule soti yon nouvo vèsyon. nan kòd la, ranplase done epi fè li inapèsi pou kliyan yo.

Pou tout kondisyon sa yo, Hazelcast sètènman adapte bòdwo a.

A kontinye

Men, Hazelcast se pa yon Miracles. Nan 2017, nou te chwazi Hazelcast pou kachèt admin, tou senpleman baze sou bon enpresyon nan eksperyans sot pase yo. Sa a te jwe yon wòl kle nan yon blag trè mechan, paske nou te jwenn tèt nou nan yon sitiyasyon difisil ak "ewoyman" soti nan li pou 60 jou. Men, plis sou sa nan pwochen pati a.

Antretan... Happy New Code!

Sous: www.habr.com

Add nouvo kòmantè