Kafka KRaft mode và KafkaUI kiến trúc mới và triển khai Docker
Kafka KRaft mode và KafkaUI là hai công nghệ nổi bật giúp cải thiện hiệu suất, tính sẵn sàng và dễ dàng quản trị Kafka trong môi trường doanh nghiệp hiện nay. Cùng Bizfly Cloud đi sâu vào các khái niệm, so sánh và tìm hiểu chi tiết những lợi ích mà Kafka KRaft mode và KafkaUI mang lại.
Vì sao Kafka cần một kiến trúc mới?
Trong suốt nhiều năm qua, Kafka đã trở thành một trong những nền tảng hàng đầu để xử lý luồng dữ liệu theo thời gian thực. Tuy nhiên, như bất kỳ công nghệ nào, nó cũng tồn tại những hạn chế cần phải vượt qua để phù hợp hơn với yêu cầu ngày càng cao của doanh nghiệp.
Hạn chế của Kafka khi phụ thuộc ZooKeeper
Kafka ban đầu phụ thuộc rất nhiều vào ZooKeeper để duy trì trạng thái cluster, quản lý phân phối dữ liệu, leader election, và xác định các broker hoạt động. Điều này khiến cho kiến trúc của Kafka trở nên phức tạp, dễ gặp sự cố khi ZooKeeper gặp lỗi hoặc mất kết nối. Ngoài ra, việc duy trì ZooKeeper cũng gây ra chi phí vận hành và quản lý cao, đặc biệt trong các môi trường lớn hoặc có yêu cầu về độ trễ thấp.
Do sự phụ thuộc đó nên bắt buộc các nhà quản trị phải quan tâm đến việc cài đặt, cấu hình cũng như thực hiện bảo trì ZooKeeper liên tục. Từ đó làm tăng thêm khối lượng công việc và khả năng xảy ra lỗi.
Vấn đề phức tạp trong vận hành cluster
Việc vận hành một cluster Kafka dựa trên mô hình ZooKeeper không chỉ đòi hỏi kỹ năng cao mà còn liên quan đến việc đồng bộ, giữ gìn các phiên bản ZooKeeper nhất quán, xử lý các sự cố về mạng, phân mảnh hay lỗi phần cứng.
Đặc biệt hơn nữa chính là quá trình nâng cấp hoặc mở rộng cluster cũng gặp nhiều giới hạn, đòi hỏi downtime hoặc xử lý thủ công phức tạp. Trong một thế giới mà tốc độ và khả năng phản ứng nhanh là yếu tố quyết định thành bại thì rào cản về độ phức tạp sẽ làm giảm khả năng thích ứng của hệ thống Kafka.
Áp lực mở rộng và tính sẵn sàng cao
Các doanh nghiệp ngày nay yêu cầu hệ thống phải mở rộng quy mô linh hoạt mà không gây gián đoạn dịch vụ. Với mô hình cũ dựa trên ZooKeeper, việc mở rộng cluster thường gặp khó khăn do phụ thuộc vào các thao tác phức tạp liên quan đến ZooKeeper và sự đồng bộ giữa các node.
Hơn nữa, đảm bảo tính sẵn sàng cao (high availability) trong mô hình cũ đòi hỏi cấu hình phức tạp, nhiều thành phần cần giám sát chặt chẽ. Khi một thành phần gặp lỗi, toàn bộ hệ thống có thể bị ảnh hưởng, dẫn tới downtime hoặc mất dữ liệu. Khiến các tổ chức phải cân nhắc kỹ lưỡng trước khi mở rộng hoặc cập nhật hệ thống Kafka của họ.
Kafka KRaft mode là gì?

Kafka Kraft là một giao thức đồng thuận mới được phát triển
Kafka KRaft mode là kiến trúc mới của Apache Kafka, không còn phụ thuộc vào ZooKeeper nữa. Thay vào đó, Kafka tự quản lý metadata và cluster thông qua một hệ thống nội bộ gọi là KRaft (Kafka Raft Metadata Mode). Đây là bước tiến lớn nhằm đơn giản hóa kiến trúc, nâng cao khả năng mở rộng và độ ổn định của hệ thống.
KRaft sử dụng thuật toán đồng bộ Raft để đảm bảo tính nhất quán và tính sẵn sàng của metadata, giúp giảm thiểu các điểm nghẽn và lỗi liên quan đến phân phối dữ liệu. Nhờ đó, các nhà phát triển và quản trị viên có thể tập trung hơn vào vận hành dữ liệu mà không cần lo lắng về sự phức tạp của ZooKeeper.
Những đặc điểm nổi bật của Kafka KRaft mode
Điểm nổi bật của Kafka KRaft là khả năng tích hợp tất cả các thành phần quản lý metadata ngay trong core Kafka, loại bỏ hoàn toàn ZooKeeper. Nó cung cấp khả năng vận hành đơn giản hơn, ít phụ thuộc hơn vào các thành phần bên ngoài và dễ dàng nâng cấp hệ thống.
Bên cạnh đó, KRaft còn đem lại khả năng mở rộng tốt hơn, giúp cluster Kafka có thể xử lý lượng dữ liệu lớn hơn mà vẫn đảm bảo độ trễ thấp. Tính năng này rất phù hợp với các doanh nghiệp muốn xây dựng hệ thống dữ liệu phân tán, có khả năng mở rộng linh hoạt trong dài hạn.
So sánh Kafka KRaft mode và mô hình dùng ZooKeeper
Mô hình truyền thống dựa trên ZooKeeper đã giúp Kafka đạt được thành công ban đầu, nhưng cũng đồng nghĩa với nhiều hạn chế về mặt vận hành và khả năng mở rộng. Kafka KRaft ra đời nhằm khắc phục những điểm yếu này, mang lại nền tảng vững chắc hơn cho các hệ thống dữ liệu hiện đại.

Kafka gần đây đã chuyển từ ZooKeeper sang bộ điều khiển dựa trên cơ chế đa số tuyệt đối
Ưu điểm của Kafka KRaft mode so với mô hình dùng ZooKeeper
Một trong những lợi thế lớn nhất của Kafka KRaft là đơn giản hóa kiến trúc hệ thống. Khi không còn phụ thuộc vào ZooKeeper, các bước thiết lập, cấu hình và bảo trì trở nên dễ dàng hơn, giảm thiểu khả năng lỗi liên quan đến thành phần thứ ba này.
Ngoài ra, khả năng mở rộng của Kafka KRaft mạnh mẽ hơn do có cơ chế quản lý metadata nội bộ tối ưu, phù hợp với các môi trường đám mây và các hệ thống phân tán lớn. Hiệu năng của Kafka KRaft cũng được cải thiện rõ rệt, giảm thiểu độ trễ trong quá trình xử lý metadata và leader election.
Những thách thức khi chuyển đổi sang Kafka KRaft
Tuy nhiên, việc chuyển đổi sang Kafka KRaft không phải lúc nào cũng đơn giản. Đặc biệt đối với các hệ thống đã xây dựng lâu dài dựa trên mô hình ZooKeeper, quá trình migrate cần phải lên kế hoạch cẩn thận để tránh mất dữ liệu hoặc gián đoạn dịch vụ. Các version Kafka cũ vẫn phụ thuộc vào ZooKeeper, nên việc đồng bộ và nâng cấp cũng cần cân nhắc kỹ lưỡng.
Thêm vào đó, cộng đồng và tài liệu hỗ trợ cho Kafka KRaft vẫn đang phát triển. Do đó, các tổ chức cần chuẩn bị kỹ năng và kiến thức để tận dụng tối đa các lợi ích của kiến trúc mới này. Trong tương lai gần, Kafka KRaft được dự đoán sẽ trở thành tiêu chuẩn mới, nhưng quá trình chuyển đổi cần có chiến lược rõ ràng.
KafkaUI là gì?

Kafka UI (ví dụ: kafbat/kafka-ui) là giao diện web mã nguồn mở, miễn phí
KafkaUI là giao diện quản trị đồ họa giúp người dùng dễ dàng theo dõi, kiểm tra và quản lý cluster Kafka một cách trực quan hơn. Thay vì phải sử dụng dòng lệnh hoặc các công cụ phức tạp, KafkaUI cung cấp một giao diện thân thiện, giúp kiểm tra các topic, consumer, producer, và các thành phần khác trong hệ thống một cách dễ dàng và nhanh chóng.
Giao diện này đặc biệt hữu ích cho các nhà quản trị hệ thống, nhà phát triển, hoặc các nhóm kỹ thuật vận hành, giúp họ nâng cao hiệu quả công việc và giảm thời gian xử lý các vấn đề liên quan đến Kafka.
Các tính năng nổi bật của KafkaUI
KafkaUI cung cấp khả năng xem trạng thái cluster, theo dõi các topic, partitions, replica, consumer lag, và các thông số quan trọng khác. Người dùng có thể tạo, chỉnh sửa, xóa topics hoặc quản lý các nhóm consumer mà không cần phải thao tác phức tạp qua dòng lệnh.
Ngoài ra, KafkaUI còn tích hợp các biểu đồ, báo cáo và cảnh báo, giúp phát hiện sớm các vấn đề tiềm ẩn như mất liên kết, nghẽn cổ chai hoặc lệch lag của consumer. Chính nhờ các tính năng này, KafkaUI trở thành công cụ hỗ trợ đắc lực trong công cuộc vận hành hệ thống Kafka hiện đại.
Triển khai Kafka KRaft mode bằng Docker
Docker đã trở thành phương tiện phổ biến để triển khai các dịch vụ phức tạp một cách nhanh chóng, tiện lợi và tái sử dụng. Việc triển khai Kafka KRaft mode bằng Docker giúp các nhà phát triển, kỹ thuật viên dễ dàng thử nghiệm, kiểm thử hoặc xây dựng môi trường phát triển một cách đồng bộ và nhất quán.
Dưới đây là các bước cài đặt Kafka KRaft mode sử dụng Docker, từ việc tải ảnh Docker chính thức đến cấu hình và chạy dịch vụ.
Cấu Hình docker-compose.yml
Kafka Broker - kafka-1
kafka-1:
image: apache/kafka:latest
hostname: kafka-1
container_name: kafka-kraft-1
ports:
- "19092:9092"
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_LISTENERS: PLAINTEXT://kafka-1:9092,CONTROLLER://kafka-1:9093,INTERNAL://kafka-1:9094
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:9092,INTERNAL://kafka-1:9094
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9093
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_NUM_PARTITIONS: 1
KAFKA_LOG_RETENTION_HOURS: 24
networks:
- kafka-net
volumes:
- kafka-data-1:/var/lib/kafka/data
Kafka UI
kafka-ui:
image: provectuslabs/kafka-ui
ports:
- "8080:8080"
restart: always
environment:
KAFKA_CLUSTERS_0_NAME: "kraft-cluster"
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka-1:9094,kafka-2:9094,kafka-3:9094
depends_on:
- kafka-1
- kafka-2
- kafka-3
networks:
- kafka-net
Các brokers kafka-2, kafka-3 có cấu hình tương tự kafka-1, chỉ khác KAFKA_NODE_ID, hostname, container_name, ports.
Sau khi hoàn thành mình sẽ được 1 file docker compose hoàn chỉnh sau:
version: '3.5'
services:
kafka-1:
image: apache/kafka
hostname: kafka-1
container_name: kafka-kraft-1
ports:
- "19092:9092"
environment:
KAFKA_NODE_ID: 1
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_LISTENERS: PLAINTEXT://kafka-1:9092,CONTROLLER://kafka-1:9093,INTERNAL://kafka-1:9094
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:19092,INTERNAL://kafka-1:9094
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9093,2@kafka-2:9093,3@kafka-3:9093
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_NUM_PARTITIONS: 1
KAFKA_LOG_RETENTION_HOURS: 24
networks:
- kafka-net
healthcheck:
test:
[
"CMD-SHELL",
"./opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092 > /dev/null 2>&1",
]
interval: 10s
timeout: 10s
retries: 5
volumes:
- kafka-data-1:/var/lib/kafka/data
kafka-2:
image: apache/kafka
hostname: kafka-2
container_name: kafka-kraft-2
ports:
- "29092:9092"
environment:
KAFKA_NODE_ID: 2
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_LISTENERS: PLAINTEXT://kafka-2:9092,CONTROLLER://kafka-2:9093,INTERNAL://kafka-2:9094
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:29092,INTERNAL://kafka-2:9094
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9093,2@kafka-2:9093,3@kafka-3:9093
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_NUM_PARTITIONS: 1
KAFKA_LOG_RETENTION_HOURS: 24
networks:
- kafka-net
healthcheck:
test:
[
"CMD-SHELL",
"./opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092 > /dev/null 2>&1",
]
interval: 10s
timeout: 10s
retries: 5
volumes:
- kafka-data-2:/var/lib/kafka/data
kafka-3:
image: apache/kafka
hostname: kafka-3
container_name: kafka-kraft-3
ports:
- "39092:9092"
environment:
KAFKA_NODE_ID: 3
KAFKA_PROCESS_ROLES: broker,controller
KAFKA_LISTENERS: PLAINTEXT://kafka-3:9092,CONTROLLER://kafka-3:9093,INTERNAL://kafka-3:9094
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:39092,INTERNAL://kafka-3:9094
KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT
KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:9093,2@kafka-2:9093,3@kafka-3:9093
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_NUM_PARTITIONS: 1
KAFKA_LOG_RETENTION_HOURS: 24
networks:
- kafka-net
healthcheck:
test:
[
"CMD-SHELL",
"./opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092 > /dev/null 2>&1",
]
interval: 10s
timeout: 10s
retries: 5
volumes:
- kafka-data-3:/var/lib/kafka/data
kafka-ui:
image: provectuslabs/kafka-ui
ports:
- "8080:8080"
restart: always
environment:
KAFKA_CLUSTERS_0_NAME: "kraft-cluster"
KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka-1:9094,kafka-2:9094,kafka-3:9094
depends_on:
- kafka-1
- kafka-2
- kafka-3
networks:
- kafka-net
volumes:
kafka-data-1:
kafka-data-2:
Kafka-data-3:
networks:
kafka-net:
driver: bridge
Mount Volumes
volumes:
kafka-data-1:
kafka-data-2:
kafka-data-3:
Mạng dùng chung
networks:
kafka-net:
driver: bridge
5. Khởi Chạy Hệ Thống
docker-compose up -d
Lợi ích khi kết hợp Kafka KRaft mode và KafkaUI
Việc kết hợp Kafka KRaft mode và KafkaUI không chỉ mang lại trải nghiệm vận hành đơn giản, hiệu quả mà còn thúc đẩy khả năng mở rộng và độ ổn định của hệ thống. Công nghệ mới giúp giảm thiểu các lỗi vận hành liên quan đến ZooKeeper, tối ưu hiệu năng và nâng cao tính sẵn sàng.
Ngoài ra, KafkaUI giúp các nhóm vận hành dễ dàng theo dõi, kiểm tra và xử lý các vấn đề phát sinh trong cluster Kafka mà không cần phải am hiểu sâu về dòng lệnh hay cấu hình phức tạp. Đây là một lợi thế lớn để doanh nghiệp có thể tập trung phát triển các dịch vụ dữ liệu mà không lo lắng về các thao tác quản trị thủ công.
Hợp tác giữa hai công nghệ này tạo ra một môi trường Kafka hiện đại, dễ sử dụng, phù hợp với các yêu cầu về mở rộng, tính sẵn sàng cao và quản lý trực quan. Đây chính là xu hướng tất yếu trong tương lai của hệ sinh thái Kafka.
Kafka KRaft mode và KafkaUI có production-ready không?
Câu hỏi về tính sẵn sàng để đưa vào sản xuất luôn là đề tài nan giải. Hiện tại, Kafka KRaft mode vẫn đang trong giai đoạn hoàn thiện và thử nghiệm, tuy nhiên nhiều phiên bản đã chứng minh khả năng ổn định cao, phù hợp cho các môi trường sản xuất nhỏ đến trung bình.
Cộng đồng Kafka đã bắt đầu đẩy mạnh phát triển phần mềm và tài liệu hỗ trợ cho KRaft, đồng thời các nhà cung cấp dịch vụ đám mây cũng bắt đầu áp dụng kiến trúc này. Nhiều tổ chức đã thử nghiệm thành công, cho thấy khả năng mở rộng và độ ổn định đáng kể.
Về phía KafkaUI, đây đã là một công cụ quản trị phổ biến, đã qua quá trình kiểm thử và sử dụng trong nhiều môi trường doanh nghiệp. Việc sử dụng song song Kafka KRaft và KafkaUI trong môi trường sản xuất hiện tại là khả thi, miễn là các hệ thống được kiểm tra kỹ lưỡng và cấu hình phù hợp.
Giải pháp Bizfly Cloud Kafka – Triển khai nhanh, vận hành ổn định

Bizfly Cloud Kafka là dịch vụ Kafka-as-a-service tiên phong tại Việt Nam
Trong bối cảnh kiến trúc Kafka ngày càng chuyển dịch sang mô hình hiện đại như KRaft, việc tự triển khai và vận hành cluster vẫn là bài toán phức tạp đối với nhiều doanh nghiệp. Đây chính là lúc các nền tảng Kafka managed service như Bizfly Cloud Kafka phát huy vai trò, giúp đơn giản hóa toàn bộ quy trình từ triển khai đến giám sát.
Bizfly Cloud Kafka cung cấp môi trường Kafka được tối ưu sẵn, hỗ trợ triển khai nhanh theo chuẩn production, giảm thiểu phụ thuộc vào các thành phần phức tạp như ZooKeeper, đồng thời sẵn sàng tương thích với kiến trúc KRaft mới. Doanh nghiệp có thể dễ dàng khởi tạo cluster, mở rộng tài nguyên linh hoạt và đảm bảo tính sẵn sàng cao mà không cần xử lý các vấn đề hạ tầng bên dưới.
Bên cạnh đó, hệ thống tích hợp sẵn các công cụ giám sát, logging và quản trị trực quan (có thể kết hợp KafkaUI), giúp đội ngũ kỹ thuật theo dõi hiệu suất, consumer lag, topic và toàn bộ pipeline dữ liệu theo thời gian thực. Điều này giúp rút ngắn thời gian xử lý sự cố và nâng cao hiệu quả vận hành tổng thể.
Với định hướng hỗ trợ doanh nghiệp xây dựng hệ thống dữ liệu realtime ổn định, Bizfly Cloud Kafka không chỉ giúp giảm chi phí vận hành mà còn tạo nền tảng vững chắc để triển khai các use case như event streaming, data pipeline, microservices hay AI/analytics trong dài hạn.
Kết luận
Kafka KRaft mode và KafkaUI đều là những bước tiến quan trọng hướng tới việc xây dựng hệ thống Kafka hiện đại, dễ vận hành và mở rộng. Trong bối cảnh các doanh nghiệp ngày nay yêu cầu khả năng phản ứng nhanh, khả năng mở rộng linh hoạt và quản lý trực quan, sự đổi mới này không thể bỏ qua. Triển khai Kafka KRaft bằng Docker cùng với KafkaUI giúp rút ngắn quá trình thiết lập, giảm thiểu lỗi và nâng cao hiệu quả vận hành.
Chúng ta đang chứng kiến một kỷ nguyên mới của Kafka, nơi kiến trúc tối giản, dễ quản lý và khả năng mở rộng cao sẽ trở thành tiêu chuẩn. Hy vọng bài viết đã cung cấp những insight hữu ích để bạn có thể bắt đầu hoặc nâng cấp hệ thống của mình theo hướng này.













