Performans ZeroMQ, RabbitMQ ve Apache Qpid arasında karşılaştırma
*, RabbitMQ
*0 ve Apache Qpid
performansını değerlendiriyorum çok yüksek performanslı bir mesaj başvurum için otobüs lazım. Performansını ölçmek için, mesajın bir sıra uygulamaları kullanarak ve aynı makine başka bir işlem çalışan bu 10.000 mesaj tüketmek için 10.000 iletileri söyle yayınlayan bir test programı çalıştırıyorum. O zaman ben ilk kez mesaj yayınlandı ve son alınan mesaj arasında fark kaydeder.
Aşağıda karşılaştırma için kullanılan ayarlar.
RabbitMQ
: "" yazın ve varsayılan yapılandırma ile bir sıra değişimi. ikiye bölme özelliğini kullandım Bu RabbitMQ C istemci Kütüphanesi kullandım.ZeroMQ
: yayıncım publisestcp://localhost:port1
ZMQ_PUSH
yuva, Benim komisyoncu dinlertcp://localhost:port1
ve yeniden gönderir mesajı tcp://localhost:noktası2 ve benim tüketici dinlertcp://localhost:port2
ZMQ_PULL
yuva. Bir komisyoncu yerine eşler arası iletişim eşlerZeroMQ
performans karşılaştırma broker kullanan diğer ileti sıra uygulama için adil yapmak için kullanıyorum.Qpid
C mesaj komisyoncu: "" yazın ve varsayılan yapılandırma ile bir sıra değişimi. ikiye bölme özelliğini kullandım Bu Qpid C istemci Kütüphanesi kullandım.
Aşağıdaki performans sonucu:
RabbitMQ
: 10,000 mesajları almak için yaklaşık 1 saniye sürer.ZeroMQ
: 15 milli saniye 10,000 mesajlarını alır.Qpid
: 10,000 mesajları almak için yaklaşık 4 saniye sürer.
Soru:
- Kimseye mesaj kuyrukları arasında benzer performans karşılaştırma çalıştırmak? O zaman senin ile benim sonuçlar karşılaştırmak gibi.
RabbitMQ
Qpid
daha iyi performans için ayarlama şansım var mı?
Not:
Testler iki ayrılmış işlemci ile sanal bir makine üzerinde yapıldı. Sonuç farklı bir donanım, ancak MQ ürünlerin göreli performans esas ilgilendiğim için değişebilir.
CEVAP
RabbitMQ muhtemelen bu mesajları üzerinde kalıcılık yapıyor. Mesaj önceliği veya mesaj ısrar yapmak için başka bir seçeneği ayarlamanız gerekir bence. Performans 10x sonra da artıracak. AMQP bir komisyoncu ile ikinci en az 100 mesaj alamazsınız. OpenAMQ performans için 300K mesaj/saniye var.
AMQPolduhız için tasarlanmış (örneğin rota için iletileri açmak değil) ama ZeroMQ sadece daha iyi şekilde tasarlanmıştır. E. g. bir komisyoncu olmadan düğümleri bağlayarak bir hop kaldırır; daha iyi AMQP client yığınları daha I/O; daha agresif mesaj harmanlama yapar zaman uyumsuz yapar. Belki de zaman geçirdim bina ZeroMQ 60% performans ayarlama girdi. Çok zor bir işti. Daha hızlı kazara değil.
Yapmak isterdim ama çok meşgulüm, bir şey ZeroMQ üstüne AMQP gibi bir komisyoncu yeniden oluşturmaktır. İlk katman vardır: http://rfc.zeromq.org/spec:15. Bütün biraz taşıma ve anlambilim iki kat ayrılır ile RestMS gibi olur yığını. AMQP/0.9.1 (ve anlamsal birlikte) ama önemli ölçüde daha hızlı olarak aynı işlevselliği sağlar.
Java XPath (Apache JAXP uygulama) perf...
Javac ve hata ayıklama arasında perfor...
Döngü için bir Ve için-her döngü arası...
JAY ekran kartı arasında karşılaştırma...
Ben ve C arasında performans farkı var...