betydelig udgivelse af systemet til distribueret behandlingsbehandling af hændelser , bemærkelsesværdig med overgangen til en ny arkitektur, implementeret på Java i stedet for det tidligere anvendte sprog Clojure.
Projektet muliggør garanti for behandling af forskellige hændelser i realtid. For eksempel kan Storm anvendes til at analysere streaming data i realtid, udføre opgaver til maskinlæring, organisere kontinuerlige beregninger, implementere RPC, ETL osv. Systemet understøtter clustering, oprettelse af fejlsikre konfigurationer, tilstand for garanteret databehandling og har høj ydeevne, der er tilstrækkelig til at håndtere mere end en million forespørgsler pr. sekund på en enkelt klynge node.
Integration med forskellige købehandlingssystemer og databaser understøttes. Storm-arkitekturen indebærer modtagelse og behandling af ustrukturerede, konstant opdaterede datastreams ved brug af vilkårlige komplekse behandlere med mulighed for sektionering mellem de forskellige beregningsstadier. Projektet blev overgivet til Apache-samfundet efter, at Twitter opkøbte BackType, som oprindeligt udviklede rammeværket. I praksis blev Storm anvendt i BackType til at analysere refleksionen af begivenheder i mikroblogging ved at matche nye tweets og de links, der anvendes i dem, i realtid (for eksempel blev der vurderet, hvordan eksterne links eller de Twitter-annoncer, der offentliggøres, retweetes af andre deltagere).
Storms funktionalitet sammenlignes med Hadoop-platformen, mens den vigtigste forskel er, at data ikke opbevares i et lager, men kommer udefra og behandles i realtid. Storm har ikke en indbygget lagringslag til organisering af lager, og den analytiske forespørgsel anvendes på de indkommende data, indtil den annulleres (mens Hadoop bruger tidskrævende MapReduce-opgaver, anvender Storm idéen om kontinuerligt kørende 'topologier'). Udførelsen af behandlere kan distribueres på flere servere - Storm paralleliserer automatisk arbejdet med streams på forskellige klynge noder.
Systemet blev oprindeligt skrevet i Clojure og kører på JVM virtuelle maskine. I Apache-fonden blev der startet initiativer for at portere Storm til en ny kerne, skrevet i Java, hvis resultater blev præsenteret i Apache Storm 2.0. Alle grundlæggende komponenter på platformen er blevet omskrevet i Java. Støtten til at skrive håndterere i Clojure er bevaret, men tilbydes nu i form af bindinger. For at køre Storm 2.0.0 kræves Java 8. Modellen for multitrådet behandling er blevet fuldstændig redesignet, hvilket har muliggjort en mærkbar stigning i ydeevnen (for nogle topologier er forsinkelserne reduceret med 50-80%).
I den nye version er der også introduceret et nyt typet API Streams, der gør det muligt at definere håndterere ved hjælp af operationer i funktionel programmeringsstil. Det nye API er implementeret oven på den eksisterende basis-API og understøtter automatisk sammenlægning af operationer for at optimere deres behandling. I API Windowing til vinduesoperationer er der tilføjet støtte til at gemme og genskabe tilstand i backend.
Planlæggeren for kørsel af håndterere har fået tilføjet støtte til at tage højde for ekstra ressourcer ved beslutningstagning, som ikke kun er begrænset til
CPU og hukommelse, men også netværksparametre og GPU. Der er foretaget et stort antal forbedringer i relation til integration med platformen . Adgangskontrolsystemet er blevet udvidet, hvor der nu er mulighed for at oprette administratorgrupper og delegere tokens. Også forbedringer relateret til SQL og metrics er blevet tilføjet. I administrationsgrænsefladen er der kommet nye kommandoer til fejlfinding af clusterets tilstand.
Anvendelsesområder for Storm:
- Behandling af strømme af nye data eller databasen opdateringer i realtid;
- Kontinuerlige beregninger: Storm kan udføre kontinuerlige forespørgsler og behandle kontinuerlige strømme, og sende behandlingsresultaterne til kunden i realtid.
- Fordelt fjernprocedurekald (RPC): Storm kan anvendes til at muliggøre parallel udførelse af ressourcekrævende forespørgsler. Opgaven ("topologi") i Storm repræsenterer en distribueret funktion på noderne, som venter på at modtage beskeder, der skal behandles. Efter modtagelse af en besked behandler funktionen den i et lokalt kontekst og returnerer resultatet. Et eksempel på brugen af distribueret RPC kan være parallel behandling af søgeforespørgsler eller udførelse af operationer på et stort sæt af mængder.
Egenskaber ved Storm:
- En enkel programmeringsmodel, der i høj grad forenkler behandlingen af data i realtid;
- Understøttelse af alle programmeringssprog. Der findes moduler for Java, Ruby og Python, og tilpasning til andre sprog er ikke vanskelig takket være et meget simpelt kommunikationsprotokol, som kræver omkring 100 linjer kode for at implementere understøttelsen;
- Fejltolerance: For at køre en dataprosesseringsopgave kræves det at danne en jar-fil med koden. Storm distribuerer automatisk denne jar-fil til noderne i klyngen, forbinder relaterede behandlere og organiserer overvågning. Når opgaven er afsluttet, vil koden automatisk blive deaktiveret på alle noder;
- Horisontal skalerbarhed. Alle beregninger udføres parallelt, og ved stigende belastning er det tilstrækkeligt bare at tilslutte nye noder til klyngen;
- Pålidelighed. Storm garanterer, at hver modtaget besked vil blive behandlet fuldstændigt mindst én gang. En besked vil kun blive behandlet én gang, hvis der ikke er fejl under gennemløbet af alle behandlere; hvis der opstår problemer, vil forsøget på behandling blive gentaget.
- Hastighed. Storm-koden er skrevet med fokus på høj ydeevne og bruger til hurtig asynkron meddelelse et system .
Kilde: opennet.ru
