2012-03-05 17 views
7

RabbitMQ üzerinden mesaj aktarımlarını nasıl hızlandıracağınıza dair fikirler arıyorum. RabbitMQ aktarım hızları hızlanıyor mu?

ben de yayınlamak ve bir C# uygulaması yoluyla/dan tüketmek hangi benim yerel makinede bir sunucu çalışan Windows 64 bit son sürümünün yüklü. Başlangıçta etkileyici ama (ben saniyede 24 milyon çözümlenmemiş 16 bayt büyük bayt dizileri işleyebilir özel ikili okuyucu ile rekabet benim ihtiyaçlarına uygun olmadığı saniyede 40,000 mesajlar maxed; açıkçası yakın olduğu için almak için beklemeyin ama En azından geliştirmeye çalışıyorum). Mümkün olduğunca hızlı bir şekilde 115.000.000 mesaj göndermem gerekiyor. Verileri sürdürmek istemiyorum ve bağlantı tek bir tüketiciye doğrudan olacak. Daha sonra 16b bayt dizilerimin parçalarını oluşturdum ve herhangi bir gelişme olmadan otobüse bastım. Aktarım hızı 45 mb/sn'de maks. Ben bayt dizileri değişimi yoluyla yönlendirme etkinliği oranı ham iletim hızı vs önemsiz hale gelir birkaç megabayt boyutu yaratabilecek çünkü sonunda sadece aşağı ham iletim hızına kaynatın gerektiğini göz önüne alındığında bu çok çok yavaş buluyorum. Mesaj veriyolum neden 45 mb/saniye aktarım hızında çıkıyor?

+0

, neden TCP üzerinden doğrudan gönderemiyorum? Gerçekten bir mesaj otobüsüne ihtiyacınız yok. –

+0

Bu testler sırasında IO'nuz (ağ, disk) ve CPU'nuz nasıl görünür? – Xailor

+0

Muhtemelen tavşanmq yerine zeromq'a bakmalısınız. Göreviniz 0mq için uygun gibi görünüyor. En azından, bu ileti boyutu için saniyede yaklaşık 3_000_000 ileti olduğunu iddia ediyorlar (16 bayt). http://www.zeromq.org/results:0mq-tests-v03 –

cevap

1

Bump ... ve Güncelleme: daha uzun bir sürede bu soruya herhangi bir cevap görmedim. RabbitMQ geliştiricisinin tek başına uğraşmadığı için biraz şaşırdım. RabbitMQ ve ZeroMQ ile yoğun bir şekilde oynadım. Yüksek verimlilikteki mesajlaşma çözümlerine bakarken RabbitMQ'nun işe yaramadığına karar verdim. Komisyoncu uygulaması ve özellikle ayrıştırma mantığı, iş hacmini iyileştirmek için büyük bir darboğazdır. RabbitMQ'yu olası seçenekler listemden düşürdüm.

Düşük gecikme, yüksek iş akışı seçenekleri finansal veri akışlarını yönetme konusunda bir çözüm sağladıklarını açıklayan bir beyaz belge vardı, ancak tüm yaptıklarım, düşük gecikmeyi hedefleyen bir çözüm sağlamak yerine, ona donanım atmak olduğunu söylüyordu. yüksek verimlilik gereksinimleri. Ben daha yoğun belgelerine okudu sonra

ZeroMQ, mükemmel bir iş yaptı. İletişim sürecini çalıştırabilirim, ihtiyaç duyduğum kadar yeterli itme/çekme, pub/sub, req/rep ve pair/pair modelleri sağlar. ZeroMQ'nun sağlanmadığı pub/alt kalıp içinde mantığı engellemek için çalışıyordum (yüksek bir filigranı aştığında mesajları düşürüyor), ancak itme/çekme kalıbı engelleme sağlıyor. Yani, neredeyse tüm ihtiyacım olan şey sağlandı. Sahip olduğum tek sorun, olay işleme anlayışları; Anket yapısının anket/çoklayıcı ile uygulanması tatmin edici değildir. Sadece 1 tüketici varsa