2014-12-20 20 views
7

Chúng tôi có một ứng dụng mà một người tiêu dùng đọc một tin nhắn và chủ đề thực hiện một số điều, bao gồm truy cập cơ sở dữ liệu trước khi một tin nhắn được tạo ra cho một chủ đề khác. Thời gian giữa việc tiêu thụ và sản xuất tin nhắn trên luồng có thể mất vài phút. Khi thông điệp được tạo ra cho chủ đề mới, một cam kết được thực hiện để cho biết chúng ta đã hoàn thành công việc trên thông báo hàng đợi của người tiêu dùng. Tự động cam kết bị tắt vì lý do này.kafka phiên người tiêu dùng thời gian ra

Tôi đang sử dụng người tiêu dùng cấp cao và những gì tôi nhận thấy là thời gian chờ của vườn thú và kafka do quá lâu trước khi chúng tôi thực hiện bất kỳ điều gì trên hàng đợi để kafka kết thúc cân bằng lại mỗi khi chuỗi trở lại đọc thêm từ hàng đợi của người tiêu dùng và bắt đầu mất một thời gian dài trước khi người tiêu dùng đọc một tin nhắn mới sau một thời gian.

Tôi có thể đặt thời gian chờ của người quản lý ở mức rất cao để không gây ra vấn đề nhưng sau đó tôi phải điều chỉnh các thông số cân bằng và kafka sẽ không đón khách hàng mới trong một thời gian giữa các tác dụng phụ khác.

Tùy chọn của tôi để giải quyết vấn đề này là gì? Có một cách để nhịp tim để kafka và zookeeper để giữ cho cả hai hạnh phúc? Tôi vẫn có những vấn đề tương tự nếu tôi sử dụng một người tiêu dùng đơn giản?

+0

Bạn có nhiều khả năng nhận trợ giúp hơn nếu bạn chỉ giải thích vấn đề của mình. Nói rằng bạn "muốn nhận được một số phản hồi" có thể khiến câu hỏi của bạn bị đóng. Stack Overflow không phải là diễn đàn; chúng tôi coi trọng là ngắn gọn và đúng đắn. –

Trả lời

3

Có vẻ như các vấn đề của bạn đã sôi xuống để dựa vào người tiêu dùng cấp cao để quản lý bù đắp lần đọc cuối cùng. Sử dụng một người tiêu dùng đơn giản sẽ giải quyết vấn đề đó kể từ khi bạn kiểm soát sự tồn tại của bù đắp đó. Lưu ý rằng tất cả các cam kết của người tiêu dùng cấp cao là lưu trữ giá trị đọc cuối cùng trong sở thú. Không có hành động nào khác được thực hiện và thư bạn vừa đọc vẫn còn trong phân vùng và có thể đọc được bởi những người tiêu dùng khác.

Với người tiêu dùng đơn giản kafka, bạn có nhiều quyền kiểm soát hơn đối với thời điểm và cách bù đắp lưu trữ diễn ra. Bạn thậm chí có thể tồn tại mà bù đắp một nơi nào đó khác hơn Zookeeper (một cơ sở dữ liệu, ví dụ).

Tin xấu là trong khi bản thân người tiêu dùng đơn giản thì đơn giản hơn người tiêu dùng cấp cao, có rất nhiều công việc bạn phải làm mã khôn ngoan để làm cho nó hoạt động. Bạn cũng sẽ phải viết mã để truy cập vào nhiều phân vùng - một thứ gì đó mà người tiêu dùng cấp cao thực hiện khá độc đáo cho bạn.

+0

Xin chào, tôi đang đối mặt với cùng một vấn đề, nhưng trong phiên bản kafka mới, người tiêu dùng đơn giản bị khấu hao. Làm thế nào để làm điều đó ngay bây giờ? – pg20

0

Tôi nghĩ rằng vấn đề là phương pháp thăm dò ý kiến ​​của người tiêu dùng kích hoạt yêu cầu nhịp tim của người tiêu dùng. Và khi bạn tăng session.timeout. Nhịp tim của người tiêu dùng sẽ không đạt được điều phối viên. Bởi vì nhịp tim này bỏ qua, điều phối viên đánh dấu người tiêu dùng đã chết. Và việc tái tiêu dùng cũng rất chậm, đặc biệt trong trường hợp người tiêu dùng đơn lẻ.

tôi đã phải đối mặt với một vấn đề tương tự và để giải quyết mà tôi phải thay đổi thông số sau trong thuộc tính cấu hình tiêu dùng

session.timeout.ms = request.timeout.ms = hơn phiên timeout

Cũng bạn phải thêm thuộc tính sau vào server.properties tại nút môi giới kafka. group.max.session.timeout.ms =

Bạn có thể xem liên kết sau để biết thêm chi tiết. http://grokbase.com/t/kafka/users/16324waa50/session-timeout-ms-limit

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