Apache Kafka: Nền tảng stream processing sự kiện quy mô petabyte

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.

Sơ đồ kiến trúc Apache Kafka với broker, topic, partition

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
Giao diện Kafka UI hoặc terminal chạy lệnh kafka-topics.sh show

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
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
Dashboard Grafana monitoring Kafka cluster metrics

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ả.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Deno Deploy: Serverless TypeScript Global Được Hỗ Trợ Tính Năng Sẵn

Deno Deploy là gì? Deno Deploy là nền tảng serverless chạy JavaScript và TypeScript trên toàn cầu, phát triển bởi Deno Land. Đây là phiên bản hoàn toàn mới của…

Xem thêm

Hono Framework — Web Framework Siêu Nhẹ Chạy Trên Mọi Môi Trường

Hono Framework — Web Framework Siêu Nhẹ, Chạy Tren Moi Môi Trường Hono là web framework viết bằng TypeScript, thiết kế để chạy nhất quán trên mọi nền tảng: Cloudflare…

Xem thêm

Rust Async Trait: Mô Hình Bất Đồng Bộ Kiểu An Toàn Cho Lập Trình Hiện Đại

Rust Async Trait: Mô Hình Bất Động Bộ Kiểu An Toàn Rust async trait là một pattern phát triển trong hệ sinh thái Rust để định nghĩa các trait có…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất