Tập tành tìm hiểu Kafka dân Newbie bạn ơi

Bài viết này dành cho những bạn newbie muốn tìm hiểu về Kafka – một công nghệ được sử dụng phổ biến trong các hệ thống micro service ngày nay.

Trong bài này tớ sẽ đề cập 2 phần chính:

  1. Cài đặt Kafka local.
  2. Một số command cơ bản của Kafka.

Những phần về kiến trúc Kafka và những vấn đề kĩ thuật chuyên sâu tớ sẽ đề cập ở những bài viết khác.

Các bước cài đặt kafka ở local.

Bước 1: Cài đặt Java.

Vì Apache Kafka cần Java để chạy nên nếu bạn chưa cài đặt Java thì có thể cài đặt theo hướng dẫn dưới đây.

  • Update các package.
$ sudo apt update
  • Cài đặt Java 8.
$ sudo apt install openjdk-8-jre-headless
  • Sau đó, để kiểm tra version đã cài đặt, dùng lệnh sau:
$ java -version

Bước 2: Tải Apache Kafka

$ wget http://www-us.apache.org/dist/kafka/2.4.0/kafka_2.13-2.4.0.tgz
  • Tiến hành giải nén và đặt Kafka ở đường dẫn
/usr/local/kafka

bằng lệnh sau:

$ tar xzf kafka_2.13-2.4.0.tgz
$ mv kafka_2.13-2.4.0 /usr/local/kafka

Note: Chú ý đường dẫn của thư mục bạn đang mở. :))

Sau bước này các file Kafka sẽ được chuyển đến thư mục kafka ở đường dẫn ~/usr/local/ :)) như hình bên dưới:

Bước 3: Tạo systemd unit file Zookeeper service.

File này sẽ giúp chúng ta dễ dàng quản lí các service hơn bằng việc sử dụng các lệnh systemctl để start/stop một service.

Dùng lệnh

$ vim /etc/systemd/system/zookeeper.service

để tạo một unit file cho Zookeeper với nội dung như sau:

[Unit]
Description=Apache Zookeeper server
Documentation=http://zookeeper.apache.org
Requires=network.target remote-fs.target
After=network.target remote-fs.target

[Service]
Type=simple
ExecStart=/usr/local/kafka/bin/zookeeper-server-start.sh /usr/local/kafka/config/zookeeper.properties
ExecStop=/usr/local/kafka/bin/zookeeper-server-stop.sh
Restart=on-abnormal

[Install]
WantedBy=multi-user.target

Ở mục service cần chú ý các đường dẫn đến các file .sh để start/stop zookeeper.

Tiếp tục tạo unit file cho Kafka với câu lệnh tương tự như trên như đổi tên service như sau: :)))

$ vim /etc/systemd/system/kafka.service

Copy & paste nội dụng bên dưới vào file vừa tạo.

[Unit]
Description=Apache Kafka Server
Documentation=http://kafka.apache.org/documentation.html
Requires=zookeeper.service

[Service]
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-amd64"
ExecStart=/usr/local/kafka/bin/kafka-server-start.sh /usr/local/kafka/config/server.properties
ExecStop=/usr/local/kafka/bin/kafka-server-stop.sh

[Install]
WantedBy=multi-user.target

Nhớ save file >.^ nhé! Ngoài ra nếu bạn muốn tìm hiểu về systemd unit file thì có thể tham khảo bài viết How to create systemd service unit in Linux

Sau khi hoàn thành những bước trên, bạn cần reload systemd daemon với lệnh sau:

$ systemctl daemon-reload

Bước 4: Start Kafka server

Để start các service vừa tạo bên trên dùng lệnh:

$ sudo systemctl start zookeeper

Lệnh này sẽ tạo một server single-node Zookeeper ở local.

Để check status của service dùng lệnh sau:

$ sudo systemctl status zookeeper

Làm tương tự với service Kafka.

$ sudo systemctl start kafka
$ sudo systemctl status kafka

Nếu kết quả trả về như hình bên dưới thì bạn đã start Kafka thành công.

Một số command phổ biến khi dùng Kafka.

Ở phần này mình sẽ trình bày một số command cơ bản hay được sử dụng trong Kafka.

1. Tạo một Topic kafka.

Để tạo một topic trong kafka, dùng lệnh sau:

Đầu tiên, di chuyển vào thư mục chứa Kafka.

$ cd /usr/local/kafka

Sau đó chạy file ./kafka-topics.sh ở thư mục /bin như sau:

$ bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic HelloWorld

Câu lệnh trên sẽ tạo một topic tên HelloWorld có một phân vùng (partition) và một bản sao (replica).

  • Partition: là số lượng broker mà bạn muốn dữ liệu được phân chia.
  • Replica: là lượng bản sao của data được tạo ra.

Để xem có bao nhiêu topic đã được tạo dùng lệnh sau:

$ bin/kafka-topics.sh --list --zookeeper localhost:2181

“localhost:2181” là ip và port mặc định của Zookeeper, bạn có thể thay đổi ở file config.

2. Gửi messages

Để gửi các message lên Kafka cluster ta dùng Kafka Producer. Bạn có thể dùng lệnh command-line client mà Kafka cung cấp để gửi data từ một file hoặc từ terminal lên Kafka cluster.

Mặc định thì Kafka sẽ gửi message theo line by line. Để gửi message ta cần chạy kafka producer bằng lệnh sau:

$ bin/kafka-console-producer.sh --broker-list localhost:9092 --topic hello1.

Và truyền đi các message như hình …

3. Consume message

Kafka cũng có command-line consumer để đọc dữ liệu từ Kafka cluster và hiển thị các message ra terminal như ví dụ ở hình bên dưới.

Ngoài ra còn có thể ghi các messages đã consume được vào file như sau:

Kafka

Đến đây mình đã giới thiệu xong những bước cơ bản để setup và nghịch với Kafka. Để hiểu rõ hơn về kiến trúc cũng như cách sử dụng bạn có thể tìm hiểu ở link này: https://kafka.apache.org/documentation/

Fivestar: 
Average: 5 (1 vote)