(13 giugno 2019)
Cosè Apache Kafka?
Apache Kafka è una piattaforma di messaggistica di sola aggiunta basata su pubblicazione-sottoscrizione distribuita originariamente sviluppato da LinkedIn e successivamente donato a Apache Foundation .

Casi duso
- Messaggistica
- Aggregazione log
- Elaborazione flusso
- Log commit
- Sourcing eventi ecc
Come funziona?
Kafka funziona nel modello pub-sub. Quindi ci sarà un consumatore / gruppo di consumatori e un editore.

Il produttore pubblicherà i dati su un argomento specifico e il consumatore iscritto allargomento consumerà i dati. Più produttori potrebbero pubblicare sullo stesso argomento, ma solo un consumatore alla volta è in grado di consumare i dati di un argomento.
Ora puoi chiedere se solo uno il consumatore può consumare da un argomento alla volta e se ci sono migliaia di eventi in arrivo come li ridimensioniamo?
Va bene. In tal caso, possiamo suddividere largomento in partizioni per ottenere la scalabilità.

Quando eseguiamo la partizione dellargomento, ogni messaggio nella partizione ha un offset\_id / message\_id. Nellimmagine di sinistra abbiamo realizzato 3 partizioni e ogni produttore invierà un evento a una partizione specifica. E il consumatore leggerà da una partizione specifica. Ora se abbiamo 300 eventi / sec da inviare, sarà diviso in 3, quindi ogni partizione avrà 100 messaggi / sec. In questo modo, possiamo ottenere il bilanciamento del carico. Quando eseguiamo la partizione, Kafka garantisce solo lordine dei messaggi a livello di partizione . Per ottenere lordine con il partizionamento dobbiamo utilizzare la chiave .

Se aumentiamo gli eventi, dobbiamo creare più partizioni e aggiungere più consumatori per scalare e ottenere il bilanciamento del carico .
Una volta ricevuto levento, dobbiamo eseguire il commit del log su Kafka, così Kafka capirà che levento è stato elaborato e Kafka non lo invierà più. Se nel bel mezzo dellelaborazione la nostra app si blocca, Kafka invierà nuovamente quellevento allelaborazione.
Fattore di replica:
Il fattore di replica è il modo in cui i dati in Kafka verranno replicati con diversi broker Kafka. Supponiamo di aver scelto il fattore di replica N = 3, i dati verranno replicati su altri 2 broker. Quindi Kafka continuerà a funzionare se il broker N-1 non funziona, perché cè almeno un broker attivo con i dati per mantenerlo funzionante.
Che cosè Apache Zookeeper?
Apache Zookeeper è un servizio centralizzato per sistemi distribuiti in un archivio chiave-valore gerarchico, che viene utilizzato per fornire un servizio di configurazione distribuito, sincronizzazione servizio e registro dei nomi per sistemi distribuiti di grandi dimensioni. Apache Kafka non funziona senza Zookeeper. Gestione del cluster Kafka, se un broker si attiva o si interrompe, se viene creato un nuovo argomento … questo tipo di dati viene sincronizzato con un broker Kafka diverso tramite Zookeeper.
Spinup Kafka>
docker-compose up
Consumatore (Golang)>
Producer (Kotlin)>
Risultato>
Waiting for messages...Topic : users.notification
Partition : 0
Offset : 1
Value : hello
Risorse:
1. github.com/confluentinc/confluent-kafka-go
2. compile group: "io.opentracing.contrib", name: "opentracing-kafka-client", version: "0.1.2"