Kiedy – a kiedy nie-używać Open Source Apache Cassandra, Kafka, Spark i Elasticsearch

niemal wszystkie procesy decyzyjne w zakresie technologii muszą spełniać dwa zasadnicze kryteria: muszą umożliwiać realizację celów biznesowych i działać dobrze wraz z resztą stosu technologii. Jeśli chodzi o wybór technologii warstwy danych do budowy architektury aplikacji, open source Apache Cassandra, Apache Kafka, Apache Spark i Elasticsearch nadal zyskują na popularności.

jednak nie są one właściwym wyborem dla każdego przypadku użycia.

przyjrzyjmy się bliżej każdej z tych technologii i niektórym przypadkom użycia, które są – i nie są – korzystnymi zastosowaniami tych rozwiązań open source.

Apache Cassandra

pierwotnie stworzony przez Facebooka w 2007 roku, Cassandra wykorzystuje architekturę Dynamo i model danych w stylu Bigtable, aby zapewnić NoSQL data store, który zapewnia wysoką dostępność i wysoką skalowalność.

kiedy powinieneś używać Apache Cassandra

Cassandra jest idealnym wyborem dla przypadków użycia, które wymagają najwyższego poziomu stałej dostępności. Baza danych jest również szczególnie przydatna do obsługi organizacji, które przewidują duże obciążenia lub chcą mieć pewność, że ich usługi mogą rosnąć elastycznie w miarę rozszerzania się obciążeń (a tym samym potrzebują łatwej skalowalności, którą zapewnia Cassandra). Cassandra oferuje niezawodną redundancję danych i aktywne operacje w wielu centrach danych.

kiedy nie powinieneś

Cassandra jest bardziej zasobochłonna niż alternatywy, gdy ma za zadanie hurtownię danych lub czystą pamięć analityczną (nawet biorąc pod uwagę wykorzystanie dostępnych złączy Spark i wtyczek Tableau i Hadoop). Cassandra jest również słabo przystosowana do analizy w czasie rzeczywistym, zwłaszcza w postaci zapytań ad-hoc lub niestandardowych, ponieważ potrzeba implementacji kodu po stronie aplikacji może stać się zawiła. Dodatkowo Cassandra nie spełnia większości wymagań kwasowych.

Apache Kafka

po raz pierwszy stworzony przez zespół techniczny w LinkedIn, Apache Kafka zapewnia wysoce skalowalną i wysoce dostępną platformę strumieniową i magistralę wiadomości. Kafka działa jako rozproszony dziennik, w którym nowo przychodzące wiadomości są dodawane do głowy kolejki, a czytelnicy (konsumenci) będą je konsumować na podstawie offsetu.

kiedy powinieneś używać Apache Kafka

Apache Kafka jest ogólnie dobrym wyborem dla przypadków użycia, które obejmują mikroserwisy i architekturę zorientowaną na usługi. Kafka może również służyć jako wysoce efektywna Kolejka robocza, która jest w stanie koordynować oddzielne ścieżki pracy, rezerwując moc obliczeniową poprzez nasłuchiwanie i czekanie na nadejście pracy. Funkcje przetwarzania strumieniowego platformy są przydatne do wykrywania anomalii, roll-upów i agregacji, a także do przekazywania metryk. Kafka jest również wysoce wydajną opcją do pozyskiwania zdarzeń, uzgadniania danych w różnych mikroserwisach i dostarczania zewnętrznego dziennika zatwierdzeń dla systemów rozproszonych. Dodatkowe odpowiednie przypadki użycia obejmują agregację dzienników, maskowanie i filtrowanie danych, wzbogacanie danych i wykrywanie oszustw.

kiedy nie powinieneś

chociaż w niektórych przypadkach może to być kuszące, może być nierozsądne używanie Kafki jako bazy danych lub źródła rekordu, przynajmniej bez bardzo solidnego zrozumienia ograniczeń i właściwości Kafki dla tego przypadku użycia. Prawdziwa baza danych będzie prawie zawsze prostsza w obsłudze i bardziej elastyczna. Kafka jest podobnie nieodpowiednim wyborem do przetwarzania w zamówieniu w całym temacie. W każdym przypadku użycia, w którym celem jest szybkie przesyłanie pakietów danych do źródła końcowego, takich jak audio i wideo w czasie rzeczywistym lub inne stratne strumienie danych, organizacje powinny używać specjalnie opracowanych rozwiązań zamiast Kafki.

Apache Spark

uniwersalna struktura obliczeniowa klastra dostosowana do zastosowań obejmujących duże ilości danych, Apache Spark dzieli Dane i uruchamia obliczenia na tych segmentach, tak aby pracownicy wykonywali wszystkie możliwe prace, dopóki nie będą wymagać danych od innych pracowników. Ta konstrukcja zapewnia Spark ogromną skalowalność i dostępność, a jednocześnie zapewnia wysoką odporność na utratę danych.

kiedy należy używać Apache Spark

Spark nadaje się do zastosowań obejmujących analizy na dużą skalę, zwłaszcza w przypadkach, w których dane docierają z wielu źródeł. Spark to potężne rozwiązanie dla ETL lub dowolnego przypadku użycia, które obejmuje przenoszenie danych między systemami, zarówno w przypadku ciągłego wypełniania hurtowni danych lub jeziora danych z transakcyjnych magazynów danych, jak i w jednorazowych scenariuszach, takich jak migracje baz danych lub systemów. Organizacje budujące rurociągi uczenia maszynowego na istniejących danych, pracujące ze strumieniowaniem o dużym opóźnieniu lub wykonujące interaktywne, ad-hoc lub eksploracyjne analizy znajdą Spark w dobrym położeniu. Spark pomaga również organizacjom zaspokajać ich potrzeby w zakresie zgodności, oferując maskowanie danych, filtrowanie danych i audyt dużych zbiorów danych z punktu widzenia zgodności.

kiedy nie powinieneś

Ogólnie Rzecz Biorąc, Spark nie będzie najlepszym wyborem dla przypadków użycia obejmujących przetwarzanie w czasie rzeczywistym lub przetwarzanie z niskim opóźnieniem. (Apache Kafka lub inne technologie zapewniają doskonałe opóźnienia end-to-end dla tych potrzeb, w tym przetwarzanie strumienia w czasie rzeczywistym.) Podczas pracy z małymi lub pojedynczymi zestawami danych, Spark jest najczęściej zbyt nadmierną opcją. Ponadto, jeśli chodzi o hurtownię danych i jeziora danych, lepiej jest użyć technologii wyższego poziomu zamiast Apache Spark, chociaż takie produkty dla Spark istnieją.

Elasticsearch

Elasticsearch oferuje pełnotekstową wyszukiwarkę, która oferuje szeroki zakres funkcji do wyszukiwania i analizowania nieustrukturyzowanych danych. Technologia ta oferuje skalowalne wyszukiwanie liniowe w czasie zbliżonym do rzeczywistego, zapewnia niezawodną wymianę wyszukiwania zrzutowego i znaczące możliwości analityczne.

kiedy należy używać Elasticsearch

Elasticsearch jest szczególnie odpowiedni do zastosowań wymagających wyszukiwania pełnotekstowego, wyszukiwania geograficznego, skrobania i łączenia danych publicznych, rejestrowania i analizy logów, wizualizacji oraz danych zdarzeń o małej objętości i wskaźników.

kiedy nie powinieneś

Elasticsearch nie powinien być używany jako baza danych lub źródło rekordu, z danymi relacyjnymi lub w celu spełnienia wymagań ACID.

wybór technologii uzupełniających

wybór najlepszego połączenia technologii dla Twojej organizacji (czy to open source, czy nie) oczywiście wiąże się z czymś więcej niż tylko oceną samych rozwiązań – decydenci muszą również wyobrazić sobie, w jaki sposób organizacja przyjmie i wykorzysta każde rozwiązanie jako część stosu technologii. Apache Cassandra, Apache Kafka, Apache Spark i Elasticsearch oferują szczególnie komplementarny zestaw technologii, które mają sens dla organizacji do wykorzystania razem, i które oferują wolność od opłat licencyjnych lub vendor lock-in Dzięki swojej naturze open source. Łącząc te technologie i realizując zebrane korzyści, organizacje mogą osiągnąć swoje cele i umożliwić rozwój aplikacji, które są wysoce skalowalne, dostępne, przenośne i odporne.

Ben Slater jest dyrektorem ds. produktu w Instaclustr, który zapewnia zarządzaną platformę usługową technologii open source, takich jak Apache Cassandra, Apache Spark, Elasticsearch i Apache Kafka.

powiązane pozycje:

oto, co mówi Doug Cutting, to największy wkład Hadoopa

dekadę później Apache Spark nadal jest silny

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.