Kafka topics

Chia sẻ qua:

Overview

Kafka topic là gì?

Kafka topic được sử dụng để lưu trữ và tổ chức các bản tin. Thường thì trong một topic sẽ gồm các bản tin liên quan tới nhau và được định danh bằng tên của topic.

Ví dụ: Trong hình ảnh dưới gồm 3 topics khác nhau:

  • Logs: Gồm các bản tin logs
  • Events: Gồm các bản tin thông tin về sự kiện
  • Transactions: Gồm thông tin về giao dịch

Kafka topic

Trong topic các bản tin có thể ở bất kỳ định dạng nào, và chuỗi tất cả các bản tin được gọi là "data stream".

Trong kafka các bản tin không thể query như Database mà Producer sẽ đẩy các bản tin lên và Consumer sẽ nhận các bản tin và xử lý.

Chú ý: Nếu bạn không cấu hình thì mặc định các bản tin trong topic sẽ được lưu trữ 7 ngày gần nhất. Những bản tin cũ hơn có thể sẽ bị xóa và bạn có thể thay đổi cấu hình về thời gian, dung lượng lưu trữ.

Kafka partitions là gì?

Kafka topic có thể được chia ra thành các partition. Một topic bất kỳ có thể có một hoặc nhiều partitions.

Kafka partitions

Các partitions được tạo ra khi khởi tạo topic và được đánh thứ tự từ 0 -> N-1 trong đó N là số lượng partition. Các bản tin khi đẩy lên sẽ được ghi vào cuối của mỗi partiton như trong hình trên.

Kafka Offsets là gì?

Như trong hình ảnh trong kafka partitions, chúng ta có thể thấy offset là một số và bắt đầu từ 0 và tăng dần mỗi khi có bản tin mới được ghi vào partition.

Mỗi bản tin trong partition sẽ có offset của mình và offset chỉ có ý nghĩa trong partion đó. Offset 3 trong partititon 1 sẽ khác offset 3 trong partition 2.

Nếu topic có nhiều hơn môt partition thì kafka chỉ đảm bảo thứ tự của bản tin trong cùng một partition. Điều đó có nghĩa, offset 3 chắc chắn là bản tin sau của offset 1 trong cùng partition 1 nhưng điều đó không đúng khi so sánh giữa offset3-partition1 và offset1-partition2.

Tuy bản tin sẽ được xóa như đã nói bên trên, nhưng offset sẽ không được sử dụng lại mà sẽ tăng mãi.