næsten al teknologi beslutningstagning skal opfylde to væsentlige kriterier: det skal gøre det muligt for dig at opfylde dine forretningsmål, og det skal fungere godt sammen med resten af din teknologi stak. Når det kommer til at vælge datalagsteknologier til at opbygge din applikationsarkitektur, fortsætter open source Apache Cassandra, Apache Kafka, Apache Spark og Elasticsearch med at stige i popularitet.
de er dog ikke det rigtige valg til enhver brugssag.
lad os tage et dybere kig på hver af disse teknologier og nogle af de brugssager, der er – og ikke er – fordelagtige anvendelser af disse open source-løsninger.
Apache Cassandra
oprindeligt oprettet af Facebook i 2007, Cassandra bruger en Dynamo-arkitektur og en Bigtable-stil datamodel til at levere en Noskl-datalager, der leverer høj tilgængelighed og høj skalerbarhed.
når du skal bruge Apache Cassandra
Cassandra er et ideelt valg til brugssager, der kræver de højeste niveauer af altid tilgængelig tilgængelighed. Databasen er også særlig velegnet til at betjene organisationer, der forventer massive arbejdsbelastninger, eller som ønsker at sikre, at deres tjenester kan vokse fleksibelt, når arbejdsbelastningen udvides (og dermed har brug for den lette skalerbarhed, som Cassandra giver). Cassandra tilbyder pålidelig dataredundans og aktiv-aktive operationer på tværs af flere datacentre.
når du ikke skal
Cassandra er mere ressourceintensiv end alternativer, når den har til opgave at datalagre eller ren analyselagring (endda factoring af brugen af tilgængelige Spark-stik og Tableau-og Hadoop-plugins). Cassandra er også dårligt egnet til realtidsanalyse, især i form af slutbruger ad hoc eller brugerdefinerede forespørgsler, fordi behovet for at implementere kode på applikationssiden kan blive indviklet. Derudover opfylder Cassandra ikke de fleste SYREKRAV.
Apache Kafka
først oprettet af det tekniske team på LinkedIn, Apache Kafka giver en meget skalerbar og meget tilgængelig streaming platform og besked bus. Kafka fungerer som en distribueret log, hvor nyligt ankomne meddelelser føjes til hovedet på en kø, og læsere (forbrugere) vil forbruge dem baseret på en forskydning.
når du skal bruge Apache Kafka
Apache Kafka er generelt et smart valg til brugssager, der involverer mikroservices og serviceorienteret arkitektur. Kafka kan også fungere som en yderst effektiv arbejdskø, der er i stand til at koordinere separate arbejdsstier, reservere computerkraft ved at lytte og vente, indtil arbejdet ankommer. Platformens strømbehandlingsfunktioner er nyttige til anomali-detektion, roll-ups og aggregeringer samt til at passere målinger igennem. Kafka er også en yderst kapabel mulighed for event sourcing, dataafstemning på tværs af forskellige mikroservices, og at give en ekstern commit log for distribuerede systemer. Yderligere passende brugssager inkluderer logaggregering, datamaskering og filtrering, datarigning og afsløring af svig.
når du ikke skal
selvom det i nogle tilfælde kan være fristende, kan det være dårligt at bruge Kafka som en database eller kilde til registrering, i det mindste uden en meget solid forståelse af Kafka-begrænsninger og egenskaber til denne brugssag. En ægte database vil næsten altid være enklere at betjene og mere fleksibel. Kafka er et tilsvarende upassende valg til behandling i rækkefølge på tværs af et helt emne. I ethvert brugstilfælde, hvor målet er at fremme datapakker til slutkilden hurtigt, såsom lyd og video i realtid eller andre tabte datastrømme, bør organisationer bruge specialbyggede løsninger i stedet for Kafka.
Apache Spark
en generel klyngeberegningsramme, der er velegnet til at bruge sager, der involverer store datamængder, Apache Spark deler data og kører beregning på disse segmenter, således at arbejdere udfører alt muligt arbejde, indtil de har brug for data fra andre arbejdere. Dette design giver Spark enorm skalerbarhed og tilgængelighed, samtidig med at det gør det meget modstandsdygtigt mod datatab.
når du skal bruge Apache Spark
Spark egner sig til at bruge sager, der involverer analyse i stor skala, især tilfælde, hvor data ankommer via flere kilder. Spark er en kraftfuld løsning til ETL eller enhver brugssag, der inkluderer flytning af data mellem systemer, enten når de bruges til kontinuerligt at udfylde et datalager eller datasø fra transaktionsdatabutikker eller i engangsscenarier som database-eller systemmigrationer. Organisationer, der bygger maskinlæringsrørledninger oven på eksisterende data, arbejder med streaming med høj latenstid, eller udfører interaktiv, ad hoc, eller sonderende analyse vil finde gnist en stærk pasform. Spark egner sig også til at hjælpe organisationer med at imødekomme deres overholdelsesbehov ved at tilbyde datamaskering, datafiltrering og revision af store datasæt fra et overholdelsesperspektiv.
når du ikke skal
generelt vil Spark ikke være det bedste valg til brugssager, der involverer behandling i realtid eller lav latenstid. (Apache Kafka eller andre teknologier leverer overlegen end-to-end latenstid til disse behov, herunder realtidsstrømbehandling.) Når du arbejder med små eller enkelte datasæt, er Spark oftest for overdreven en mulighed. Også når det kommer til datalagring og datasøer, er det bedre at bruge en teknologi på højere niveau i stedet for Apache Spark, selvom sådanne produkter til Spark eksisterer.
Elasticsearch
Elasticsearch tilbyder en fuldtekstsøgemaskine, der har en bred vifte af funktioner til at søge og analysere ustrukturerede data. Teknologien tilbyder skalerbar lineær søgning tæt på realtid, giver robust drop-in-søgning udskiftning og betydelige analysefunktioner.
når du skal bruge Elasticsearch
Elasticsearch er stærkt velegnet til at bruge sager, der kræver fuldtekstsøgning, geografisk søgning, skrabning og kombination af offentlige data, logning og loganalyse, visualiseringer og små volumen hændelsesdata og metrics.
når du ikke skal
Elasticsearch bør ikke bruges som en database eller kilde-of-record, med relationelle data, eller for at opfylde syre krav.
valg af komplementære teknologier
valg af den bedste blanding af teknologier til din organisation (hvad enten det er open source eller på anden måde) indebærer naturligvis mere end blot at evaluere løsningerne selv – beslutningstagere skal også forestille sig, hvordan organisationen vil vedtage og udnytte hver løsning som en del af deres teknologistak. Apache Cassandra, Apache Kafka, Apache Spark og Elasticsearch tilbyder et særligt komplementært sæt teknologier, der giver mening for organisationer at udnytte sammen, og som tilbyder frihed fra licensgebyrer eller leverandørlåsning takket være deres open source-natur. Ved at slå disse teknologier sammen og realisere deres indsamlede fordele kan organisationer nå deres mål og muliggøre udvikling af applikationer, der er meget skalerbare, tilgængelige, bærbare og elastiske.
Ben Slater er Chief Product Officer hos Instaclustr, som leverer en administreret serviceplatform med open source-teknologier som Apache Cassandra, Apache Spark, Elasticsearch og Apache Kafka.
relaterede emner:
her er hvad Doug Cutting siger er Hadoops største bidrag
et årti senere, Apache Spark Still Going Strong