2016-04-06 22 views
5

Cách tốt nhất để tạo chủ đề trong kafka là gì?Làm thế nào để tạo chủ đề trong apache kafka?

  • Có bao nhiêu bản sao/phân vùng được xác định khi tạo chủ đề?

Trong API nhà sản xuất mới, khi tôi cố gắng xuất bản thư tới chủ đề không tồn tại, lần đầu tiên không thành công và sau đó xuất bản thành công.

  • Tôi muốn biết, mối quan hệ giữa bản sao, phân vùng và số lượng nút cụm.
  • Chúng ta có cần tạo chủ đề trước khi xuất bản tin nhắn không?

Trả lời

11

Khi bạn khởi động nhà môi giới kafka, bạn có thể xác định tập hợp thuộc tính trong tệp conf/server.properties. Tệp này chỉ là tệp thuộc tính giá trị khóa. Một trong những tài sản là auto.create.topics.enable nếu nó được thiết lập đúng (theo mặc định) kafka sẽ tạo chủ đề tự động khi bạn gửi tin nhắn đến chủ đề không tồn tại. Tất cả các tùy chọn cấu hình bạn có thể tìm thấy here Imho Quy tắc đơn giản để tạo chủ đề như sau: số lượng bản sao không được nhỏ hơn số lượng nút mà bạn có. Số chủ đề phải là số nhân của số nút trong cụm của bạn, ví dụ: Bạn có 9 cụm nút chủ đề của bạn phải có 9 phân vùng và 9 bản sao hoặc 18 phân vùng và 9 bản sao hoặc 36 phân vùng và 9 bản sao, v.v.

+0

Cảm ơn thông tin ngắn gọn và sạch sẽ – Ratha

+2

Sẽ không yêu cầu số lượng bản sao bằng số lượng nút khiến cụm của bạn cực kỳ mong manh? Một nút đi xuống và đột nhiên cụm của bạn không còn đáp ứng bởi vì nó phải đợi cho đúng số lượng bản sao. –

+0

@SethPaulson Không có chờ đợi bởi vì một nút đi xuống. Trong trường hợp đó, người lãnh đạo sẽ xóa nó khỏi danh sách các bản sao "không đồng bộ" và cố khôi phục nó nếu nó trở lại. Xem [Tài liệu Kafka về Nhân rộng] (https://kafka.apache.org/documentation/#replication) để biết mô tả chi tiết. –

14

Số phân vùng xác định song song của chủ đề vì một phân đoạn chỉ có thể được tiêu thụ bởi một người tiêu dùng trong nhóm người tiêu dùng. Ví dụ, nếu bạn chỉ có 10 phân vùng cho một chủ đề và 20 người tiêu dùng trong một nhóm người tiêu dùng, 10 người tiêu dùng đang nhàn rỗi, không nhận được bất kỳ tin nhắn nào. Số lượng thực sự phụ thuộc vào ứng dụng của bạn, nhưng 1-1000s là tất cả hợp lý.

Số bản sao được xác định theo yêu cầu độ bền của bạn. Đối với một chủ đề có nhân tố N nhân bản, Kafka có thể chịu đựng được các lỗi máy chủ N-1 mà không làm mất bất kỳ thông báo nào được ghi vào nhật ký. 3 bản sao là cấu hình chung. Tất nhiên, số bản sao phải nhỏ hơn hoặc bằng số của nhà môi giới của bạn.

auto.create.topics.enable kiểm soát thuộc tính khi Kafka bật tự động tạo chủ đề trên máy chủ. Nếu điều này được đặt thành true, khi các ứng dụng cố gắng tạo, tiêu thụ hoặc tìm nạp siêu dữ liệu cho một chủ đề không tồn tại, Kafka sẽ tự động tạo chủ đề với hệ số nhân bản mặc định và số phân vùng. Tôi khuyên bạn nên tắt nó trong sản xuất và tạo chủ đề trước.

+0

Cảm ơn lời giải thích chi tiết ... Thực sự bối rối với các bản sao và phân vùng – Ratha

+0

Tôi không chắc liệu bạn có nhận được chủ đề được tạo trên tiêu thụ hay tìm nạp hay không, Theo chủ đề này - https: // www. mail-archive.com/[email protected]/msg09182.html - "một chủ đề có thể được tạo tự động bởi nhà sản xuất, nhưng không phải là người tiêu dùng". Các tài liệu mới nhất tại http://kafka.apache.org/documentation.html#brokerconfigs chỉ cần nói "Bật tự động tạo chủ đề trên máy chủ", mà không nói hành động nào sẽ gây ra việc tạo. – Brian

1

thiết lập thuộc tính auto.create.topics.enable=true trong tập tin server.properties của bạn, nếu bạn có nhiều người môi giới làm ngươi như nhau cho tất cả các máy chủ * .properties tập tin và khởi động lại Kafka-server của bạn. Nhưng hãy chắc chắn rằng bạn thiết lập các phân vùng cho một số thích hợp trong máy chủ * .properties num.partitions=int, nếu không sẽ có vấn đề hiệu suất nếu bạn tăng phân vùng sau này.

1

Mức cơ bản song song trong Kafka là phân vùng. Trên cả hai nhà sản xuất và bên môi giới, ghi vào các phân vùng khác nhau có thể được thực hiện hoàn toàn song song.

Những điều cần ghi nhớ

  • nhiều phân vùng đòi hỏi nhiều Open File Xử lý
  • nhiều phân vùng có thể làm tăng không cung
  • nhiều phân vùng có thể làm tăng End-to-end trễ

Như quy tắc chung, có thể là một ý tưởng tốt để giới hạn số lượng phân vùng trên mỗi nhà môi giới thành 100 x b x r, trong đó b là số lượng nhà môi giới và r là nhân tố sao chép.

Ví dụ: Nếu bạn có 9 nhà môi giới/nút trong cluster của bạn chủ đề của bạn có thể có

  • 1800 phân vùng với 3 bản sao, hoặc
  • 900 phân vùng và 2 bản sao

EDIT: Xem bài viết How to choose the number of topics/partitions in a Kafka cluster? để biết thêm chi tiết (câu trả lời đã được lấy từ re)

+0

Cảm ơn bạn đã trả lời. Vui lòng trích dẫn các nguồn bên ngoài khi câu trả lời của bạn dựa trên câu trả lời như một sự lịch sự đối với tác giả gốc. Tôi đã thêm liên kết cho bạn. –

Các vấn đề liên quan