
Apache Kafka là nền tảng stream processing mã nguồn mở, được thiết kế để xử lý dữ liệu real-time với dung lượng petabyte. Được phát triển ban đầu tại LinkedIn và trở thành dự án Apache Software Foundation, Kafka hiện là xương sống xử lý sự kiện cho hàng nghìn công ty trên thế giới.

Apache Kafka là gì?
Apache Kafka là một nền tảng phân phối sự kiện (event streaming platform) mã nguồn mở. Theo tài liệu chính thức, Kafka cung cấp ba chức năng cốt lõi: publishing, storing và processing dữ liệu stream. Khác với các hệ thống message queue truyền thống, Kafka lưu trữ sự kiện trong thời gian dài và cho phép nhiều consumer đọc cùng lúc mà không ảnh hưởng đến nhau.
Kafka được thiết kế với ba trụ cột: publish-subscribe (mỗi message được gửi đến tất cả consumer), storage (lưu trữ an toàn, replicated, reservation), và stream processing (xử lý dữ liệu real-time bằng Kafka Streams hoặc ksqlDB).
Kiến trúc cốt lõi
Broker và Cluster
Một Kafka cluster bao gồm nhiều broker (máy chủ) chạy song song. Mỗi broker chịu trách nhiệm lưu trữ và phục vụ dữ liệu cho một phần của cluster. Khi có broker mới tham gia, dữ liệu tự động cân bằng lại (rebalance). Quá trình này xảy ra tự động và không gây downtime.
Topic và Partition
Dữ liệu trong Kafka được tổ chức thành topics — các nhóm sự kiện có liên quan (ví dụ: “orders”, “clicks”, “logs”). Mỗi topic được chia thành nhiều partitions để phân tán dữ liệu và tăng khả năng song song. Mỗi partition là một log ordered, append-only — message mới luôn được thêm vào cuối.
Producer và Consumer
- Producer: Ứng dụng gửi sự kiện vào Kafka. Producer quyết định sự kiện thuộc partition nào (round-robin, theo key, hoặc custom partitioner)
- Consumer: Ứng dụng đọc sự kiện từ Kafka. Consumer theo dõi offset — vị trí đọc hiện tại — để biết đã đọc đến đâu
- Consumer Group: Nhóm consumer chia sẻ trách nhiệm đọc một topic. Mỗi partition chỉ được đọc bởi đúng một consumer trong group, đảm bảo xử lý song song và không trùng lặp

ZooKeeper và KRaft
Kafka truyền thống sử dụng ZooKeeper để quản lý cluster metadata, leader election cho partition, và cấu hình. Tuy nhiên, ZooKeeper added operational complexity, nên từ phiên bản Kafka 3.3, Kafka giới thiệu KRaft (Kafka Raft) — cơ chế đồng thuận tích hợp sẵn dựa trên Raft, loại bỏ hoàn toàn phụ thuộc vào ZooKeeper.
So sánh Kafka với RabbitMQ và Pulsar
Mỗi hệ thống message queue phù hợp với một scenario cụ thể. RabbitMQ là message broker truyền thống với mô hình push, phù hợp cho các message queue đơn giản. Theo Confluent, Kafka vượt trội hơn khi cần xử lý lượng lớn dữ liệu stream, lưu trữ dài hạn và replay.
| Tính năng | Apache Kafka | RabbitMQ | Apache Pulsar |
|---|---|---|---|
| Mô hình | Publish-subscribe log | Message queue | Pub-sub + queue |
| Lưu trữ | Dài hạn, configurable | Đến khi ACK | Dài hạn (tiered storage) |
| Replay | Có (từ offset bất kỳ) | Không | Có |
| Tổ chức | Topic + Partition | Exchange + Queue | Topic + Segment |
| Protocol | Kafka protocol | AMQP 0.9.1 | Kafka + Pulsar protocol |
| Kafka Streams | Library tích hợp | Không | Pulsar Functions |
Ecosystem Kafka
Kafka Connect
Kafka Connect là framework tích hợp dữ liệu giữa Kafka và các hệ thống bên ngoài (database, search engine, cloud storage). Với hàng trăm connector có sẵn, bạn có thể kết nối Kafka với PostgreSQL, Elasticsearch, S3, BigQuery mà không cần code thủ công.
Kafka Streams
Kafka Streams là library Java/Kotlin để xây dựng ứng dụng stream processing. Không cần cluster riêng — chạy như một ứng dụng Java thông thường, tích hợp trực tiếp với topic Kafka. Hỗ trợ aggregation, join, windowed processing và Exactly-Once Semantics.
Schema Registry
Schema Registry lưu trữ và kiểm tra schema (Avro, Protobuf, JSON Schema) cho message, đảm bảo compatibility giữa producer và consumer. Khi producer gửi message với schema mới, Schema Registry kiểm tra forward/backward compatibility trước khi cho phép.
Hiệu năng và quy mô
Kafka được thiết kế để xử lý dữ liệu ở quy mô lớn. LinkedIn — công ty phát triển Kafka — xử lý hàng nghìn tỷ message mỗi ngày. Các con số ấn tượng:
- Thông lượng: Hàng triệu message/giây trên mỗi cluster
- Lưu trữ:_petabyte-scale với retention tùy chỉnh
- Độ trễ: Milliseconds cho end-to-end processing
- Tolerance lỗi: Replication factor tùy chỉnh, tolerates mất node
Sử dụng Kafka ở các công ty lớn
Apache Kafka được sử dụng bởi hàng nghìn tổ chức trên toàn thế giới, theo danh sách official:
- LinkedIn: Nơi Kafka được phát triển, xử lý hàng nghìn tỷ message/ngày
- Netflix: Dùng Kafka cho event logging, monitoring và real-time data pipeline
- Uber: Stream processing cho ride matching, pricing và tracking
- Twitter: Dùng Kafka cho timeline, analytics và microservice communication
- Spotify: Event pipeline cho recommendation engine

Khi nào nên dùng Kafka?
Kafka phù hợp nhất trong các trường hợp:
- Event sourcing: Lưu lại toàn bộ lịch sử thay đổi để replay hoặc phân tích
- Real-time analytics: Xử lý và phân tích dữ liệu ngay khi nó sinh ra
- Log aggregation: Thu thập log từ hàng trăm service vào một trung tâm
- Microservice communication: Thay thế REST API cho giao tiếp service-to-service
- Data pipeline: Kết nối nhiều nguồn dữ liệu, xử lý và đưa vào data warehouse
Apache Kafka đã trở thành lựa chọn hàng đầu cho xử lý dữ liệu stream. Với ecosystem phong phú, cộng đồng lớn và khả năng mở rộng từ single-node development đến petabyte production, Kafka xứng đáng là nền tảng sự kiện cho bất kỳ tổ chức nào muốn xử lý dữ liệu real-time hiệu quả.
