Apache Kafka

Nasadit Apache Kafka pomocí Docker Compose

Nasadit Apache Kafka pomocí Docker Compose
Návrhové vzory orientované na mikroslužby učinily naše aplikace škálovatelnějšími než kdy dříve. RESTful API servery, front-end a dokonce i databáze jsou nyní horizontálně škálovatelné. Horizontální škálování je akt přidání nových uzlů do vašeho aplikačního klastru pro podporu dalšího pracovního vytížení. Naopak to také umožňuje snížit spotřebu zdrojů při snížení pracovní zátěže, aby se ušetřily náklady. Horizontálně škálovatelné systémy musí být distribuovány. Tyto systémy, které dokážou přežít selhání více virtuálních počítačů, kontejnerů nebo síťových odkazů a stále zůstanou online a zdravé pro koncového uživatele.

Když mluvíme o distribuovaných systémech, jak je uvedeno výše, narazíme na problém analytiky a monitorování. Každý uzel generuje spoustu informací o svém zdraví (využití CPU, paměti atd.) A o stavu aplikace spolu s tím, co se uživatelé snaží dělat. Tyto údaje musí být zaznamenány v:

  1. Ve stejném pořadí, v jakém jsou vytvořeny,
  2. Odděleny z hlediska naléhavosti (analýza v reálném čase nebo dávky dat), a co je nejdůležitější,
  3. Mechanismus, s nímž jsou shromažďovány, musí být sám distribuovaný a škálovatelný, jinak nám zbývá jediný bod selhání. Něco, čemu se měl design distribuovaného systému vyhnout.

Proč používat Kafku?

Apache Kafka je považován za platformu distribuovaného streamování. V Kafkově žargonu, Producenti průběžně generovat data (proudy) a Spotřebitelé jsou odpovědní za jeho zpracování, ukládání a analýzu. Kafka Zprostředkovatelé zodpovídají za zajištění toho, že v distribuovaném scénáři mohou data dosáhnout od producentů ke spotřebitelům bez jakýchkoli nesrovnalostí. Sada makléřů Kafka a další software nazvaný zookeeper představují typické nasazení Kafky.

Tok dat od mnoha výrobců je třeba agregovat, rozdělit a odeslat více spotřebitelům, je zde spousta míchání. Vyhnout se nekonzistenci není snadný úkol. Proto potřebujeme Kafku.

Scénáře, kde lze použít Kafku, jsou velmi rozmanité. Cokoli od zařízení IOT až po klastr virtuálních počítačů až po vaše vlastní místní bare metal servery. Kdekoli, kde mnoho „věcí“ současně vyžaduje vaši pozornost .. .To není příliš vědecké, že? Architektura Kafka je vlastní králičí nora a zaslouží si nezávislé zacházení. Nejprve se podívejme na velmi povrchové nasazení softwaru.

Používání Docker Compose

Ať už se rozhodnete použít Kafku jakýmkoli nápaditým způsobem, jedna věc je jistá - nebudete ji používat jako jednu instanci. Tímto způsobem to není zamýšleno, ai když vaše distribuovaná aplikace prozatím potřebuje pouze jednu instanci (zprostředkovatele), nakonec poroste a musíte zajistit, aby Kafka mohla.

Docker-compose je dokonalým partnerem pro tento druh škálovatelnosti. Místo toho, abychom provozovali makléře Kafka na různých virtuálních počítačích, jsme to kontejnerizovali a využíváme Docker Compose k automatizaci nasazení a škálování. Kontejnery Docker jsou vysoce škálovatelné jak na jednotlivých hostitelích Dockeru, tak i napříč clusterem, pokud používáme Docker Swarm nebo Kubernetes. Má tedy smysl ho využít, aby byla Kafka škálovatelná.

Začněme s jednou instancí zprostředkovatele. Vytvořte adresář s názvem apache-kafka a uvnitř vytvořte docker-compose.yml.

$ mkdir apache-kafka
$ cd apache-kafka
$ vim docker-compose.yml

Následující obsah bude vložen do vašeho docker-compose.yml soubor:

verze: '3'
služby:
zookeeper:
obrázek: wurstmeister / zookeeper
 
kafka:
obrázek: wurstmeister / kafka
porty:
- „9092: 9092“
životní prostředí:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: zookeeper: 2181

Jakmile uložíte výše uvedený obsah do souboru pro psaní, spusťte ze stejného adresáře:

$ docker-compose up -d

Dobře, tak co jsme tady udělali?

Porozumění Docker-Compose.yml

Compose spustí dvě služby uvedené v souboru yml. Podívejme se na soubor trochu zblízka. První obrázek je zookeeper, který Kafka vyžaduje ke sledování různých brokerů, topologie sítě a synchronizaci dalších informací. Vzhledem k tomu, že služby zookeeper i kafka budou součástí stejné mostní sítě (to se vytvoří, když spustíme docker-compose up), nemusíme vystavovat žádné porty. Zprostředkovatel Kafka může mluvit se zookeeperem a to je vše, co komunikační zookeeper potřebuje.

Druhá služba je sama kafka a my právě provozujeme její jedinou instanci, to znamená jednoho brokera. V ideálním případě byste chtěli použít více makléřů, abyste využili distribuovanou architekturu Kafky. Služba naslouchá na portu 9092, který je mapován na stejné číslo portu na hostiteli Docker, a tak služba komunikuje s vnějším světem.

Druhá služba má také několik proměnných prostředí. Nejprve je KAFKA_ADVERTISED_HOST_NAME nastaven na localhost. Toto je adresa, na které Kafka běží, a kde ji mohou najít výrobci a spotřebitelé. Znovu by to mělo být nastaveno na localhost, ale spíše na IP adresu nebo název hostitele s tím, na které lze servery dosáhnout ve vaší síti. Druhým je název hostitele a číslo portu vaší služby zookeeper. Vzhledem k tomu, že jsme pojmenovali službu zookeeper ... no, zookeeper je to, co bude název hostitele, v rámci Docker Bridge Network, kterou jsme zmínili.

Spuštění toku jednoduchých zpráv

Aby mohla Kafka začít pracovat, musíme v ní vytvořit téma. Producentští klienti pak mohou publikovat datové proudy (zprávy) k uvedenému tématu a spotřebitelé mohou číst uvedený datový tok, pokud jsou přihlášeni k odběru konkrétního tématu.

K tomu musíme spustit interaktivní terminál s kontejnerem Kafka. Seznam kontejnerů a načtěte název kontejneru kafka. Například v tomto případě se náš kontejner jmenuje apache-kafka_kafka_1

$ docker ps

Díky názvu kontejneru kafka nyní můžeme spadnout dovnitř tohoto kontejneru.

$ docker exec -it apache-kafka_kafka_1 bash
bash-4.4 #

Otevřete dva různé terminály, abyste mohli jeden používat jako spotřebitel a druhý jako producent.

Strana výrobce

V jedné z výzev (v té, kterou jste zvolili jako producenta) zadejte následující příkazy:

## Chcete-li vytvořit nové téma s názvem test
bash-4.4 # kafka-topic.sh --create --zookeeper zookeeper: 2181 --replikační faktor 1
--oddíly 1 - topický test
 
## Chcete-li spustit producenta, který publikuje datový tok od standardního vstupu po kafku
bash-4.4 # výrobce kafka-console.sh --broker-list localhost: 9092 --topický test
>

Výrobce je nyní připraven převzít vstup z klávesnice a publikovat jej.

Spotřebitelská stránka

Přejděte na druhý terminál připojený k vašemu kontejneru kafka. Následující příkaz spustí spotřebitele, který se živí testovacím tématem:

$ kafka-konzole-spotřebitel.sh --bootstrap-server localhost: 9092 --topický test

Zpět na producenta

Nyní můžete do nové výzvy psát zprávy a pokaždé, když se vrátíte, nový řádek se vytiskne ve spotřebitelské výzvě. Například:

> Toto je zpráva.

Tato zpráva se přenáší na spotřebitele prostřednictvím služby Kafka a můžete ji vidět vytištěnou na výzvu spotřebitele.

Skutečná nastavení

Nyní máte hrubý obrázek o tom, jak nastavení Kafky funguje. Pro vlastní případ použití musíte nastavit název hostitele, který není localhost, potřebujete více takových makléřů, aby byli součástí vašeho kafka clusteru a nakonec musíte nastavit klienty spotřebitelů a producentů.

Zde je několik užitečných odkazů:

  1. Confluent's Python Client
  2. Úřední dokumentace
  3. Užitečný seznam ukázek

Doufám, že se při zkoumání Apache Kafky bavíte.

Jak změnit levé a pravé tlačítko myši na počítači se systémem Windows 10
Je úplnou normou, že všechna zařízení počítačových myší jsou ergonomicky navržena pro praváky. K dispozici jsou však myší zařízení, která jsou speciál...
Emulace kliknutí myší vznášením pomocí myši Clickless Mouse ve Windows 10
Používání myši nebo klávesnice ve špatném držení těla nadměrného používání může mít za následek mnoho zdravotních problémů, včetně napětí, syndromu ka...
Přidejte gesta myši do Windows 10 pomocí těchto bezplatných nástrojů
V posledních letech se počítače a operační systémy značně vyvinuly. Bývaly doby, kdy uživatelé museli procházet správci souborů pomocí příkazů. Stejně...