0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Cơ chế phân bổ Partition và Replica trong Kafka: Tối ưu hóa hiệu suất và tính sẵn sàng

Đăng vào 5 ngày trước

• 3 phút đọc

Chủ đề:

apache kafkakafka

1. Mở đầu

Trong hệ thống phân phối dữ liệu như Kafka, cơ chế phân bổ partition và replica đóng vai trò quyết định trong việc nâng cao hiệu suất, tính sẵn sàng và độ bền của các giải pháp lưu trữ. Bài viết này sẽ đi sâu vào quy trình phân bổ các partition giữa các broker, cách Kafka xử lý việc phân phối dữ liệu tại các rack khác nhau và cách quản lý không gian lưu trữ một cách hiệu quả. Qua đó, chúng ta sẽ tìm hiểu về các nguyên tắc đảm bảo rằng dữ liệu được phân bổ đồng đều và khả năng xử lý mở rộng của hệ thống được duy trì.

2. Cơ chế phân bổ partition và replica

Khi tạo một topic trong Kafka, hệ thống sẽ tự động quyết định cách thức phân bổ các partition giữa các broker. Giả sử bạn có 6 broker và tạo một topic với 10 partition cùng tỷ lệ sao chép (replication factor) là 3, từ đó sẽ tạo ra tổng cộng 30 bản sao của partition.

2.1 Mục tiêu phân bổ

Mục tiêu chính của quá trình phân bổ là:

  • Phân tán đồng đều các bản sao giữa các broker: Trong ví dụ trên, mỗi broker sẽ có 5 bản sao.
  • Đảm bảo tính phân tán của các bản sao: Mỗi bản sao của mỗi partition nên nằm trên các broker khác nhau. Ví dụ, nếu partition 0 có leader trên broker 2, thì follower phải nằm trên broker 3 và 4, không thể nằm trên broker 2.
  • Nâng cao độ tin cậy với rack awareness: Nếu các broker có thông tin về rack, thì các bản sao của mỗi partition sẽ được phân bổ vào các rack khác nhau khi có thể, nhằm tránh mất mát dữ liệu khi một rack gặp sự cố.

2.2 Quy trình phân bổ

Để thực hiện cách phân bổ này, Kafka bắt đầu bằng cách chọn một broker ngẫu nhiên (giả sử là broker 4) và phân chia các partition theo phương pháp round robin. Leader của partition 0 sẽ ở broker 4, partition 1 thông qua broker 5 và tương tự cho các partition tiếp theo. Đối với mỗi partition, các replica sẽ được xếp theo thứ tự tăng dần từ leader. Ví dụ, nếu leader của partition 0 nằm trên broker 4, thì follower đầu tiên sẽ ở broker 5 và follower thứ hai là broker 0.

2.3 Rack awareness

Khi xét đến rack awareness, danh sách broker được sắp xếp luân phiên giữa các rack. Ví dụ, giả sử broker 0 và 1 trên cùng một rack, còn broker 2 và 3 trên rack khác, thì thứ tự chọn broker sẽ là 0, 2, 1, 3 — mỗi broker sẽ được lựa chọn từ một rack khác nhau. Điều này đảm bảo rằng nếu rack đầu tiên gặp sự cố, vẫn còn một replica trên rack khác, giữ cho partition khả dụng.

2.4 Quản lý không gian lưu trữ

Sau khi xác định các broker cho các partition và replica, bước tiếp theo là quyết định thư mục lưu trữ cho các partition mới. Quy trình này diễn ra độc lập cho từng partition, và quy tắc đơn giản là: chọn thư mục có ít partition nhất để thêm partition mới. Khi có thêm ổ cứng, tất cả các partition mới sẽ được tạo ra trên ổ cứng đó cho đến khi mọi thứ được cân bằng.

3. Những chú ý quan trọng

Một điểm cần lưu ý là việc phân bổ partition cho các broker không xem xét đến dung lượng ổ cứng hoặc tải làm việc hiện tại. Việc phân bổ các partition cho ổ cứng chỉ dựa trên số lượng partition, không dựa trên kích thước của từng partition. Điều này có nghĩa là bạn cần cẩn trọng nếu một số broker có dung lượng ổ cứng lớn hơn hoặc nếu một số partition có kích thước lớn bất thường.

4. Liên hệ

Nếu bạn muốn thảo luận thêm về nội dung bài viết này hoặc có bất kỳ câu hỏi nào, hãy kết nối với mình qua LinkedIn và Facebook:

Rất mong được kết nối và trao đổi thêm cùng bạn!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào