Apache Kafka

« Back to Glossary Index

Apache Kafka là một nền tảng xử lý dữ liệu luồng (event streaming platform) phân tán mã nguồn mở, được phát triển bởi Apache Software Foundation. Ban đầu nó được tạo ra bởi LinkedIn và sau đó được phát hành mã nguồn mở vào năm 2011.

Kafka được thiết kế để xử lý lượng lớn dữ liệu sự kiện (event data) theo thời gian thực (real-time) với thông lượng cao (high-throughput)độ trễ thấp (low-latency).

Ba Khả Năng Chính của Kafka

  1. Xuất bản (Publish) và Đăng ký (Subscribe): Cho phép các ứng dụng (gọi là Producer) gửi các luồng bản ghi (stream of records) và các ứng dụng khác (gọi là Consumer) nhận các luồng bản ghi đó, tương tự như một hệ thống hàng đợi tin nhắn (message queue) nhưng có khả năng mở rộng cao hơn.
  2. Lưu trữ (Store): Lưu trữ các luồng bản ghi một cách chịu lỗi cao (fault-tolerant)bền vững (durable) trên các cụm máy chủ (cluster). Dữ liệu được lưu trữ theo thứ tự và có thể được truy cập lại nhiều lần.
  3. Xử lý (Process): Xử lý các luồng bản ghi trong thời gian thực khi chúng xảy ra hoặc sau đó.

Kiến Trúc và Các Thành Phần Chính

Kafka hoạt động như một hệ thống phân tán, bao gồm các thành phần cốt lõi sau:

Thành PhầnVai trò
TopicTên kênh hoặc danh mục để tổ chức các luồng bản ghi. Producer gửi dữ liệu vào một Topic, và Consumer đọc dữ liệu từ đó.
PartitionMỗi Topic được chia thành một hoặc nhiều Partition. Partition là đơn vị lưu trữ cơ bản, nơi dữ liệu (bản ghi) được ghi tuần tự và cố định (immutable log). Điều này cho phép Kafka mở rộng và xử lý song song. Mỗi bản ghi trong Partition có một Offset duy nhất.
ProducerCác ứng dụng hoặc hệ thống gửi (xuất bản) dữ liệu sự kiện (events/messages) vào các Topic của Kafka.
ConsumerCác ứng dụng hoặc hệ thống đọc (đăng ký) dữ liệu sự kiện từ các Topic của Kafka. Consumer sử dụng Group ID để cùng nhau đọc các Partition khác nhau của một Topic một cách cân bằng.
Broker (Kafka Server)Là một máy chủ trong cụm Kafka (Kafka Cluster). Broker chứa các Partition của các Topic và xử lý các yêu cầu từ Producer và Consumer.
Kafka ClusterTập hợp các Broker hoạt động cùng nhau để cung cấp khả năng chịu lỗi và mở rộng.
ZooKeeper / KRaftDùng để quản lý các siêu dữ liệu (metadata) của cụm Kafka (như thông tin về Broker, Topic, Partition). Từ phiên bản 2.8.0, Kafka đã có thể sử dụng giao thức KRaft (Kafka Raft Metadata quorum) để tự quản lý metadata mà không cần ZooKeeper.

Ứng Dụng Phổ Biến

Kafka được sử dụng rộng rãi trong nhiều lĩnh vực cho các mục đích:

  • Xây dựng Data Pipeline thời gian thực: Vận chuyển dữ liệu đáng tin cậy giữa các hệ thống hoặc ứng dụng.
  • Xử lý luồng (Stream Processing): Xây dựng các ứng dụng để biến đổi hoặc phản ứng với luồng dữ liệu theo thời gian thực (ví dụ: phát hiện gian lận, phân tích hoạt động người dùng).
  • Theo dõi hoạt động trang web: Ghi lại các sự kiện như lượt xem trang, lượt nhấp chuột, tìm kiếm.
  • Tổng hợp Log (Log Aggregation): Thu thập các tệp nhật ký (log files) từ nhiều máy chủ và hệ thống thành một luồng dữ liệu tập trung.
  • Hệ thống nhắn tin (Message Broker): Thay thế cho các hệ thống Message Queue truyền thống khi cần độ trễ thấp và khả năng mở rộng cao.
« Back to Glossary Index
Scroll to Top