2013-07-18 34 views
6

Trong ứng dụng của tôi, tôi có hàng đợi có khả năng trở nên rất lớn. Điều gì sẽ xảy ra nếu tôi phát hiện ra không còn chỗ trống trên máy của mình? Làm cách nào để phân chia hàng đợi của tôi trên nhiều máy? Có lẽ triết lý RabbitMQ là khác nhau và tôi nên tạo nhiều hàng đợi thay vì một hàng đợi lớn ..?Thiết kế và quy mô xếp hàng RabbitMQ

nhất, Flavio

Trả lời

1

RabbimMQ cung cấp clusteringhigh availability features ngay ra khỏi hộp, bạn chỉ cần phải cấu hình chúng yêu cầu của bạn.

Thực ra, AMQP có thể giữ các thư có kích thước bất kỳ, nhưng trong hầu hết các trường hợp, thư chỉ lên tới 32Kb trong 99%, tôi đoán vậy. Bạn có thể tính toán việc sử dụng tài nguyên ước tính (min/max/avg) và đưa ra quyết định tiếp theo làm cluster hoặc không cluster.

+2

Từ những gì tôi hiểu hàng đợi không thể tách giữa các máy khác nhau, một hàng đợi đơn chỉ cư trú trên một nút duy nhất (do đó, một hàng đợi duy nhất không có thể mở rộng rất nhiều) .. Tôi có sai không? – user2539645

+0

Đúng vậy, hàng đợi tồn tại trên một nút (nhưng có thể được nhân đôi với một nút khác). Thông điệp của bạn ước tính kích thước và lưu lượng? – pinepain

+0

Thực tế là thứ gì đó sẽ được đánh giá trong những ngày tiếp theo .. Tôi hy vọng hàng terabyte dữ liệu sẽ đến hàng giờ, vì vậy tôi nên mong đợi một hệ thống tải rất nặng .. Có thể giải pháp tốt hơn là tạo một trao đổi mới thay vì xếp hàng và thêm hàng đợi (yêu cầu vào cụm) khi tải phát triển .. bạn nghĩ sao? Vấn đề là: không trao đổi tạo hàng đợi mới đồng đều trên các nút (như vòng xoay)? – user2539645

1

Như bạn có thể đọc trên chuỗi danh sách gửi thư RabbitMQ http://rabbitmq.1065348.n5.nabble.com/RabbitMQ-scalability-design-question-td28323.html, giải pháp mà tôi đưa ra là triển khai mẫu người tiêu dùng cạnh tranh (nhiều người tiêu dùng trên hàng đợi) khi phát hiện một thông báo đặc biệt (dừng cờ) tin nhắn cho một trao đổi chủ đề.

Thông báo dừng này được người tiêu dùng "chính" cho hàng đợi bắt đầu bỏ phiếu cho một Zookeeper (thông qua người quản lý) cho đến khi tất cả trẻ em của một zkNode ceratain đã bị xóa (sử dụng Zookpeer như là đăng ký của người tiêu dùng xếp hàng trong trường hợp này). Khi tất cả người tiêu dùng đã hoàn thành giai đoạn dừng của họ, người tiêu dùng "chủ" thực hiện một số nhiệm vụ và kích hoạt lại người tiêu dùng hàng đợi ban đầu gửi tin nhắn RESTART đến trao đổi chủ đề (nơi mỗi người tiêu dùng lắng nghe với hàng đợi chuyên dụng).

Tôi hy vọng điều này có thể giúp (hoặc "truyền cảm hứng") người khác ..

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