Gli sviluppatori descrivono Kafka come un "sistema di messaggistica distribuito, tollerante ai guasti, ad alto rendimento, pub-sub. " Kafka è noto come servizio di log di commit partizionato, distribuito e replicato. Fornisce anche la funzionalità di un sistema di messaggistica, ma con un design unico. D'altra parte, MongoDB è noto come "Il database per idee giganti. " MongoDB è in grado di archiviare dati in documenti simili a JSON la cui struttura può variare, offrendo uno schema dinamico e flessibile. MongoDB è progettato per un'elevata disponibilità e scalabilità, con replica e partizionamento automatico integrati.
MongoDB è classificato in "Database", mentre Kafka appartiene alla categoria "Message Queue" dello stack tecnologico. Gli sviluppatori considerano Kafka "High-throughput", "Distributed" e "Scalable" come fattori chiave; mentre "Archiviazione orientata ai documenti", "Nessun SQL" e "Facilità d'uso" sono considerati i motivi principali per cui MongoDB è favorito.
Streaming di dati in Kafka
Nell'ecosistema dei dati di oggi, non esiste un unico sistema in grado di fornire tutte le prospettive necessarie per fornire una visione reale dei dati. Per ottenere una migliore visualizzazione delle informazioni dettagliate dai dati è necessario mescolare un enorme volume di informazioni da più origini dati. Pertanto, siamo ansiosi di ottenere risposte immediatamente; se il tempo impiegato per analizzare le informazioni dettagliate sui dati supera i 10 s di millisecondi, il valore viene perso o è irrilevante. Applicazioni come il rilevamento delle frodi, il trading ad alta frequenza e i motori di raccomandazione non possono permettersi di aspettare. Questa operazione è nota anche come analisi dell'afflusso di dati prima che venga aggiornato come database di registrazione con tolleranza zero per la perdita di dati e la sfida diventa ancora più scoraggiante.
Kafka ti aiuta a ingerire e spostare rapidamente grandi quantità di dati in modo affidabile da più origini dati e quindi a reindirizzarli ai sistemi che ne hanno bisogno filtrandoli, aggregandoli e analizzandoli lungo il percorso. Kafka ha caratteristiche di velocità effettiva, affidabilità e replica più elevate, un metodo scalabile per comunicare flussi di dati di eventi da uno o più produttori Kafka a uno o più consumatori Kafka. Esempi di eventi includono:
- Dati sull'inquinamento atmosferico acquisiti su base periodica
- Un consumatore che aggiunge un articolo al carrello in un negozio online
- Un Tweet pubblicato con un hashtag specifico
I flussi di eventi Kafka vengono acquisiti e organizzati in argomenti predefiniti. Il produttore Kafka sceglie un argomento a cui inviare un determinato evento e i consumatori selezionano da quali argomenti estraggono gli eventi. Ad esempio, un'applicazione finanziaria del mercato azionario potrebbe estrarre le negoziazioni di azioni da un argomento e le informazioni finanziarie dell'azienda da un altro per cercare opportunità di trading.
La collaborazione tra MongoDB e Kafka costituisce oggi il cuore di molte moderne architetture di dati. Kafka è progettato per flussi illimitati di dati che scrivono in sequenza eventi nei log di commit, consentendo lo spostamento dei dati in tempo reale tra MongoDB e Kafka tramite l'uso di Kafka Connect.
Il connettore MongoDB ufficiale per Kafka è stato sviluppato ed è supportato da MongoDB Inc. ingegneri. È inoltre verificato da Confluent (che ha aperto la strada alla piattaforma di streaming di eventi pronta per l'azienda), conforme alle linee guida stabilite dal programma Integrazioni verificate di Confluent. Il connettore consente a MongoDB di essere configurato sia come sink che come sorgente per Kafka. Crea facilmente pipeline di dati robuste e reattive che trasmettono in streaming eventi tra applicazioni e servizi in tempo reale.
Connettore sink MongoDB
Il MongoDB Sink ci consente di scrivere eventi da Kafka nella nostra istanza MongoDB. Il connettore Sink converte il valore di Kafka Connect SinkRecords in un documento MongoDB e eseguirà un inserimento o un upsert a seconda della configurazione scelta. Si aspettava il database creato in anticipo, le raccolte MongoDB mirate create se non esistono.
Connettore sorgente Kafka MongoDB
Il connettore di origine Kafka MongoDB sposta i dati da una replica MongoDB impostata in un cluster Kafka. Il connettore configura e utilizza i documenti dell'evento del flusso di modifiche e li pubblica in un argomento. I flussi di modifiche, una funzionalità introdotta in MongoDB 3.6, generano documenti di eventi che contengono modifiche ai dati archiviati in MongoDB in tempo reale e forniscono garanzie di durabilità, sicurezza e idempotenza. È possibile configurare flussi di modifiche per osservare le modifiche a livello di raccolta, database o distribuzione. Utilizza le seguenti impostazioni per creare flussi di modifiche e personalizzare l'output da salvare nel cluster Kafka. Pubblicherà gli eventi di dati modificati in un argomento Kafka costituito dal database e dal nome della raccolta da cui ha avuto origine la modifica.
Casi d'uso MongoDB e Kafka
Siti di eCommerce
Caso d'uso di un sito Web di eCommerce in cui i dati di inventario vengono archiviati in MongoDB. Quando l'inventario di magazzino del prodotto scende al di sotto di una certa soglia, l'azienda desidera effettuare un ordine automatico per aumentare lo stock. Il processo di ordinazione viene eseguito da altri sistemi al di fuori di MongoDB e l'utilizzo di Kafka come piattaforma per tali sistemi basati su eventi è un ottimo esempio della potenza di MongoDB e Kafka se usati insieme.
Tracciamento dell'attività del sito web
Le attività del sito, come le pagine visitate o gli annunci visualizzati, vengono acquisiti negli argomenti Kafka, un argomento per tipo di dati. Tali argomenti possono quindi essere utilizzati da molteplici funzioni come monitoraggio, analisi in tempo reale o archiviazione per l'analisi offline. Approfondimenti dai dati archiviati in un database operativo come MongoDB, dove possono essere analizzati insieme a dati provenienti da altre fonti.
Internet delle cose (IoT)
Le applicazioni IoT devono far fronte a un numero enorme di eventi generati da una moltitudine di dispositivi. Kafka svolge un ruolo fondamentale nel fornire la raccolta fan-in e in tempo reale di tutti i dati dei sensori. Un caso d'uso comune è la telematica, in cui la diagnostica dai sensori di un veicolo deve essere ricevuta ed elaborata alla base. Una volta acquisiti negli argomenti Kafka, i dati possono essere elaborati in diversi modi, inclusa l'elaborazione di flussi o le architetture Lambda. È anche probabile che venga archiviato in un database operativo come MongoDB, dove può essere combinato con altri dati archiviati per eseguire analisi in tempo reale e supportare applicazioni operative come l'attivazione di offerte personalizzate.
Conclusione
MongoDB è noto come database non relazionale, pubblicato con una licenza gratuita e open source, MongoDB è principalmente un database orientato ai documenti, destinato all'uso con dati semi-strutturati come documenti di testo. È il database moderno più popolare creato per la gestione di enormi e enormi volumi di dati eterogenei.
Kafka è una piattaforma di streaming distribuita molto popolare che migliaia di aziende come New Relic, Uber e Square utilizzano per creare sistemi di streaming in tempo reale scalabili, ad alta velocità e affidabili.
Insieme, MongoDB e Kafka svolgono un ruolo fondamentale nel nostro ecosistema di dati e in molte moderne architetture di dati.