Când – și când nu – pentru a utiliza Open Source Apache Cassandra, Kafka, Spark și Elasticsearch

aproape toate deciziile tehnologice trebuie să îndeplinească două criterii esențiale: trebuie să vă permită să vă atingeți obiectivele de afaceri și trebuie să funcționeze bine alături de restul stivei dvs. de tehnologie. Când vine vorba de selectarea tehnologiilor de strat de date pentru a construi arhitectura aplicației, open source Apache Cassandra, Apache Kafka, Apache Spark și Elasticsearch continuă să crească în popularitate.

cu toate acestea, nu sunt alegerea potrivită pentru fiecare caz de utilizare.

să aruncăm o privire mai profundă asupra fiecăreia dintre aceste tehnologii și a unora dintre cazurile de utilizare care sunt – și nu sunt – aplicații avantajoase ale acestor soluții open source.

Apache Cassandra

creat inițial de Facebook în 2007, Cassandra utilizează o arhitectură Dynamo și un model de date în stil Bigtable pentru a oferi un magazin de date NoSQL care oferă disponibilitate ridicată și scalabilitate ridicată.

când ar trebui să utilizați Apache Cassandra

Cassandra este o alegere ideală pentru cazurile de utilizare care necesită cele mai înalte niveluri de disponibilitate permanentă. Baza de date este, de asemenea, deosebit de potrivită pentru deservirea organizațiilor care anticipează sarcini masive de lucru sau care doresc să se asigure că serviciile lor pot crește flexibil pe măsură ce volumul de lucru se extinde (și, prin urmare, au nevoie de scalabilitatea ușoară pe care o oferă Cassandra). Cassandra oferă redundanță fiabilă a datelor și operațiuni active active în mai multe centre de date.

când nu ar trebui

Cassandra consumă mai multe resurse decât alternativele atunci când este însărcinată cu depozitarea datelor sau stocarea analitică pură (chiar luând în considerare utilizarea conectorilor Spark disponibili și a pluginurilor Tableau și Hadoop). Cassandra este, de asemenea, slab potrivită pentru analizele în timp real, în special sub forma interogărilor ad-hoc sau personalizate ale utilizatorului final, deoarece necesitatea implementării codului pe partea aplicației poate deveni complicată. În plus, Cassandra nu îndeplinește majoritatea cerințelor acide.

Apache Kafka

creat pentru prima dată de echipa tehnică de la LinkedIn, Apache Kafka oferă o platformă de streaming și un autobuz de mesaje extrem de scalabil și foarte disponibil. Kafka funcționează ca un jurnal distribuit, în care mesajele nou sosite sunt adăugate la capul unei cozi, iar cititorii (consumatorii) le vor consuma pe baza unui offset.

când ar trebui să utilizați Apache Kafka

Apache Kafka este, în general, o alegere inteligentă pentru cazurile de utilizare care implică microservicii și arhitectură orientată spre servicii. Kafka poate servi, de asemenea, ca o coadă de lucru extrem de eficientă, capabilă să coordoneze căi de lucru separate, rezervând puterea de calcul ascultând și așteptând până la sosirea muncii. Capacitățile de procesare a fluxului platformei sunt utile pentru detectarea anomaliilor, roll-up-uri și agregări, precum și pentru trecerea valorilor. Kafka este, de asemenea, o opțiune extrem de capabilă pentru aprovizionarea evenimentelor, reconcilierea datelor pe diferite microservicii și furnizarea unui jurnal extern de comitere pentru sistemele distribuite. Cazurile suplimentare de utilizare adecvate includ agregarea jurnalelor, Mascarea și filtrarea datelor, îmbogățirea datelor și detectarea fraudelor.

când nu ar trebui

deși ar putea fi tentant în unele cazuri, poate fi prost recomandat să folosiți Kafka ca bază de date sau sursă de înregistrare, cel puțin fără o înțelegere foarte solidă a limitărilor și proprietăților Kafka pentru acest caz de utilizare. O bază de date adevărată va fi aproape întotdeauna mai simplă de operat și mai flexibilă. Kafka este o alegere la fel de inadecvată pentru procesarea în ordine pe un întreg subiect. În orice caz de utilizare în care obiectivul este de a avansa rapid pachetele de date către sursa finală, cum ar fi audio și video în timp real sau alte fluxuri de date cu pierderi, organizațiile ar trebui să utilizeze soluții construite special în loc de Kafka.

Apache Spark

un cadru de calcul cluster de uz general adecvat pentru a utiliza cazuri care implică volume mari de date, Apache Spark împarte datele și rulează calculul pe acele segmente, astfel încât lucrătorii să efectueze toate lucrările posibile până când necesită date de la alți lucrători. Acest design oferă scânteie scalabilitate extraordinară și disponibilitate, în timp ce, de asemenea, făcându-l extrem de rezistente împotriva pierderii de date.

când ar trebui să utilizați Apache Spark

Spark se pretează să utilizeze cazuri care implică analize la scară largă, în special cazurile în care datele ajung prin mai multe surse. Spark este o soluție puternică pentru ETL sau orice caz de utilizare care include mutarea datelor între sisteme, fie atunci când este utilizat pentru a popula continuu un depozit de date sau un lac de date din magazinele de date tranzacționale, fie în scenarii unice, cum ar fi migrațiile bazei de date sau ale sistemului. Organizațiile care construiesc conducte de învățare automată deasupra datelor existente, lucrează cu streaming de înaltă latență sau efectuează analize interactive, ad-hoc sau exploratorii vor găsi Spark o potrivire puternică. Spark se pretează, de asemenea, să ajute organizațiile să-și satisfacă nevoile de conformitate, oferind mascarea datelor, filtrarea datelor și auditarea seturilor mari de date dintr-o perspectivă de conformitate.

când nu ar trebui să

în general, Spark nu va fi cea mai bună alegere pentru cazurile de utilizare care implică procesare în timp real sau latență scăzută. (Apache Kafka sau alte tehnologii oferă o latență superioară end-to-end pentru aceste nevoi, inclusiv procesarea fluxului în timp real.) Când lucrați cu seturi de date mici sau unice, Spark este cel mai adesea o opțiune prea excesivă. De asemenea, când vine vorba de depozitarea datelor și lacurile de date, este mai bine să folosiți o tehnologie de nivel superior în locul Apache Spark, deși există astfel de produse pentru Spark.

Elasticsearch

Elasticsearch oferă un motor de căutare full-text, care oferă o gamă largă de funcționalități pentru a căuta și analiza date nestructurate. Tehnologia oferă o căutare liniară scalabilă în timp real, oferă o înlocuire robustă a căutării drop-in și capabilități semnificative de analiză.

când ar trebui să utilizați Elasticsearch

Elasticsearch este foarte potrivit pentru a utiliza cazuri care necesită căutare full-text, căutare geografică, răzuire și combinarea datelor publice, logare și analiză jurnal, vizualizări, și date de evenimente de volum mic și valori.

când nu ar trebui

Elasticsearch nu trebuie utilizat ca bază de date sau sursă de înregistrare, cu date relaționale sau pentru a îndeplini cerințele acide.

selectarea tehnologiilor complementare

alegerea celui mai bun mix de tehnologii pentru organizația dvs. (indiferent dacă este open source sau altfel) implică în mod evident mai mult decât simpla evaluare a soluțiilor în sine – factorii de decizie trebuie, de asemenea, să imagineze modul în care organizația va adopta și va utiliza fiecare soluție ca parte a stivei lor de tehnologii. Apache Cassandra, Apache Kafka, Apache Spark și Elasticsearch oferă un set deosebit de complementar de tehnologii care au sens ca organizațiile să le utilizeze împreună și care oferă libertate de taxe de licență sau blocare a furnizorilor datorită naturii lor open source. Prin colaborarea acestor tehnologii și realizarea avantajelor colectate, organizațiile își pot atinge obiectivele și pot permite dezvoltarea de aplicații extrem de scalabile, disponibile, portabile și rezistente.

Ben Slater este Chief Product Officer la Instaclustr, care oferă o platformă de servicii gestionate de tehnologii open source, cum ar fi Apache Cassandra, Apache Spark, Elasticsearch și Apache Kafka.

Articole înrudite:

Iată ce spune Doug Cutting este cea mai mare contribuție a lui Hadoop

un deceniu mai târziu, Apache Spark încă merge puternic

Lasă un răspuns

Adresa ta de email nu va fi publicată.