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

Ghostty: Terminal GPU-rendered thay thế iTerm2 và Alacritty

Ghostty: Terminal GPU-rendered thay thế iTerm2 và Alacritty Ghostty là terminal emulator mới phát hành phiên bản 1.0 vào cuối 2024, được viết bằng Zig và sử dụng GPU rendering…

Xem thêm

Feather Robotics: Nền tảng robot mô-đun giá 30k USD cho developer

Feather Robotics, khởi nghiệp humanoid do cựu kỹ sư Tesla và founder trước của 1X thành lập, đang định vị mình là “Android of robotics” — cung cấp nền tảng…

Xem thêm

Tauri 2.0: Ứng Dụng Desktop Rust Chạy Trên WebView Hệ Thống

Tauri 2.0: Ứng dụng Desktop Rust chạy trên WebView hệ thống Tauri 2.0 là bản phát hành ổn định tháng 10/2024 của framework ứng dụng desktop đa nền tảng mã…

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