Apache Storm 2.0 distribueret computersystem tilgængeligt

Så lyset betydelig udgivelse af et distribueret hændelsesbehandlingssystem Apache Storm 2.0, kendt for sin overgang til en ny arkitektur implementeret i Java, i stedet for det tidligere brugte Clojure-sprog.

Projektet giver dig mulighed for at organisere garanteret behandling af forskellige begivenheder i realtid. For eksempel kan Storm bruges til at analysere datastrømme i realtid, køre maskinlæringsopgaver, organisere kontinuerlig computing, implementere RPC, ETL osv. Systemet understøtter klyngedannelse, oprettelse af fejltolerante konfigurationer, garanteret databehandlingstilstand og har høj ydeevne, tilstrækkelig til at behandle mere end en million anmodninger pr. sekund på én klyngenode.

Integration med forskellige købehandlingssystemer og databaseteknologier understøttes. Storm-arkitekturen involverer modtagelse og behandling af ustrukturerede, konstant opdaterede datastrømme ved hjælp af vilkårlige komplekse processorer med mulighed for at opdele mellem forskellige stadier af beregninger. Projektet blev overdraget til Apache-fællesskabet, efter at Twitter købte BackType, det firma, der oprindeligt udviklede rammeværket. I praksis blev Storm brugt i BackType til at analysere afspejlingen af ​​begivenheder i mikroblogs, ved at sammenligne nye tweets og de links, der blev brugt i dem (f.eks. blev det vurderet, hvordan eksterne links eller meddelelser offentliggjort på Twitter blev genudsendt af andre deltagere ).

Storms funktionalitet sammenlignes med Hadoop-platformen, hvor den vigtigste forskel er, at dataene ikke lagres på et lager, men indtages eksternt og behandles i realtid. Storm har ikke et indbygget lagerlag, og den analytiske forespørgsel begynder at blive anvendt på indgående data, indtil den annulleres (mens Hadoop bruger finite-time MapReduce-job, bruger Storm ideen om kontinuerligt at køre "topologier"). Eksekveringen af ​​handlere kan fordeles på flere servere - Storm paralleliserer automatisk arbejde med tråde på forskellige klynge noder.

Systemet blev oprindeligt skrevet i Clojure og kører inde i den virtuelle JVM-maskine. Apache Foundation har lanceret et initiativ til at migrere Storm til en ny kerne skrevet i Java, hvis resultater er foreslået i udgivelsen af ​​Apache Storm 2.0. Alle grundlæggende komponenter i platformen er omskrevet i Java. Støtte til skrivebehandlere i Clojure er bibeholdt, men tilbydes nu i form af indbindinger. Storm 2.0.0 kræver Java 8. Multi-threaded-behandlingsmodellen er blevet fuldstændig redesignet, hvilket gør det muligt opnå en mærkbar stigning i ydeevnen (for nogle topologier blev forsinkelserne reduceret med 50-80%).

Apache Storm 2.0 distribueret computersystem tilgængeligt

Den nye version tilbyder også en ny type Streams API, der giver dig mulighed for at definere handlere ved hjælp af funktionelle programmeringslignende operationer. Den nye API er implementeret oven på standard base API og understøtter automatisk sammenlægning af operationer for at optimere deres behandling. Windowing API til vinduesoperationer har tilføjet understøttelse af lagring og gendannelse af tilstand i backend.

Støtte til at tage højde for yderligere ressourcer, når der træffes beslutninger ikke begrænset til
CPU og hukommelse, såsom netværks- og GPU-indstillinger. Der er foretaget en lang række forbedringer for at sikre integration med platformen Kafka. Adgangskontrolsystemet er blevet udvidet til at omfatte muligheden for at oprette administratorgrupper og uddelegere tokens. Tilføjede forbedringer relateret til SQL og metrics support. Nye kommandoer er dukket op i administratorgrænsefladen til fejlretning af klyngetilstanden.

Anvendelsesområder for Storm:

  • Behandling af strømme af nye data eller databaseopdateringer i realtid;
  • Continuous Computing: Storm kan køre kontinuerlige forespørgsler og behandle kontinuerlige strømme og levere behandlingsresultater til klienten i realtid.
  • Distributed Remote Procedure Call (RPC): Storm kan bruges til at levere parallel udførelse af ressourcekrævende forespørgsler. Et job ("topologi") i Storm er en funktion fordelt på tværs af noder, der venter på, at der kommer beskeder, som skal behandles. Efter at have modtaget en besked, behandler funktionen den i den lokale kontekst og returnerer resultatet. Et eksempel på at bruge distribueret RPC ville være at behandle søgeforespørgsler parallelt eller udføre operationer på et stort sæt sæt.

Storm funktioner:

  • En simpel programmeringsmodel, der i høj grad forenkler databehandling i realtid;
  • Understøttelse af alle programmeringssprog. Moduler er tilgængelige til Java, Ruby og Python, tilpasning til andre sprog er let takket være en meget enkel kommunikationsprotokol, der kræver omkring 100 linjer kode for at understøtte;
  • Fejltolerance: For at køre et databehandlingsjob skal du generere en jar-fil med kode. Storm vil uafhængigt distribuere denne jar-fil på tværs af klyngens noder, forbinde de behandlere, der er knyttet til den, og organisere overvågning. Når jobbet er fuldført, vil koden automatisk blive deaktiveret på alle noder;
  • Horisontal skalerbarhed. Alle beregninger udføres i parallel tilstand; efterhånden som belastningen stiger, er det nok blot at forbinde nye noder til klyngen;
  • Pålidelighed. Storm sikrer, at hver indgående besked behandles fuldt ud mindst én gang. Meddelelsen vil kun blive behandlet én gang, hvis der ikke er nogen fejl ved gennemgang af alle behandlere; hvis der opstår problemer, vil mislykkede behandlingsforsøg blive gentaget.
  • Fart. Storms kode er skrevet med høj ydeevne i tankerne og bruger systemet til hurtig asynkron messaging ZeroMQ.

Kilde: opennet.ru

Tilføj en kommentar