2013-06-01 43 views
8

Có một số mã mẫu để di chuyển từ cấu trúc tiêu chuẩn LinkedBlockingQueue thành LMAX' Disruptor không? Tôi có một ứng dụng xử lý sự kiện (nhà sản xuất đơn lẻ, nhiều người tiêu dùng) có thể hưởng lợi từ sự thay đổi này.Di chuyển từ LinkedBlockingQueue sang LMAX 'Disruptor

Điều đó thậm chí có ý nghĩa khi mục tiêu của tôi tối đa hóa thông lượng thay vì giảm thiểu độ trễ không?

+1

Xin chào @pmf, tôi đã thêm phản hồi chung cho câu hỏi của bạn. Nó có thể giúp đỡ nếu bạn có thể làm sáng tỏ một số chính xác lý do tại sao bạn nghĩ LBQ là một mối quan tâm ở đây và kiến ​​trúc ứng dụng của bạn trông như thế nào. – jasonk

Trả lời

8

Mentaqueue cung cấp một hàng tiêu dùng đơn của nhà sản xuất duy nhất dựa trên cùng một ý tưởng - http://mentaqueue.soliveirajr.com/Page.mtw, bạn có thể kiểm tra mã, mặc dù tôi chưa bao giờ sử dụng nó.

Disruptor ngoài hộp cung cấp hai kỹ thuật ở đây - Tôi sẽ không đi vào mã nhưng có thể làm điều đó nếu bạn cần.

  1. Nó cho phép một trình tự xử lý sự kiện và bạn có thể cấu hình để mỗi trình xử lý xử lý tất cả các yêu cầu song song; mỗi yêu cầu được xử lý bởi mọi trình xử lý.

  2. Việc triển khai Hồ sơ công nhân cho phép một nhóm chuỗi công nhân cho mỗi quá trình yêu cầu; mỗi yêu cầu sẽ được xử lý một lần từ một hồ bơi thread.

Nếu bạn đã xác định rằng hàng đợi mất nhiều thời gian hoặc bạn có thời gian đáng kể (khóa/đồng bộ hóa) thì tôi chắc chắn sẽ xem xét Người phá sản. Bạn sẽ nhận được những lợi ích tốt nhất bằng cách xem xét liệu các chỉnh sửa đối với kiến ​​trúc của bạn có thể dẫn đến việc sử dụng sạch Disruptor hay không.

Có giảm độ trễ giao dịch sẽ giúp đạt được thông lượng, do đó, điều đó có thể có ý nghĩa, nhưng nó phụ thuộc vào những gì đang nắm giữ thông lượng của bạn. Điều này sẽ trở thành một nhận xét rất chung chung - rằng bạn nên xác định khu vực ứng dụng của bạn đang giữ lại thông lượng.

Các chỉ báo sẽ dẫn tôi sử dụng Disruptor sẽ là - rất nhiều tác vụ ngắn được xử lý theo cách tương tự, tranh chấp về bộ nhớ, yêu cầu sắp xếp, phát trực tuyến hoặc IO nặng (có thể hưởng lợi từ việc tạo nhóm).

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