lëshimi i rëndësishëm i sistemit të përpunimit të shpërndarë të ngjarjeve , një kalim i rëndësishëm në një arkitekturë të re, e realizuar në gjuhën Java, në vend të gjuhës Clojure që përdorej më parë.
Projekti mundëson organizimin e përpunimit të garantuar të ngjarjeve të ndryshme në kohë reale. Për shembull, Storm mund të përdoret për analizimin e rrjedhave të të dhënave në kohë reale, për realizimin e detyrave për mësimin e makinerive, për organizimin e llogaritjeve të vazhdueshme, realizimin e RPC, ETL etj. Sistemi mbështet klasterizimin, krijimin e konfigurimeve të besueshme, modin e përpunimit të garantuar të të dhënave dhe ka një rendiment të lartë, mjaftueshëm për të përpunuar më shumë se një milion kërkesa në sekondë në një nyjë të klasterit.
Mundësohet integrimi me sisteme të ndryshme përpunimi të rinjsh dhe teknologji të bazave të të dhënave. Arkitektura e Storm parashikon pranim dhe përpunim të rrjedhave të dhënash të pastrukturura dhe vazhdimisht të përditësuara duke përdorur përpunues të ndërlikuar me mundësi seksionimi mes fazave të ndryshme të llogaritjeve. Projekti u dorëzua komunitetit Apache pas përvetësimit nga Twitter i kompanisë BackType, e cila fillimisht zhvilloi framework-un. Në praktikë, Storm u përdor në BackType për analizimin e reflektimeve të ngjarjeve në mikroblogje, duke përputhur në flakë tweet-et e reja dhe lidhjet që përdoreshin në to (për shembull, u vlerësua se si lidhjet e jashtme ose paralajmërimet e publikuara në Twitter shpërndaheshin nga pjesëmarrësit e tjerë).
Funksionaliteti i Storm krahasohet me platformĂ«n Hadoop, megjithatĂ« dallimi kryesor Ă«shtĂ« se tĂ« dhĂ«nat nuk janĂ« tĂ« vendosura nĂ« njĂ« depo, por vijnĂ« nga jashtĂ« dhe pĂ«rpunohen nĂ« kohĂ« reale. NĂ« Storm nuk ka njĂ« ndĂ«rfaqe tĂ« integruar pĂ«r organizimin e depozitimit dhe kĂ«rkesa analitike fillon tĂ« aplikohet pĂ«r tĂ« dhĂ«nat qĂ« vijnĂ« deri sa tĂ« anulohet (nĂ«se nĂ« Hadoop pĂ«rdoren punĂ« MapReduce me kohĂ« tĂ« pĂ«rcaktuar, nĂ« Storm pĂ«rdoret ideja e "topologjive" qĂ« pĂ«rpunohen vazhdimisht). Ekzekutimi i pĂ«rpunuesve mund tĂ« shpĂ«rndahet nĂ« shumĂ« serverĂ« â Storm automatikisht e ndan punĂ«n me rrjedhat nĂ« nyje tĂ« ndryshme tĂ« klasterit.
Fillimisht, sistemi u shkrua në gjuhën Clojure dhe ekzekutohet brenda një makine virtuale JVM. Në fondin Apache u lansua një iniciativë për kalimin e Storm në një bërthamë të re, të shkruar në Java, rezultatet e së cilës u ofruan në lëshimin e Apache Storm 2.0. Të gjitha komponentët themelore të platformës u rishkruan në Java. Mbështetja për shkruarjen e përpunuesve në Clojure u ruajt, por tani ofrohet si binda. Për funksionimin e Storm 2.0.0 kërkohet ekzistenca e Java 8. Rrjedha e modelit të përpunimit shumë-fish është rishikuar, duke mundësuar një rritje të dukshme të performancës (për disa topologji, vonesat u reduktuan me 50-80%).
Në versionin e ri gjithashtu është ofruar një API i ri i tipizuar Streams, duke lejuar përcaktimin e përpunuesve duke përdorur operacione në stilin e programimit funksional. API i ri është realizuar mbi API-në baze dhe mbështet bashkimin automatik të operacioneve për optimizimin e përpunimit të tyre. Në API Windowing për operacionet e dritareve është shtuar mbështetje për ruajtjen dhe rikthimin e gjendjes në backend.
Në planifikuesin e lançimit të përpunuesve është shtuar mbështetje për marrjen parasysh të burimeve shtesë gjatë marrjes së vendimeve, që nuk kufizohen
në CPU dhe memorje, të tilla si parametrat e rrjetit dhe GPU. Janë bërë një numër të madh përmirësimesh që lidhen me integrimin me platformën . Sistemi i kontrollit të qasjes është zgjeruar, ku është shtuar mundësia për krijimin e grupeve të administratorëve dhe delegimin e tokeneve. Janë shtuar përmirësime që lidhen me mbështetje për SQL dhe metrika. Në ndërfaqen e administratorit janë shtuar komanda të reja për zgjidhjen e gjendjes së klasterit.
Fushat e aplikimit të Storm:
- Përpunimi i rrjedhave të të dhënave të reja ose përditësimeve të bazës së të dhënave në kohë reale;
- Llogaritjet e vazhdueshme: Storm mund të kryejë kërkesa të vazhdueshme dhe të përpunojë rrjedha të vazhdueshme, duke i kaluar rezultatet e përpunimit klientit në kohë reale.
- Thirrje tĂ« shpĂ«rndara tĂ« procedurave (RPC): Storm mund tĂ« pĂ«rdoret pĂ«r tĂ« siguruar paralelizmin e ekzekutimit tĂ« kĂ«rkesave qĂ« kĂ«rkojnĂ« burime. NjĂ« detyrĂ« (âtopologjiâ) nĂ« Storm Ă«shtĂ« njĂ« funksion i shpĂ«rndarĂ« nĂ« nyje qĂ« pret marrjen e mesazheve qĂ« duhen pĂ«rpunuar. Pas marrjes sĂ« mesazhit, funksioni e pĂ«rpunon atĂ« nĂ« kontekstin lokal dhe kthen rezultatin. NjĂ« shembull i pĂ«rdorimit tĂ« RPC tĂ« shpĂ«rndarĂ« mund tĂ« jetĂ« pĂ«rpunimi paralel i kĂ«rkesave tĂ« kĂ«rkimit ose kryerja e operacioneve mbi njĂ« grup tĂ« madh tĂ« shumĂ«zimeve.
Veçoritë e Storm:
- Një model i thjeshtë programimi që e thjeshton ndjeshëm procesin e përpunimit të të dhënave në kohë reale;
- Mbështetje për çdo gjuhë programimi. Janë në dispozicion module për gjuhët Java, Ruby dhe Python, dhe adaptimi për gjuhë të tjera nuk paraqet vështirësi për shkak të një protokolli komunikimi shumë të thjeshtë, për realizimin e mbështetjes së të cilit nevojiten rreth 100 rreshta kod;
- Qëndrueshmëri: për të nisur një detyrë përpunimi të dhënash, duhet të krijoni një skedar jar me kodin. Storm do të shpërndajë automatikisht këtë skedar jar në nyjat e klasterit, do të lidhi përpunuesit e lidhur dhe do të organizojë monitorimin. Pas përfundimit të detyrës, kodi do të çaktivizohet automatikisht në të gjitha nyjat;
- Shkallëzueshmëri horizontale. Të gjitha llogaritjet kryhen në mënyrë paralele, duke u rritur ngarkesën, mjafton të lidhni nyja të reja në klaster;
- Besueshmëri. Storm garanton që çdo mesazh i ardhur do të përpunojë plotësisht të paktën një herë. Një herë mesazhi do të përpunohet vetëm nëse nuk ka pasur gabime gjatë kalimit të të gjithë përpunuesve; në rast problemi, përpjekjet e dështuara për përpunim do të përsëriten.
- Shpejtësi. Kodi i Storm është shkruar me sy te performanca e lartë dhe përdor një sistem për shkëmbimin e mesazheve asinkron shumë të shpejtë. .
Burimi: opennet.ru
