Börjar med Apache Kafka

Publicerad

(13 juni 2019)

Vad är Apache Kafka?

Apache Kafka är en distribuerad publicerings-prenumerationsbaserad append-only meddelandeplattform ursprungligen utvecklad av LinkedIn och senare donerat till Apache Foundation .

(* Bilden är för försköning)

Använd fall

  • Meddelanden
  • Loggaggregering
  • Strömbearbetning
  • Åtagandelogg
  • Händelsekällning etc

Hur fungerar det?

Kafka fungerar i pub-sub-modellen. Så det kommer att finnas en konsument- / konsumentgrupp och utgivare.

Producenten kommer att publicera data till ett visst ämne och konsumenten som prenumererar på ämnet kommer att konsumera data. Flera producenter kan publicera till samma ämne men bara en konsument kan konsumera data från ett ämne åt gången.

Nu kan du fråga om bara en konsumenten får konsumera från ett ämne i taget och om det kommer tusentals händelser hur skalar vi dem?

Okej. I så fall kan vi dela upp ämnet i partitioner för att uppnå skalbarhet.

När vi partitionerar ämnet har varje meddelande i partitionen en offset\_id / message\_id. På bilden till vänster har vi gjort tre partitioner och varje producent skickar ett evenemang till en specifik partition. Och konsumenten kommer att läsa från en viss partition. Om vi ​​nu skickar 300 händelser / sekunder kommer det att delas in i 3, så varje partition kommer att ha 100 meddelanden / sek. På detta sätt kan vi uppnå belastningsbalansering. När vi gör partition säkerställer Kafka bara meddelandeföljd för partitionsnivå . För att uppnå ordning med partitionering måste vi använda tangenten .

Om vi ​​får fler evenemang måste vi göra fler partitioner och lägga till fler konsumenter för att skala och uppnå Load-Balancing .

När vi har mottagit händelsen måste vi logga in i Kafka, så Kafka förstår att händelsen har bearbetats och Kafka skickar inte den igen. Om mitt app krossas skickar Kafka den händelsen igen för att bearbeta.

Replikeringsfaktor:

Replikeringsfaktor är hur data i Kafka kommer att replikeras med olika Kafka-mäklare. Låt oss säga att vi har valt replikationsfaktor N = 3, data kommer att replikeras till ytterligare 2 mäklare. Så Kafka kommer fortfarande att fungera om N-1-mäklaren går ner, för det finns åtminstone en mäklare vid liv med data för att hålla den fungerande.

Vad är Apache Zookeeper?

Apache Zookeeper är en central tjänst för distribuerade system till ett hierarkiskt nyckel-värdelager, som används för att tillhandahålla en distribuerad konfigurationstjänst, synkronisering service och namnregister för stora distribuerade system. Apache Kafka fungerar inte utan Zookeeper. Kafka-klusterhantering, om en mäklare kommer upp eller går ner, om ett nytt ämne skapas … den här typen av data synkroniseras med olika Kafka-mäklare genom Zookeeper.

Spinup Kafka>

docker-compose up

Konsument (Golang)>

Producent (Kotlin)>

Resultat>

Waiting for messages...Topic : users.notification
Partition : 0
Offset : 1
Value : hello

Resurser:

1. github.com/confluentinc/confluent-kafka-go
2. compile group: "io.opentracing.contrib", name: "opentracing-kafka-client", version: "0.1.2"

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *