MÁY CHỦ NODE TRONG KAFKA (KAFKA BROKER) LÀ GÌ? TRÁI TIM CỦA HỆ THỐNG PHÂN TÁN
Trong một hệ thống Kafka hoàn chỉnh, bạn hiếm khi nào chạy mọi thứ trên một máy tính đơn lẻ. Thay vào đó, Kafka được thiết kế để chạy trên một cụm (Cluster) gồm nhiều máy chủ liên kết chặt chẽ với nhau. Mỗi một máy chủ độc lập tham gia vào cụm đó được gọi là một Node (hoặc thường được gọi chuyên môn là Kafka Broker).
1. Bản Chất Của Một Kafka Node (The What)
Về mặt kỹ thuật, Kafka Broker là một tiến trình phần mềm (Java application) chạy trên một máy chủ vật lý hoặc máy chủ ảo (Cloud VM). Nhiệm vụ cốt lõi của nó là nhận, lưu trữ, xử lý và chuyển tiếp các Message (thông điệp) giữa các Producer và Consumer.
Khi bạn dựng một cụm Kafka gồm 3 node, điều đó có nghĩa là bạn đang có 3 con server độc lập cùng chung sức gánh vác luồng dữ liệu khổng lồ của toàn bộ doanh nghiệp.
2. Sứ Mệnh Của Một Node Trong Cụm Kafka (The Why)
Tại sao Kafka phải chia nhỏ hệ thống thành nhiều Node thay vì dồn tất cả vào một server khổng lồ?
-
Lưu trữ phân tán (Distributed Storage): Một máy chủ đơn lẻ sẽ có giới hạn về dung lượng ổ cứng (Disk Space). Bằng cách sử dụng nhiều Node, Kafka cho phép chia nhỏ các Topic thành nhiều phân vùng (Partitions) và phân tán chúng ra lưu trữ trên các Node khác nhau. Hệ thống có thể chứa lượng dữ liệu lên đến hàng Petabytes mà không sợ tràn ổ cứng.
-
Cân bằng tải (Load Balancing): Khi hàng ngàn Producer cùng lúc bắn dữ liệu vào hệ thống, tải sẽ được chia đều cho các Node. Node A nhận message của topic này, Node B xử lý topic khác, giúp tối ưu hóa hiệu năng CPU và băng thông mạng.
-
Khả năng chịu lỗi tuyệt đối (Fault Tolerance & Replication): Trong một cụm Kafka, các Node thường áp dụng cơ chế nhân bản dữ liệu (Replication Factor). Nếu Node số 1 bỗng nhiên cháy nguồn hoặc sập mạng, các Node còn lại (Node 2, Node 3) đã chứa sẵn bản sao dữ liệu (Replica) sẽ tự động đứng lên thay thế mà hệ thống không hề bị gián đoạn.
3. Giải Phãu Bên Trong Một Kafka Node
Bên trong một Kafka Broker chứa những gì?
-
Log Storage (Phân vùng lưu trữ vật lý): Mọi message gửi vào Kafka đều được ghi trực tiếp xuống ổ cứng dưới dạng các file log tuần tự. Mỗi Node sẽ quản lý một phần các Partition của các Topic được phân công.
-
Controller Node (Node điều phối): Trong một cụm Kafka nhiều Node, sẽ luôn có một Node được bầu chọn làm Controller. Nhiệm vụ của nó là giám sát sức khỏe của các Node còn lại, phát hiện xem có Node nào bị rớt mạng hay không để kích hoạt quy trình chuyển đổi dự phòng (Failover).
-
Metadata Manager: (Đặc biệt trong kiến trúc KRaft hiện đại không dùng Zookeeper), các Node tự bầu chọn và chia sẻ trạng thái cấu hình của toàn bộ cụm với nhau thông qua giao thức đồng thuận Raft.
4. Góc Nhìn Kỹ Sư: Định Hình Kiến Trúc Triển Khai
Khi thiết kế hệ thống sử dụng Kafka, các kỹ sư thường tuân thủ một số nguyên tắc vàng liên quan đến Node:
-
Số lượng Node luôn là số lẻ (Ví dụ: 3, 5, 7): Đặc biệt khi chạy cụm quản lý trạng thái, việc duy trì số lượng lẻ giúp các thuật toán đồng thuận (như KRaft/Raft) dễ dàng đạt được đa số phiếu bầu (Quorum) để bầu ra Controller mà không bị tình trạng chia đôi phiếu bầu (Split-brain).
-
Phân bổ phần cứng độc lập: Không nên đặt 2 bản Replica của cùng một Partition lên chung một Node vật lý (hoặc chung một máy chủ Cloud). Nếu máy chủ đó hỏng, bạn mất cả bản chính lẫn bản sao, dẫn đến mất mát dữ liệu vĩnh viễn.
💡 Lời Kết
Máy chủ Node (Kafka Broker) chính là những "viên gạch" cơ bản nhất để xây dựng nên bức tường thành dữ liệu phân tán của Kafka. Hiểu rõ cách các Node giao tiếp, nhân bản và chia sẻ dữ liệu với nhau sẽ giúp Hiếu tự tin thiết kế những hệ thống Microservices chịu tải cao, an toàn và không bao giờ sợ điểm lỗi đơn (SPOF).
All rights reserved