Hàng đợi của Rabbit nằm trong bộ nhớ và do đó sẽ nhanh hơn nhiều so với việc thực hiện điều này trong cơ sở dữ liệu. Hàng đợi tin nhắn chuyên dụng (tốt) cũng phải cung cấp các tính năng thiết yếu liên quan đến hàng đợi như điều khiển điều tiết / luồng và khả năng chọn các thuật toán định tuyến khác nhau, để đặt tên cho một cặp (thỏ cung cấp các tính năng này và hơn thế nữa). Tùy thuộc vào quy mô dự án của bạn, bạn cũng có thể muốn thành phần truyền thông báo tách biệt với cơ sở dữ liệu của mình, để nếu một thành phần chịu tải nặng, nó không cần cản trở hoạt động của thành phần kia.
Đối với những vấn đề bạn đã đề cập:
-
bỏ phiếu để giữ cho cơ sở dữ liệu bận rộn và hoạt động kém :Sử dụng Rabbitmq, nhà sản xuất có thể thúc đẩy cập nhật cho người tiêu dùng hiệu quả hơn nhiều so với thăm dò ý kiến. Dữ liệu chỉ được gửi đến người tiêu dùng khi cần thiết, loại bỏ nhu cầu kiểm tra lãng phí.
-
khóa bảng -> lại hoạt động kém: Không có bảng để khóa:P
-
hàng triệu hàng tác vụ -> thăm dò ý kiến lại hoạt động kém: Như đã đề cập ở trên, Rabbitmq sẽ hoạt động nhanh hơn vì nó chứa RAM và cung cấp khả năng kiểm soát luồng. Nếu cần, nó cũng có thể sử dụng đĩa để lưu trữ tạm thời các tin nhắn nếu hết RAM. Sau phiên bản 2.0, Rabbit đã cải thiện đáng kể việc sử dụng RAM. Các tùy chọn phân cụm cũng có sẵn.
Liên quan đến AMQP, tôi có thể nói rằng một tính năng thực sự thú vị là "trao đổi" và khả năng định tuyến đến các sàn giao dịch khác. Điều này mang lại cho bạn sự linh hoạt hơn và cho phép bạn tạo ra một loạt các kiểu định tuyến phức tạp có thể rất hữu ích khi mở rộng quy mô. Để có một ví dụ điển hình, hãy xem:
(nguồn:springource.com)
và:http://blog.springsource.org/2011/04/01/routing-topologies-for-performance-and-scalability-with-rabbitmq/
Cuối cùng, đối với Redis, vâng, nó có thể được sử dụng như một nhà môi giới tin nhắn và có thể hoạt động tốt. Tuy nhiên, Rabbitmq có nhiều tính năng xếp hàng tin nhắn hơn Redis, vì Rabbitmq được xây dựng từ đầu để trở thành một hàng đợi tin nhắn chuyên dụng cấp doanh nghiệp đầy đủ tính năng. Mặt khác, Redis chủ yếu được tạo ra để trở thành một kho lưu trữ giá trị-khóa trong bộ nhớ (mặc dù bây giờ nó còn làm được nhiều hơn thế; thậm chí nó còn được gọi là một con dao quân đội Thụy Sĩ). Tuy nhiên, tôi đã đọc / nghe nhiều người đạt được kết quả tốt với Redis cho các dự án quy mô nhỏ hơn, nhưng chưa nghe nhiều về nó trong các ứng dụng lớn hơn.
Dưới đây là một ví dụ về Redis được sử dụng trong triển khai trò chuyện thăm dò ý kiến dài:http://eflorenzano.com/blog/2011/02/16/technology-behind-convore/