Bu məqalədə isə artıq Kafka-nın həm ənənəvi üsulla həm də Docker-də qurulub çalışdırılmasına eyni zamanda keçən məqalədə qeyd etdiyimiz sazlamaları haradan edə biləcəyimizə baxacağıq.

Qeyd: Bu məqalədə Kafka-nın qurulma üsulları öz lokal mühitimizdə bu texnologiyanı öyrənmək və ya development apararkən istifadə etməyimiz üçündür. Əgər siz real proyektlərinizdə Kafka-dan istifadə edəcəksinizsə, öz infrastrukturunuza uyğun quraşdırma işləri aparmanızı tövsiyyə edirəm.

Başlayaq ənənəvi üsuldan — yəni Unix əsaslı və Windows əməliyyat sistemlərində qurulmasından. İlk öncə Kafka-nın son versiyasını rəsmi ünvanından aşağıdakı linkə daxil olaraq yükləyək.

https://downloads.apache.org/kafka/

Qeyd: Kafka JVM əsaslı Java və Scala dillərində yazıldığı üçün sistemdə Java yükülü olmalıdır. Sisteminizdə Java-nın yükülü olub olmamasını terminaldan java -version yazaraq yoxlaya bilərsiniz.

Yüklədiyimiz arxiv faylını əməliyyat sistemində uyğun qovluğa çıxarış edirik. Həmin qovluğa daxil olaq və əsas alt qovluqlara nəzər salaq:

  • bin — Əməliyyatlar icra etməyimiz üçün lazım olar skriptlər
  • config — Sazlama faylları
  • lib — Kafka-nın çalıması üçün lazım olan JAR-lar
  • log — Logların saxlanıldığı qovluq

Bizə məlumdur ki, Kafka-nın istifadə edilməsi üçün ZooKeeper-ə də ehtiyyac vardır. ZooKeeper-i ayrıca da yükləmək mümkündür lakin biz hazırda Kafka-nın içində olanı istifadə edəcik. ZooKeeper-i başlatmaq üçün əməliyyat sisteminə uyğun skripti çalışdırmalı və ZooKeeper-in sazlamalarının saxlanıldığı zookeeper.properties faylını parameter kimi verməliyik:

Linux və ya MAC:

bin/zookeeper-server-start.sh config/zookeeper.properties

Windows:

bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

Əmr uğurla icra edildisə ZooKeeper çalımağa başlayacaq. Buna log-lardan əmin ola bilərik:

Göründüyü kimi artıq ZooKeeper 2181 portunda çalışır. Bu portu istəyə bağlı olaraq zookeeper.properties faylından dəyişə bilərik.

İndi isə Kafka-nı çalışdıraq. Bunun üçün uyğun skripti və Kafka serverinin yəni Broker-in sazlamalarının yerləşdiyi server.properties faylını parameter kimi veririk.

Linux və ya MAC:

bin/kafka-server-start.sh config/server.properties

Windows:

bin\windows\kafka-server-start.bat .\config\server.properties

Kafka serverimiz 9092 portunda uğurla çalışmağa başladı.

Keçən məqalədə qeyd etdiyimiz broker-lə bağlı sazlamaları məhz server.properties -də edirik:

  • broker.id — Broker-in id-sini qeyd etməyimiz üçündür. Susmaya görə 0-dır.
  • num.partitions — Topic yaradılarkən neçə partition olmasını təyin edir. Susmaya görə 1 dir.
  • log.retention.hours — Verilənlərin nə qədər müddət saxlanılacağını saatla təyin edir. Qeyd etdiyimiz kimi bu susmaya görə 1 həftədir yəni 168 saat.
  • log.segment.bytes — Əgər verilənlərin saxlanılmasını vaxta görə yox yaddaşa görə baytlarla təyin etmək istəsək o zaman bu sazlamanı istifadə edirik. Susmaya görə komment-dədir (bağlıdır) və 1073741824 bayt yəni 1 GB-dır.

Artıq Kafka uğurla çalışdığına görə nümunə bir topic yaradaq:

Linux və ya MAC:

bin/kafka-topics.sh — create — bootstrap-server localhost:9092 — topic kafka-bloq-seriyasi

Windows:

bin\windows\kafka-topics.bat — create — bootstrap-server localhost:9092 — topic kafka-bloq-seriyasi

Və cavab olaraq aşağıdakı mesajı alacıq:

Created topic kafka-bloq-seriyasi.

Topic-lərin siyahısına aşağıdakı əmrlə baxa bilərik:

Linux və ya MAC:

bin/kafka-topics.sh — list — bootstrap-server localhost:9092

Windows:

bin\windows\kafka-topics.bat — list — bootstrap-server localhost:9092

İndi isə yaratdığmız topic-ə terminaldan mesaj göndərək və digər terminaldan oxuyaq. Bunun üçün Kafka bizə terminal producer və consumer verir. İlk öncə producer terminalımızı açaq:

Linux və ya MAC:

bin/kafka-console-producer.sh — bootstrap-server localhost:9092 — topic kafka-bloq-seriyasi

Windows:

bin\windows\kafka-console-producer.bat — bootstrap-server localhost:9092 — topic kafka-bloq-seriyasi

Artıq mesajlarımızı göndərə bilərik. Hər sətr yeni mesaj qəbul olunur:

Mesajlarımızı consumer-lə oxumaq üçün digər terminaldan aşağıdakı əmr-i icra edirik:

Linux və ya MAC:

bin/kafka-console-consumer.sh — bootstrap-server localhost:9092 — topic kafka-bloq-seriyasi — from-beginning

Windows:

bin\windows\kafka-console-consumer.bat — bootstrap-server localhost:9092 — topic kafka-bloq-seriyasi — from-beginning

Kafka-nın ənənəvi üsulla qurulmasına və çalışdırılmasına baxdıq. İndi isə keçək Docker-də qurulmasına. Docker-də Kafka və ZooKeeper -in container-lərini yaratmaq üçün bir neçə alternativ repository-lər var. Lakin mən Confluent-in image-lərindən istifadə edib ikisini birlikdə docker-compose ilə 1 stack yaradaraq istifadə etməyi göstərəcəm.

docker-compose.yml faylı:

version: '3.3'services:  zookeeper:    image: confluentinc/cp-zookeeper    container_name: zookeeper    environment:      ZOOKEEPER_CLIENT_PORT: 2181      ZOOKEEPER_TICK_TIME: 2000  kafka:    image: confluentinc/cp-kafka    container_name: kafka    depends_on:      - zookeeper    ports:      - 9092:9092    environment:      KAFKA_BROKER_ID: 0      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.0.110:9092      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

Stack-i yaratmaq üçün docker-compose.yml qovluğa daxil olub aşağıdakı əmri icra edirik:

docker-compose up -d –build

Və artıq -- bootstrap-server parametrinə docker-compose.yml faylında qeyd etdiyimiz ip adresini yazaraq Docker-dəki Kafka-nı istifadə edə bilərik. Mən öz “home server” -imin ip-si olan 192.168.0.110 -u qeyd etdim siz öz istədiyiniz ip-ni verə bilərsiniz.

Kafka seriyasının 4-cü məqaləsinin sonuna gəldik. Bu məqalədə Kafka-nın necə local mühitimizdə ənənəvi üsulla və Docker-də qurulub istifadə olunmasına nəzər saldıq. Seriyanın növbəti məqaləsində nümunə proyekt üzərindən Kafka-nın Core Java və Spring Boot- ilə tətbiq edilməsinə baxacağıq. İzləmədə qalın, uğurlar!

--

--