téměř všechna technologická rozhodnutí musí splňovat dvě základní kritéria: musí vám umožnit splnit vaše obchodní cíle a musí dobře fungovat spolu se zbytkem vašeho technologického zásobníku. Pokud jde o výběr technologií datových vrstev pro sestavení vaší aplikační architektury, open source Apache Cassandra, Apache Kafka, Apache Spark a Elasticsearch stále rostou v popularitě.
nejsou však tou správnou volbou pro každý případ použití.
podívejme se hlouběji na každou z těchto technologií a na některé případy použití – které jsou – a nejsou-výhodnými aplikacemi těchto řešení s otevřeným zdrojovým kódem.
Apache Cassandra
původně vytvořený Facebook v roce 2007, Cassandra využívá Dynamo architekturu a Bigtable stylu datový model poskytovat úložiště dat NoSQL, který poskytuje vysokou dostupnost a vysokou škálovatelnost.
kdy byste měli používat Apache Cassandra
Cassandra je ideální volbou pro případy použití, které vyžadují nejvyšší úroveň vždy dostupné dostupnosti. Databáze je také zvláště vhodná pro obsluhu organizací, které očekávají masivní pracovní zátěž nebo které chtějí zajistit, aby jejich služby mohly pružně růst s rozšiřováním pracovní zátěže (a proto potřebují snadnou škálovatelnost, kterou Cassandra poskytuje). Cassandra nabízí spolehlivou redundanci dat a aktivní operace ve více datových centrech.
když byste neměli
Cassandra je náročnější na zdroje než alternativy, když je pověřena skladováním dat nebo čistým analytickým úložištěm (dokonce s využitím dostupných konektorů Spark a zásuvných modulů Tableau a Hadoop). Cassandra je také špatně vhodná pro analytiku v reálném čase, zejména ve formě ad-hoc nebo vlastních dotazů koncového uživatele, protože potřeba implementace kódu na straně aplikace může být spletitá. Cassandra navíc nesplňuje většinu požadavků na kyselinu.
Apache Kafka
nejprve vytvořený technickým týmem na LinkedIn, Apache Kafka poskytuje vysoce škálovatelnou a vysoce dostupnou streamovací platformu a sběrnici zpráv. Kafka funguje jako distribuovaný protokol, ve kterém jsou nově příchozí zprávy přidávány do čela fronty a čtenáři (spotřebitelé) je budou konzumovat na základě ofsetu.
když byste měli používat Apache Kafka
Apache Kafka je obecně chytrá volba pro případy použití, které zahrnují mikroservisy a architekturu orientovanou na služby. Kafka může také sloužit jako vysoce efektivní pracovní fronta, která je schopna koordinovat oddělené pracovní cesty, vyhrazuje výpočetní sílu nasloucháním a čekáním, až dorazí práce. Možnosti zpracování streamů platformy jsou užitečné pro detekci anomálií, roll-upů a agregací, stejně jako pro předávání metrik. Kafka je také vysoce schopná volba pro sourcing událostí, sladění dat napříč různými mikroservisy a poskytování externího protokolu odevzdání pro distribuované systémy. Mezi další vhodné případy použití patří agregace protokolů, maskování a filtrování dat, obohacení dat a detekce podvodů.
pokud byste neměli
i když by to mohlo být v některých případech lákavé, může být špatně doporučeno používat Kafku jako databázi nebo zdroj záznamu, alespoň bez velmi solidního pochopení omezení a vlastností Kafky pro tento případ použití. Skutečná databáze bude téměř vždy jednodušší a flexibilnější. Kafka je podobně nevhodnou volbou pro in-order zpracování napříč celým tématem. V každém případě použití, kdy cílem je rychle postoupit datové pakety do koncového zdroje, jako jsou audio a video v reálném čase nebo jiné ztrátové datové toky, by organizace měly místo Kafky používat účelová řešení.
Apache Spark
univerzální cluster computing framework vhodný pro použití případů zahrnujících velké objemy dat, Apache Spark rozděluje data a spouští výpočty na těchto segmentech, takže pracovníci provádějí veškerou možnou práci, dokud nevyžadují data od ostatních pracovníků. Tento design dává Spark obrovskou škálovatelnost a dostupnost, a zároveň je vysoce odolný proti ztrátě dat.
při použití Apache Spark
Spark se hodí k použití případů zahrnujících rozsáhlou analýzu, zejména případů, kdy data přicházejí prostřednictvím více zdrojů. Spark je výkonné řešení pro ETL nebo jakýkoli případ použití, který zahrnuje přesun dat mezi systémy, a to buď při použití k nepřetržitému naplnění datového skladu nebo datového jezera z transakčních datových úložišť, nebo v jednorázových scénářích, jako je migrace databáze nebo systému. Organizace, které budují potrubí strojového učení na vrcholu stávajících dat, pracují s streamováním s vysokou latencí nebo provádějí interaktivní, ad-hoc nebo průzkumnou analýzu, najdou jiskru silnou. Spark se také hodí k tomu, aby pomohl organizacím uspokojit jejich potřeby v oblasti dodržování předpisů tím, že nabízí maskování dat, filtrování dat a audit velkých datových souborů z hlediska dodržování předpisů.
pokud byste neměli
obecně, Spark nebude nejlepší volbou pro případy použití zahrnující zpracování v reálném čase nebo s nízkou latencí. (Apache Kafka nebo jiné technologie poskytují vynikající end-to-end latenci pro tyto potřeby, včetně zpracování proudu v reálném čase.) Při práci s malými nebo jednotlivými datovými soubory je Spark nejčastěji příliš nadměrnou možností. Také, pokud jde o datové sklady a datová jezera, je lepší použít technologii vyšší úrovně místo Apache Spark, i když takové produkty pro Spark existují.
Elasticsearch
Elasticsearch nabízí fulltextový vyhledávač, který nabízí širokou škálu funkcí pro vyhledávání a analýzu nestrukturovaných dat. Tato technologie nabízí škálovatelné lineární vyhledávání v téměř reálném čase, poskytuje robustní drop-in nahrazení vyhledávání, a významné analytické schopnosti.
pokud byste měli použít Elasticsearch
Elasticsearch je velmi vhodný pro použití případů vyžadujících fulltextové vyhledávání, geografické vyhledávání, škrábání a kombinování veřejných dat, protokolování a analýzu protokolů, vizualizace a malá data a metriky událostí.
pokud byste neměli
Elasticsearch by neměl být používán jako databáze nebo zdroj záznamu, s relačními daty nebo ke splnění požadavků kyseliny.
výběr doplňkových technologií
výběr nejlepší kombinace technologií pro vaši organizaci (ať už open source nebo jinak) samozřejmě znamená víc než jen hodnocení samotných řešení-tvůrci rozhodnutí musí také představit, jak organizace přijme a využije každé řešení jako součást svého technologického zásobníku. Apache Cassandra, Apache Kafka, Apache Spark a Elasticsearch nabízejí obzvláště doplňkovou sadu technologií, které mají smysl pro organizace využívat společně a které nabízejí osvobození od licenčních poplatků nebo uzamčení dodavatele díky své open source povaze. Spojením těchto technologií a realizací jejich shromážděných výhod mohou organizace dosáhnout svých cílů a umožnit vývoj aplikací, které jsou vysoce škálovatelné, dostupné, přenosné a odolné.
Ben Slater je Chief Product Officer ve společnosti Instaclustr, která poskytuje spravovanou servisní platformu open source technologií, jako jsou Apache Cassandra, Apache Spark, Elasticsearch a Apache Kafka.
související položky:
tady je to, co Doug řezání říká, že je Hadoop největší příspěvek
o deset let později, Apache Spark stále silný