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) và độ trễ thấp (low-latency).
Ba Khả Năng Chính của Kafka
- 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.
- 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) và 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.
- 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:
- Topic: Một "danh mục" hoặc tên được sử dụng để lọc tin nhắn.
- Producer: Ứng dụng xuất bản (gửi) tin nhắn vào các Topic.
- Consumer: Ứng dụng đăng ký và đọc tin nhắn từ các Topic.
- Broker: Các máy chủ tạo thành cụm Kafka, nơi lưu trữ dữ liệu.
- Partition: Topic được chia thành nhiều phần để đảm bảo tính sẵn sàng và mở rộng.