betydande release av distribuerad hÀndelsehanteringssystem , anmÀrkningsvÀrd övergÄng till en ny arkitektur, implementerad i Java istÀllet för det tidigare anvÀnda sprÄket Clojure.
Projektet möjliggör garanterad bearbetning av olika hÀndelser i realtid. Till exempel kan Storm anvÀndas för att analysera datastreams i realtid, utföra uppgifter för maskininlÀrning, organisera kontinuerliga berÀkningar, implementera RPC, ETL osv. Systemet stöder klusterhantering, skapande av felresistenta konfigurationer, lÀget för garanterad databehandling och har hög prestanda, tillrÀcklig för att bearbeta mer Àn en miljon begÀrningar per sekund pÄ en nod i klustret.
Det stöder integration med olika köhanteringssystem och databasteknologier. Storm-arkitekturen förutsÀtter mottagande och behandling av ostrukturerade, stÀndigt uppdaterade datastreams med anvÀndning av valfria komplexa bearbetare med möjlighet till partitionering mellan olika berÀkningssteg. Projektet överlÀmnades till Apache-gemenskapen efter att Twitter hade förvÀrvat företaget BackType, som ursprungligen utvecklade ramverket. I praktiken anvÀndes Storm pÄ BackType för att analysera reflektioner av hÀndelser i mikrobloggar genom att i realtid matcha nya tweets och lÀnkar som anvÀndes i dem (t.ex. bedömdes hur externa lÀnkar eller Twitter-annonsinlÀgg ÄterutsÀndes av andra deltagare).
Storms funktionalitet jĂ€mförs med Hadoop-plattformen, dĂ€r den nyckelfulla skillnaden Ă€r att data inte lagras utan kommer utifrĂ„n och behandlas i realtid. I Storm finns det ingen inbyggd mellanlager för lagring, och analytiska förfrĂ„gningar börjar tillĂ€mpas pĂ„ inkommande data tills de avbryts (medan Hadoop anvĂ€nder tidsbestĂ€md MapReduce-arbetsuppgifter, tillĂ€mpas i Storm idĂ©n om stĂ€ndigt körande 'topologier'). Behandlarna kan distribueras över flera servrar â Storm parallelliserar automatiskt arbetet med strömmarna pĂ„ olika klusterknutar.
Systemen skrevs ursprungligen i Clojure och körs inuti JVM. Inom Apache har en initiativ startats för att översÀtta Storm till en ny kÀrna, skriven i Java, vars resultat presenteras i Apache Storm 2.0. Alla grundkomponenter av plattformen har skrivits om i Java. Stödet för att skriva handlare i Clojure har bevarats, men erbjuds nu i form av bindningar. För att köra Storm 2.0.0 krÀvs Java 8. Modellen för flertrÄdig bearbetning har helt omarbetats, vilket möjliggjorde en betydande prestandaökning (för vissa topologier har latensen minskat med 50-80%).
I den nya versionen introduceras Àven en typad API för Streams, som tillÄter specificering av handlare med hjÀlp av funktionella programmeringsoperationer. Den nya API:n Àr implementerad ovanpÄ den vanliga bas-API:n och stöder automatisk sammanslagning av operationer för att optimera behandlingen. I API:n Windowing för fönsteroperationer har stöd för att spara och ÄterstÀlla tillstÄnd i backend lagts till.
Till schemalÀggaren för att starta handlare har stöd för att ta hÀnsyn till extra resurser vid beslut som inte begrÀnsar sig till
CPU och minne, sĂ„som nĂ€tverksparametrar och GPU. MĂ„nga förbĂ€ttringar har gjorts för att sĂ€kerstĂ€lla integrering med plattformen . Ă
tkomstkontrollsystemet har utvidgats, dÀr möjligheten att skapa administratörsgrupper och delegera tokens har lagts till. FörbÀttringar avseende SQL och metrik har lagts till. I administrationsgrÀnssnittet har nya kommandon lagts till för att felsöka klusterstatus.
AnvÀndningsomrÄden för Storm:
- Bearbetning av strömmar av ny data eller databasuppdateringar i realtid;
- Kontinuerlig berÀkning: Storm kan utföra kontinuerliga förfrÄgningar och bearbeta kontinuerliga strömmar, vilket gör att resultaten av behandlingen skickas till kunden i realtid.
- Distribuerad fjÀrrprocedur-anrop (RPC): Storm kan anvÀndas för att möjliggöra parallell exekvering av resurskrÀvande förfrÄgningar. En uppgift ("topologi") i Storm representerar en distribuerad funktion över noder som vÀntar pÄ att ta emot meddelanden som ska bearbetas. Efter att ha mottagit ett meddelande bearbetar funktionen det i ett lokalt sammanhang och returnerar resultatet. Ett exempel pÄ anvÀndning av distribuerad RPC kan vara parallell bearbetning av sökfrÄgor eller utförande av operationer pÄ stora mÀngder datamÀngder.
Egenskaper hos Storm:
- En enkel programmeringsmodell som avsevÀrt förenklar bearbetning av data i realtid;
- Stöd för alla programmeringssprÄk. Det finns moduler för Java, Ruby och Python, och anpassningar för andra sprÄk Àr inte svÄra tack vare ett mycket enkelt kommunikationsprotokoll, för att implementera stödet för vilket ungefÀr 100 rader kod behövs;
- FelsÀkerhet: för att köra en databehandlingsuppgift krÀvs att en jar-fil med koden skapas. Storm distribuerar sjÀlvmant denna jar-fil över klusternoder, kopplar de relaterade handlarna och organiserar övervakningen. NÀr uppgiften Àr slutförd kopplas koden automatiskt bort frÄn alla noder;
- Horisonell skalbarhet. Alla berÀkningar utförs parallellt, och vid ökad belastning rÀcker det att helt enkelt ansluta nya noder till klustret;
- Tillförlitlighet. Storm garanterar att varje mottaget meddelande kommer att bearbetas helt minst en gÄng. Meddelandet kommer endast att behandlas en gÄng om det inte uppstÄr nÄgra fel under genomförandet av alla handlare; om problem uppstÄr kommer misslyckade bearbetningsförsök att upprepas.
- Hastighet. Storms kod Àr skriven med hög prestanda i Ätanke och anvÀnder ett system för snabb asynkron meddelandeutbyte. .
KĂ€lla: opennet.ru
