logo

Kafka emner

I det foregående afsnit har vi taget en kort introduktion om Apache Kafka, beskedsystem samt streamingprocessen. Her vil vi diskutere de grundlæggende begreber og Kafkas rolle.

Emner

Generelt refererer et emne til en bestemt overskrift eller et navn givet til nogle specifikke indbyrdes relaterede ideer. I Kafka refererer ordet emne til en kategori eller et almindeligt navn, der bruges til at gemme og udgive en bestemt strøm af data. Grundlæggende ligner emner i Kafka tabeller i databasen, men indeholder ikke alle begrænsninger. I Kafka kan vi oprette et antal emner, som vi vil. Det identificeres ved sit navn, hvilket afhænger af brugerens valg. En producent udgiver data til emnerne, og en forbruger læser disse data fra emnet ved at abonnere på det.

Skillevægge

Et emne er opdelt i flere dele, der er kendt som opdelingerne af emnet. Disse partitioner er adskilt i en rækkefølge. Dataindholdet bliver gemt i partitionerne i emnet. Derfor, mens vi opretter et emne, skal vi angive antallet af partitioner (tallet er vilkårligt og kan ændres senere). Hver besked bliver gemt i partitioner med et inkrementelt id kendt som dets offset-værdi. Rækkefølgen af offset værdi er kun garanteret inden for partitionen og ikke på tværs af partitionen. Forskydningerne for en partition er uendelige.

Bemærk:De data, der først er skrevet til en partition, kan aldrig ændres. Den er uforanderlig. Offsetværdien forbliver altid i en trinvis tilstand, den går aldrig tilbage til et tomt rum. Desuden opbevares dataene kun i en partition i en begrænset periode.

Lad os se et eksempel for at forstå et emne med dets partitioner.

Kafka emner

Antag, at et emne indeholder tre partitioner 0,1 og 2. Hver partition har forskellige offsetnumre. Dataene er fordelt mellem hver offset i hver partition, hvor data i offset 1 af partition 0 ikke har nogen relation til dataene i offset 1 af partition1. Men data i offset 1 af partition 0 er indbyrdes forbundne med dataene indeholdt i offset 2 af partition0.

Mæglere

Her kommer rollen som Apache Kafka.

En Kafka-klynge består af en eller flere servere, der er kendt som mæglere eller Kafka-mæglere. En mægler er en container, der rummer flere emner med deres flere partitioner. Mæglerne i klyngen identificeres kun med et heltals-id. Kafka-mæglere er også kendt som Bootstrap mæglere fordi forbindelse med en mægler betyder forbindelse med hele klyngen. Selvom en mægler ikke indeholder hele data, men hver mægler i klyngen kender til alle andre mæglere, partitioner såvel som emner.

Kafka emner

Sådan ser en mægler ud på figuren, der indeholder et emne med n antal partitioner.

Eksempel: Mæglere og emner

Antag, en Kafka-klynge bestående af tre mæglere, nemlig mægler 1, mægler 2 og mægler 3.

Kafka emner

Hver mægler har et emne, nemlig Topic-x med tre partitioner 0,1 og 2. Husk, at alle partitioner ikke kun tilhører én mægler, det er altid fordelt på hver mægler (afhængig af mængden). Broker 1 og Broker 2 indeholder en anden topic-y med to partitioner 0 og 1. Broker 3 har således ingen data fra Topic-y. Det konkluderes også, at der aldrig eksisterer noget forhold mellem mæglernummeret og partitionsnummeret.