Tổng hợp 42 câu hỏi phỏng vấn Kafka kèm đáp án chi tiết, song ngữ Việt–Anh — sắp xếp từ cơ bản đến nâng cao. Ôn luyện miễn phí, tự động lưu tiến độ.
Kafka là distributed event streaming platform cho phép xử lý dữ liệu real-time với throughput cao, latency thấp và khả năng replay message — lý do chính khiến nó phổ biến trong hệ thống phân tán. Apache Kafka được LinkedIn phát triển và open-source năm…
Kafka cluster gồm nhiều Broker lưu Topic, mỗi Topic chia thành Partition để song song hoá, và Consumer Group để scale đọc. Broker là một server Kafka chạy độc lập; một Kafka cluster thường có nhiều broker để đảm bảo high availability. Topic là kênh…
Producer gửi message đến một topic và Kafka tự động phân phối message vào các partition (theo key hash, round-robin, hoặc custom partitioner). Cấu hình quan trọng của producer: acks (0=fire-and-forget, 1=leader ack, all=tất cả ISR ack), retries, batch.size và linger.ms để tối ưu throughput.…
Offset là số thứ tự của message trong một partition, bắt đầu từ 0. Kafka lưu offset của consumer vào một internal topic tên consumeroffsets. Auto commit (enable.auto.commit=true) sẽ tự động commit offset theo chu kỳ auto.commit.interval.ms (mặc định 5000ms), nhưng có thể dẫn đến…
Kafka đảm bảo thứ tự message trong phạm vi một partition — các message được ghi và đọc theo đúng thứ tự FIFO. Tuy nhiên, không có đảm bảo thứ tự giữa các partition khác nhau. Để đảm bảo ordering cho một nhóm message liên…
Mỗi partition có một leader và nhiều follower replica trên các broker khác nhau. Leader xử lý tất cả read/write, follower chủ động pull data từ leader để sync. ISR (In-Sync Replicas) là tập hợp các replica đang sync kịp với leader (không bị lag…
Kafka Connect là framework tích hợp sẵn trong Kafka ecosystem để kết nối Kafka với các external system (database, file system, cloud storage, search engine) mà không cần viết code. Kafka Connect có hai loại connector: Source Connector (đọc data từ external system vào Kafka,…
Kafka Streams là thư viện Java/Scala để xây dựng ứng dụng stream processing trực tiếp trên Kafka, không cần external cluster như Spark hay Flink. Kafka Streams cung cấp các operation high-level như filter, map, groupBy, aggregate, join giữa các stream. Điểm khác biệt: consumer…
Kafka được dùng rộng rãi cho log aggregation, event sourcing, CDC, và microservices communication nhờ khả năng lưu trữ và replay message. Các use case phổ biến của Kafka trong production: - Log aggregation: tập hợp log từ nhiều service vào một nơi, sau đó…
Idempotent producer đảm bảo rằng dù producer retry gửi message bao nhiêu lần (do network error, timeout), mỗi message chỉ được ghi đúng một lần vào partition. Cách hoạt động: Kafka assign cho mỗi producer một Producer ID (PID) duy nhất và mỗi message có…
Mặc định Kafka producer gửi message ngay lập tức (linger.ms=0), nhưng cách này kém hiệu quả khi throughput cao vì mỗi request chứa ít record. batch.size (default 16384 bytes = 16KB) là kích thước tối đa của một batch per-partition — khi batch đầy, gửi…
At-most-once (fire-and-forget): producer đặt acks=0, consumer commit offset trước khi xử lý. Message có thể mất nhưng không bao giờ trùng. Hợp với metrics, log — những thứ không cần chính xác tuyệt đối. At-least-once: producer đặt acks=all kèm retries, consumer commit sau khi xử…
Kafka Group Coordinator (broker) quản lý consumer group lifecycle và partition assignment. Khi consumer join group, Group Coordinator trigger rebalance và chọn một consumer làm Group Leader — Leader thực hiện partition assignment theo strategy đã cấu hình và gửi kết quả về Coordinator. RangeAssignor…
Partition key quyết định message vào partition nào (hash(key) % numPartitions). Chọn key sai dẫn đến: hotspot (một partition bị overload), hoặc mất ordering (message liên quan vào partition khác nhau). Nguyên tắc chọn key: chọn field có cardinality cao và phân phối đều —…
Message queue là kênh giao tiếp bất đồng bộ giữa các service: producer đẩy message vào queue, consumer lấy ra xử lý; message tồn tại tới khi được xử lý. Lợi ích: - Decoupling: producer và consumer không phụ thuộc trực tiếp, không cần online…
Kafka giữ message theo cấu hình retention của từng topic, độc lập với việc consumer đã đọc hay chưa. Hai chiều giới hạn: - Theo thời gian — retention.ms: giữ message trong khoảng thời gian đặt trước (mặc định 7 ngày = 604800000ms). Quá hạn,…
Producer đặt qua compression.type, chọn một trong: none, gzip, snappy, lz4, zstd. Producer nén cả một batch message trước khi gửi, broker lưu nguyên dạng nén, consumer giải nén — tiết kiệm băng thông mạng lẫn dung lượng đĩa. Tương tác với batching: nén hoạt…
Ba mức đảm bảo giao message: - At-most-once: mỗi message được xử lý tối đa một lần, có thể mất. Consumer commit offset trước khi xử lý; xử lý lỗi thì message coi như đã tiêu thụ. Chỉ hợp với dữ liệu chấp nhận mất…
DLQ (dead letter queue) là nơi chứa message không xử lý được sau khi hết số lần retry. Mục đích là tách message hỏng ra khỏi luồng chính để consumer tiếp tục chạy, đồng thời không mất dữ liệu. Message vào DLQ phải mang đủ…
Kafka chỉ đảm bảo thứ tự trong một partition, không đảm bảo giữa các partition. Muốn các sự kiện liên quan nhau giữ đúng trình tự thì phải đưa chúng về cùng một partition bằng cách dùng chung key. Chọn key theo đơn vị cần…
Consumer lag = offset mới nhất của partition (log end offset) trừ offset mà consumer group đã commit. Nó cho biết consumer đang chậm hơn producer bao nhiêu message. Đo: Cột LAG hiện theo từng partition. Trong hệ thống thật thì lấy metric qua Burrow…
Rebalance là quá trình phân bổ lại partition cho các consumer trong group. Nó xảy ra khi consumer tham gia/rời group, khi consumer bị coi là chết (quá session.timeout.ms không gửi heartbeat, hoặc quá max.poll.interval.ms không gọi poll()), hoặc khi số partition của topic thay…