Kafka Architecture with Zookeeper
Last updated
Last updated
Chú ý: ZooKeeper sẽ chính thức bị loại bỏ trong Kafka 4.0, được thay thế bằng chế độ KRaft, cho phép Kafka hoạt động mà không cần ZooKeeper.
Bài viết từ Confluent:
Kafka Brokers là các máy chủ trong cụm Kafka (Kafka Cluster), chịu trách nhiệm lưu trữ và quản lý dữ liệu (messages)
Nhiệm vụ:
Nhận dữ liệu từ Producers (nhà sản xuất) và lưu trữ chúng trong các Topic.
Phục vụ dữ liệu cho Consumers (người tiêu dùng) khi được yêu cầu.
Quản lý các Partition (phân vùng) của Topic để đảm bảo khả năng phân tán và song song hóa.
Đồng bộ hóa dữ liệu giữa các Broker thông qua cơ chế Replication để đảm bảo tính sẵn sàng cao (High Availability).
ZooKeeper là một dịch vụ quản lý cấu hình và đồng bộ phân tán, được Kafka sử dụng để điều phối các Broker.
Nhiệm vụ:
Quản lý Metadata: Lưu trữ thông tin về các Topic, Partition, và vị trí của chúng trên các Broker.
Leader Election: Chọn Broker lãnh đạo (Leader) cho từng Partition để xử lý các yêu cầu đọc/ghi.
Phát hiện sự cố: Theo dõi trạng thái của các Broker, phát hiện khi một Broker bị lỗi để chuyển đổi sang Broker khác.
Đồng bộ hóa: Đảm bảo tất cả các Broker trong cụm Kafka hoạt động nhất quán.
Producers là các ứng dụng hoặc hệ thống gửi dữ liệu (messages) đến Kafka.
Nhiệm vụ*:*
Gửi messages đến các Topic cụ thể trong Kafka.
Có thể chỉ định Partition hoặc để Kafka tự động phân phối dựa trên khóa (key) hoặc thuật toán mặc định.
Đảm bảo dữ liệu được gửi đi đáng tin cậy thông qua cơ chế xác nhận (acknowledgments).
Consumers là các ứng dụng hoặc hệ thống đọc dữ liệu từ Kafka.
Nhiệm vụ:
Đăng ký (subscribe) vào các Topic để nhận messages.
Xử lý dữ liệu theo thời gian thực hoặc theo lô (batch).
Quản lý Offset (vị trí đọc) để theo dõi dữ liệu đã tiêu thụ và chưa tiêu thụ.
Có thể hoạt động trong nhóm (Consumer Group) để phân chia công việc đọc từ các Partition.
Topic là một luồng các messages/event. Một cụm Kafka có thể có nhiều topic.
Partition là đơn vị nhỏ nhất trong Topic (có thể coi là tập con của topic), nơi dữ liệu thực sự được lưu trữ. Có thể gọi topic là 1 nhóm các partitions. Kafka sữ dụng partition để tăng throughput bằng cách là trải đều các partition ở nhiều broker khác nhau.
Partition là một tập các messages được sắp xếp theo thứ tự và không có điểm dừng.