Page cover

Kafka Theory

Lý thuyết về Kafka


🚀 Lộ trình học Apache Kafka từ cơ bản đến Senior

Kafka là một nền tảng messaging mạnh mẽ, thường được sử dụng trong các hệ thống event-driven, streaming data, và microservices. Để thành thạo Kafka ở mức Senior, bạn cần hiểu sâu về kiến trúc, cách tối ưu, bảo mật, và triển khai trong môi trường thực tế.

Dưới đây là lộ trình học Kafka giúp bạn đi từ cơ bản đến chuyên sâu.


🎯 1. Hiểu Tổng Quan Về Kafka

Mục tiêu: Nắm vững khái niệm cốt lõi và hiểu Kafka phù hợp với hệ thống nào.

Tìm hiểu Kafka là gì?

  • Kafka là Message Broker theo mô hình Pub/Sub (Event-Driven).

  • So sánh Kafka với RabbitMQ, ActiveMQ.

  • Tại sao Kafka được sử dụng cho stream processing?

Các thành phần chính trong Kafka

  • Producer: Gửi message vào Kafka.

  • Broker: Các server lưu trữ dữ liệu Kafka.

  • Topic: Chủ đề chứa message.

  • Partition: Chia nhỏ topic để scale.

  • Consumer: Đọc dữ liệu từ Kafka.

  • Consumer Group: Nhóm các consumer để scale processing.

  • ZooKeeper: Quản lý metadata, leader election (Kafka mới dùng KRaft thay thế ZooKeeper).

Cài đặt Kafka trên local

  • Cài Kafka và ZooKeeper bằng Docker hoặc cài native.

  • Khởi động Kafka và tạo topic.

  • Dùng kafka-console-producerkafka-console-consumer để gửi/nhận message.


🎯 2. Hiểu Kiến Trúc Kafka Chi Tiết

Mục tiêu: Hiểu rõ Kafka hoạt động như thế nào bên trong.

Cơ chế lưu trữ dữ liệu trong Kafka

  • Kafka lưu trữ dữ liệu trên disk như thế nào?

  • Log Segments, Offset, Compaction, Retention Policy.

Cơ chế Partitioning & Replication

  • Leader – Follower: Cách Kafka đảm bảo HA (High Availability).

  • Cơ chế ISR (In-Sync Replicas)ACK (Acknowledgment) của Producer.

  • Tuning partition cho hiệu suất cao.

Cơ chế Pull vs. Push

  • Kafka sử dụng mô hình Pull-based thay vì Push-based như RabbitMQ.

Cơ chế Consumer Group & Load Balancing

  • Làm sao để scale consumer?

  • Consumer Group đảm bảo fault tolerance như thế nào?

Kafka vs. Traditional Messaging Queues

  • So sánh với RabbitMQ, ActiveMQ về performance, scalability, durability.


🎯 3. Producer & Consumer APIs

Mục tiêu: Biết cách lập trình với Kafka bằng Java

Viết Kafka Producer (Java Spring Boot)

  • Gửi message với KafkaTemplate.

  • Sử dụng Keyed Messages để kiểm soát Partitioning.

  • Cấu hình Producer (acks, retries, batch size, linger.ms, compression).

Viết Kafka Consumer (Java Spring Boot)

  • Consume message từ Kafka bằng @KafkaListener.

  • Cấu hình Consumer Offsets (earliest, latest, none).

  • Xử lý Dead Letter Queue (DLQ) khi có lỗi.

  • Manual vs. Auto Commit Offset.

Kafka Streams API

  • Dùng Kafka Streams để xử lý real-time data streaming.

  • So sánh Kafka Streams vs. Apache Flink vs. Spark Streaming.

Schema Validation với Avro / Protobuf

  • Dùng Confluent Schema Registry để validate schema.

  • Avro vs. JSON: Khi nào nên dùng Avro?


🎯 4. Quản lý Kafka trong môi trường thực tế

Mục tiêu: Hiểu cách deploy và scale Kafka trong production.

Triển khai Kafka Cluster trên Docker / Kubernetes

  • Cấu hình Kafka Cluster với Multiple Brokers.

  • Dùng KRaft Mode thay vì ZooKeeper.

  • Triển khai Kafka trên Kubernetes với Strimzi Operator.

Monitoring Kafka với Prometheus + Grafana

  • Quan trọng: Giám sát Lag, Throughput, Consumer Offsets.

  • Thiết lập Alert khi Kafka bị lỗi hoặc mất dữ liệu.

Tối ưu hiệu suất Kafka (Performance Tuning)

  • Cấu hình batch.size, linger.ms, compression.type để tối ưu Producer.

  • Điều chỉnh fetch.min.bytes, max.poll.records để tối ưu Consumer.

  • Giảm latency bằng cách tối ưu partitioning strategy.

Bảo mật Kafka (Security)

  • SSL/TLS Encryption giữa các client và broker.

  • SASL Authentication với Kerberos, OAuth2.

  • ACL Authorization: Hạn chế quyền truy cập vào topic.

High Availability & Disaster Recovery

  • Cross-Cluster Replication với MirrorMaker 2.

  • Tích hợp với Kafka Connect để gửi dữ liệu sang ElasticSearch, MongoDB, MySQL.


🎯 5. Kafka trong hệ thống Microservices

Mục tiêu: Áp dụng Kafka trong kiến trúc microservices.

Event-Driven Architecture với Kafka

  • So sánh Kafka vs. RabbitMQ trong Microservices.

  • SAGA Pattern với Kafka (Choreography vs. Orchestration).

  • CQRS + Event Sourcing với Kafka.

Tích hợp Kafka với Spring Cloud Stream

  • Dùng @StreamListener, @EnableBinding.

  • Cấu hình Kafka Binder.

Outbox Pattern để đảm bảo Transactional Messaging

  • Xử lý dual writes problem giữa database và Kafka.

  • Kết hợp với Debezium + Change Data Capture (CDC).

Replay Events & Time Travel

  • Dùng Kafka Compact Topics để lưu trạng thái hệ thống.

  • Reprocess lại event khi có lỗi.


🎯 6. Chứng chỉ & Dự Án Kafka Thực Tế

Mục tiêu: Ứng dụng Kafka trong các case study thực tế.

Chứng chỉ Kafka (optional)

  • Confluent Certified Developer for Apache Kafka (CCDAK)

  • Confluent Certified Administrator for Apache Kafka (CCAAK)

Dự án thực tế (Production Ready)

  • Xây dựng hệ thống Notification Service với Kafka.

  • Realtime Analytics System với Kafka + Flink.

  • Đồng bộ dữ liệu giữa MySQL ↔ Kafka ↔ Elasticsearch.

  • Xây dựng Event-Driven Microservices với Kafka + Spring Boot.

🏆 Tổng kết

Level
Kỹ năng cần học

Beginner

Cài đặt Kafka, hiểu Pub/Sub, Producer, Consumer

Intermediate

Quản lý Kafka Cluster, Streams API, Schema Registry

Advanced

Security, Performance Tuning, Kafka in Microservices

Senior

Kafka at Scale, Event-Driven Architecture, Production Deployment

💡 Gợi ý: Nếu bạn đang làm microservices với Spring Boot, hãy tập trung vào Kafka Streams, Spring Cloud Stream, và Outbox Pattern để xử lý transactional messaging.

🚀 Chúc bạn thành công trên con đường trở thành Kafka Senior!

Last updated