Các khái niệm cơ bản trong Apache Kafka

Bài viết được sự cho phép của tác giả Nguyễn Hữu Khanh

Để làm việc với Apache Kafka, các bạn cần nắm một số khái niệm cơ bản về:

  • Producer
  • Consumer
  • Broker
  • Cluster
  • Topic
  • Topic Partitions
  • Partition Offset
  • Consumer Group
  Apache Kafka là gì?
  Cài đặt Apache Kafka sử dụng Docker Compose

Xem thêm tuyển dụng UI UX Designer hấp dẫn trên TopDev

Producer

Producer là những application produce data và gửi data tới Apache Kafka Server. Data này sẽ là những message có định dạng, được gửi dưới dạng mảng byte tới Apache Kafka server. Ví dụ như các bạn có một tập tin .txt chứa text bên trong, chúng ta có thể dùng Producer để đọc từng dòng trong tập tin này rồi gửi tới Apache Kafka server.

Consumer

Consumer là những application nhận message từ Apache Kafka server với message được gửi từ Publisher. Consumer cần phải subcribe vào một topic nào đó của Apache Kafka server để có thể nhận được tất cả các message được emit vào topic này.

Sau khi nhận được data, Consumer có thể thêm code để xử lý data theo nhu cầu của mình.

Broker

Broker là Apache Kafka server, là cầu nối giữa Message Publisher và Message Consumer, giúp chúng có thể trao đổi message với nhau.

Cluster

Cluster là một group các Brokers hay nói cách khác là group các Apache Kafka server.

Topic

Topic được định nghĩa trong Apache Kafka server, là nơi để Publisher send data và cũng là nơi để Consumer subscribe để nhận data từ Publisher. Sử dụng topic giúp Apache Kafka phân loại được message và Consumer cũng biết là mình lấy data từ đâu.

Topic Partitions

Apache Kafka là một distributed messaging system và chúng ta có thể setup Apache Kafka server với cluster. Trong trường hợp một topic nhận quá nhiều message tại cùng một thời điểm, chúng ta có thể chia topic này thành những partitions được share giữa các Apache Kafka server với nhau trong một cluster được handle các message này.

Một partition sẽ small và independent với các partitions khác. Số lượng partition cho mỗi topic thì tuỳ theo nhu cầu của ứng dụng mà chúng ta có thể quyết định.

Partition Offset

Trong một topic partition, các message sẽ được lưu trữ và đánh dấu theo từng offset. Mỗi khi một message mới vào topic, Apache Kafka server sẽ quyết định message này nằm trong partition nào, offset nào của partition đó. Giá trị của các offset sẽ tăng dần trong một partition và chỉ available cho một Apache Kafka server.

Để lấy được một message trong Apache Kafka server, chúng ta cần chỉ định rõ topic name, partition number và offset number.

Consumer Group

Consumer group là một group các Consumer consume message từ Apache Kafka server. Mỗi một Consumer Group sẽ share với nhau việc handle messsage.

Bài viết gốc được đăng tải tại huongdanjava.com

Có thể bạn quan tâm:

Xem thêm việc làm CNTT hấp dẫn trên TopDev