Apache Kafka

Apache Kafka-handledning

Apache Kafka-handledning
I den här lektionen kommer vi att se hur vi kan använda Apache Kafka och vad är dess användning. Vi kommer att grundligt titta på olika terminologier som är involverade i det och börja arbeta med dem också.

Apache Kafka

För en högnivådefinition, låt oss presentera en kort definition för Apache Kafka:

Apache Kafka är en distribuerad, feltolerant, horisontellt skalbar, åtagandelogg.

Det var några ord på hög nivå om Apache Kafka. Låt oss förstå begreppen i detalj här.

Ett ämne i Apache Kafka är precis som en kö där meddelanden lagras. Dessa meddelanden lagras under en konfigurerbar tid och meddelandet raderas inte förrän den här tiden uppnås, även om det har konsumerats av alla kända konsumenter.

Kafka är skalbart eftersom det är konsumenterna som faktiskt lagrar att det budskap som hämtades av dem senast som ett "offset" -värde. Låt oss titta på en figur för att förstå detta bättre:

Ämnespartion och konsumentkompensation i Apache Kafka

Komma igång med Apache Kafka

För att börja använda Apache Kafka måste den installeras på maskinen. För att göra detta, läs Installera Apache Kafka på Ubuntu.

Se till att du har en aktiv Kafka-installation om du vill prova exempel vi presenterar senare i lektionen.

Hur fungerar det?

Med Kafka, Producent applikationer publiceras meddelanden som anländer till en Kafka Nod och inte direkt till en konsument. Från denna Kafka-nod konsumeras meddelanden av Konsument applikationer.

Kafka Producent och konsument


Eftersom ett enda ämne kan få mycket data på en gång, för att hålla Kafka horisontellt skalbar, är varje ämne uppdelat i partitioner och varje partition kan leva på vilken nodmaskin som helst i ett kluster. Låt oss försöka presentera det:

Ämnespartitioner


Återigen registrerar Kafka Broker inte vilken konsument som har konsumerat hur många datapaket. Det är konsumenternas ansvar att hålla reda på de uppgifter de har konsumerat.

Persistence to Disk

Kafka behåller meddelandeposterna som de får från producenter på disken och håller dem inte i minnet. En fråga som kan uppstå är hur detta gör saker genomförbara och snabba? Det fanns flera orsaker bakom detta vilket gör det till ett optimalt sätt att hantera meddelandeposterna:

Datadistribution och replikering

Som vi studerade ovan att ett ämne är uppdelat i partitioner replikeras varje meddelandepost på flera noder i klustret för att upprätthålla ordningen och data för varje post om en av noderna dör.

Även om en partition replikeras på flera noder finns det fortfarande en partitionsledare nod genom vilken applikationer läser och skriver data om ämnet och ledaren replikerar data på andra noder, som kallas anhängare av den partitionen.

Om meddelandepostdata är mycket viktigt för en applikation kan garantin för att meddelandeposten är säker i en av noderna ökas genom att öka replikationsfaktor av klustret.

Vad är Zookeeper?

Zookeeper är en mycket feletolerant, distribuerad nyckel-värdebutik. Apache Kafka är starkt beroende av Zookeeper för att lagra klustermekanik som hjärtslag, distribuera uppdateringar / konfigurationer, etc.).

Det gör att Kafka-mäklarna kan prenumerera på sig själva och veta när någon förändring angående en partitionsledare och noddistribution har hänt.

Producent- och konsumentapplikationer kommunicerar direkt med Zookeeper applikation för att veta vilken nod som är partitionsledaren för ett ämne så att de kan utföra läsningar och skrivningar från partitionsledaren.

Strömning

En strömprocessor är en huvudkomponent i ett Kafka-kluster som tar en kontinuerlig ström av meddelandepostdata från inmatningsämnen, bearbetar dessa data och skapar en dataström till utmatningsämnen som kan vara vad som helst, från papperskorgen till en databas.

Det är helt möjligt att utföra enkel bearbetning direkt med producent / konsument-API: er, men för komplex bearbetning som att kombinera strömmar tillhandahåller Kafka ett integrerat Streams API-bibliotek men observera att detta API är avsett att användas inom vår egen kodbas och det gör det inte kör inte på en mäklare. Det fungerar som konsumentens API och hjälper oss att skala ut strömbehandlingsarbetet över flera applikationer.

När ska jag använda Apache Kafka?

Som vi studerade i ovanstående avsnitt kan Apache Kafka användas för att hantera ett stort antal meddelandeposter som kan tillhöra ett nästan oändligt antal ämnen i våra system.

Apache Kafka är en idealisk kandidat när det gäller att använda en tjänst som gör att vi kan följa händelsestyrd arkitektur i våra applikationer. Detta beror på dess kapacitet att uthålla data, feletolerant och mycket distribuerad arkitektur där kritiska applikationer kan lita på dess prestanda.

Kafkas skalbara och distribuerade arkitektur gör integrering med mikrotjänster väldigt enkel och gör det möjligt för en applikation att koppla av sig själv med mycket affärslogik.

Skapa ett nytt ämne

Vi kan skapa ett testämne testning på Apache Kafka-server med följande kommando:

Skapa ett ämne

sudo kafka-ämnen.sh --create --zookeeper localhost: 2181 --replikationsfaktor 1
--partitioner 1 - ämnetestning

Här är vad vi får tillbaka med det här kommandot:

Skapa nytt Kafka-ämne


Ett testämne skapas som vi kan bekräfta med nämnda kommando:

Bekräftelse av skapandet av ämnet Kafka

Skriva meddelanden om ett ämne

Som vi studerade tidigare är en av de API: er som finns i Apache Kafka Producent API. Vi kommer att använda detta API för att skapa ett nytt meddelande och publicera till det ämne vi just skapade:

Skrivande meddelande till ämnet

sudo kafka-konsol-producent.sh --broker-list localhost: 9092 - ämnetestning

Låt oss se utdata för det här kommandot:

Publicera meddelande till Kafka Topic


När vi väl har tryckt på tangenten ser vi ett nytt piltecken (>) vilket innebär att vi kan komma in i data nu:

Skriva ett meddelande


Skriv bara in något och tryck för att starta en ny rad. Jag skrev in 3 rader med texter:

Läser meddelanden från ämnet

Nu när vi har publicerat ett meddelande om Kafka-ämnet som vi skapade kommer det här meddelandet att finnas där under en konfigurerbar tid. Vi kan läsa det nu med hjälp av Konsument-API:

Läser meddelanden från ämnet

sudo kafka-konsol-konsument.sh --zookeeper localhost: 2181 --
ämnetestning - från början

Här är vad vi får tillbaka med det här kommandot:

Kommando att läsa Meddelande från Kafka Topic


Vi kommer att kunna se de meddelanden eller rader som vi har skrivit med Producer API enligt nedan:

Om vi ​​skriver ett nytt nytt meddelande med Producer API, kommer det också att visas direkt på konsumentens sida:

Publicera och konsumera samtidigt

Slutsats

I den här lektionen tittade vi på hur vi börjar använda Apache Kafka, som är en utmärkt meddelandemäklare och som också kan fungera som en speciell datapersistensenhet.

Mus Mellan musknappen fungerar inte i Windows 10
Mellan musknappen fungerar inte i Windows 10
De mittknappen hjälper dig att bläddra igenom långa webbsidor och skärmar med mycket data. Om det slutar, kommer du sluta använda tangentbordet för at...
Mus Hur man ändrar vänster och höger musknapp på Windows 10 PC
Hur man ändrar vänster och höger musknapp på Windows 10 PC
Det är en hel norm att alla datormusenheter är ergonomiskt utformade för högerhänta användare. Men det finns musenheter tillgängliga som är speciellt ...
Mus Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Emulera musklick genom att sväva med Clickless Mouse i Windows 10
Att använda en mus eller tangentbord i fel hållning av överdriven användning kan resultera i många hälsoproblem, inklusive stam, karpaltunnelsyndrom o...