2012-03-05 44 views
7

Tôi tìm các ý tưởng về cách tăng tốc độ truyền tin nhắn thông qua RabbitMQ.Tốc độ truyền tải của RabbitMQ tăng tốc?

Tôi đã cài đặt phiên bản mới nhất trên Windows 64 bit, chạy máy chủ trên máy cục bộ của mình mà trên đó tôi cũng xuất bản và sử dụng đến/từ thông qua triển khai C#. Ban đầu tôi đã tối đa 40.000 tin nhắn mỗi giây ấn tượng nhưng không phù hợp với nhu cầu của mình (tôi cạnh tranh với một trình đọc nhị phân tùy chỉnh có thể xử lý 24 triệu byte byte lớn không chuẩn 16 byte mỗi giây; Tôi cố gắng cải thiện ít nhất). Tôi cần gửi khoảng 115.000.000 tin nhắn nhanh nhất có thể. Tôi không muốn tồn tại dữ liệu và kết nối sẽ trực tiếp đến một người tiêu dùng duy nhất. Sau đó tôi đã xây dựng các mảng của mảng byte 16b của tôi và xuất bản lên xe buýt mà không có bất kỳ cải tiến nào. Tốc độ truyền tối đa là 45mb/giây. Tôi thấy điều này rất chậm vì thực tế là cuối cùng nó chỉ cần đun sôi xuống tốc độ truyền thô vì tôi có thể tạo các mảng byte có kích thước vài megabyte, nơi tỷ lệ hiệu quả của định tuyến bằng trao đổi trở nên không đáng kể so với tốc độ truyền thô. Tại sao bus tin nhắn của tôi tối đa ở tốc độ truyền 45mb/giây?

+0

nếu chỉ có 1 khách hàng, tại sao không gửi trực tiếp qua TCP? bạn không thực sự cần một chiếc xe buýt thông báo. –

+0

IO (mạng, đĩa) và CPU của bạn trông như thế nào trong các thử nghiệm này? – Xailor

+0

có lẽ bạn nên nhìn vào zeromq thay vì rabbitmq. Nhiệm vụ của bạn có vẻ phù hợp với 0mq. Ít nhất họ yêu cầu khoảng 3_000_000 tin nhắn mỗi giây trên kích thước tin nhắn đó (16 byte). http://www.zeromq.org/results:0mq-tests-v03 –

Trả lời

1

Vết thương ... và Cập nhật: Không thấy bất kỳ câu trả lời nào cho câu hỏi này trong một thời gian dài hơn. Tôi hơi ngạc nhiên khi không có một nhà phát triển RabbitMQ nào tham gia. Tôi đã chơi rộng rãi với RabbitMQ và ZeroMQ. Tôi quyết định rằng RabbitMQ không phải là nhiệm vụ khi nhìn vào các giải pháp nhắn tin trong quá trình thông lượng cao. Việc thực hiện môi giới và logic phân tích đặc biệt là một nút cổ chai lớn để cải thiện thông lượng. Tôi đã loại bỏ RabbitMQ khỏi danh sách các tùy chọn có thể. Có một bài báo trắng mô tả cách họ cung cấp một giải pháp để quản lý độ trễ thấp, tùy chọn thông lượng cao dòng dữ liệu tài chính, nhưng nó nghe thấy tất cả những gì họ làm là ném phần cứng vào nó thay vì cung cấp giải pháp nhắm mục tiêu độ trễ thấp, yêu cầu thông lượng cao.

ZeroMQ, đã làm một công việc tuyệt vời sau khi tôi nghiên cứu tài liệu chuyên sâu hơn. Tôi có thể chạy giao tiếp trong quá trình, nó cung cấp đủ đẩy/kéo, pub/sub, req/rep, và các mẫu cặp/cặp mà tôi cần. Tôi đang tìm kiếm logic chặn trong mẫu pub/sub mà ZeroMQ không cung cấp (nó giảm tin nhắn thay vì khi hình mờ cao vượt quá), nhưng mẫu đẩy/kéo cung cấp khả năng chặn. Vì vậy, khá nhiều tất cả những gì tôi cần được cung cấp. Cái kẹp duy nhất tôi có là với sự hiểu biết của họ về xử lý sự kiện; việc thực hiện cấu trúc sự kiện thông qua thăm dò/ghép kênh không phải là rất thỏa đáng.

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