SORU
17 NİSAN 2011, Pazar


Aktörler kullanmak yerine Eclipse MQ ya Tıbco Randevous gibi mesajlaşma çözümleri?

Zaten soruyu okudum ve 0* *cevap.

Genellikle, kullandığımız mesajlaşma çözümleri olan var yıllarca zaten: ya bir JMS uygulama gibi Değişen MQ ya Apache ActiveMQ için kullanılan noktadan Noktaya iletişim veya Tıbco Sevgili çoklu Yayın mesajlaşma.

Çok sağlam, kanıtlanmış ve teklif yüksek kullanılabilirlik ve performans. Bununla birlikte, yapılandırma ve kurulum Akka edilenden çok daha karmaşık görünüyor.

Ne zaman ve neden söz konusu ürünler - Eclipse MQ ya ActiveMQ - şimdiye kadar başarıyla kullanılmakta olduğu bazı durumlarda kullanmak için Akka kullanmalıyım? Neden Eclipse MQ veya Tibco RV yerine Akka kullanarak gelecek projemde Dikkat Etmeliyim?

Ve ne zaman Akka kaçınmak gerekir? Diğer çözümleri de aynı yüksek kullanılabilirlik ve performans sunuyor mu? Ya da bu kötü bir fikir bile diğer mesajlaşma middlewares için Akka karşılaştırın.

Belki de JMS (noktadan Noktaya), TibcoRV (çoklu Yayın) ve Akka ayrıca dikkat etmeliyim hangi JVM ortamında ileti başka bir çözüm var mı?

CEVAP
22 EKİM 2012, PAZARTESİ


"Mesaj sistemleri (MQ) uygulamasında eski ama mühendislik daha yeni bir fikir: . "eski öncelikle ^em>işlem kalıcı sıralar. Scala Aktörler ve Akka yeni bir uygulama belki ama Aktörler eski eşzamanlılık modeli üzerine inşa edilmiştir.

İki model uygulamada her ikisi de olay iletisi çünkü çok benzer olmuyor ancak göre: RabbitMQ vs Akka cevabım bak.

Sadece JVM için kodunuz olacak Eğer Akka muhtemelen iyi bir seçimdir. Aksi takdirde RabbitMQ kullanırdım.

Ayrıca Scala eğer bir geliştirici iseniz, o zaman Akka bir no-brainer olmalıdır. Akka var ancak Java bağlamaları Java gibi çok değildir ve Scala tür sistemi sayesinde döküm gerektirir.

Ayrıca Java insanlara mesajlar için sana bunu tavsiye eden genellikle değişmez nesneler yapma. Yanlışlıkla ölçek etmeyecek Akka kullanarak Java çok kolay (iletiler için değişken nesneleri kullanarak, garip kapatılmasında geri devlete güvenmek) sonuç olarak. MQ bu mesajları her zaman, hızlı pahasına sıralanmış, çünkü bu bir sorun değil. Genellikle onlar Akka.

Akka da en iyi MQ daha tüketicilerin büyük miktarda ölçekler. Bu en MQ (JMS, AMQP) müşterileri için her sıraya bir bağlantı parçacığı... = = kalıcı olarak çalışan birçok konuları sıralar bir sürü böylece gerektirir çünkü. Bu ağırlıklı olarak istemci bir konu olmasına rağmen. Apollo ActiveMQ ileri sürülen AMQP için bu sorunu gideren engellenmeyen bir dağıtıcı olduğunu düşünüyorum. RabbitMQ istemci birden çok tüketiciler birleştirmek için izin veren kanallar vardır ama yine de tüketicilerin çok sayıda Olası kilitlenmeleri veya bağlantıları, bu yüzden genellikle daha fazla iş parçacığı bu sorunu önlemek için eklenir ölmesine neden olan sorunlar vardır.

O Akka's remoting oldukça yenidir ve muhtemelen hala güvenilir ileti ve kuyrukları sağlamak, geleneksel ileti garanti QoS (ama her gün değişiyor) teklif yok " dedi. Onun da genellikle peer-to-peer ama bence sunucu desteği-to-peer hangi genellikle ne en MQ sistemleri (yani tek nokta hatası) ama var MQ sistemleri peer-to-peer (RabbitMQ server-to-peer).

Sonunda RabbitMQ ve Akka aslında iyi bir çift olmuşlar.Özellikle RabbitMQ mesajları tüketimi kullanma ve yerel olarak mesaj (tek bir JVM) yönlendirme ile yardımcı olmadığından RabbitMQ için bir kapsayıcı Akka kullanabilirsiniz.

Seçim ne zaman Akka

  • Tüketicilerin çok sayıda (milyonlarca sanırım).
  • Düşük gecikme gerekir
  • Aktör eşzamanlılık modeli açık

Örnek sistem: etkileşimli Bir gerçek zamanlı Sohbet sistemi

Seçim ne zaman MQ

  • Farklı sistemleri bir sürü (yani olmayan JVM) ile entegre etmek gerekiyor
  • Mesaj güvenilirlik gecikme süresi daha önemli
  • Daha fazla araç ve admin UI ister
  • Çünkü önceki puan uzun görevler için daha iyi çalışıyor
  • Aktörler farklı eşzamanlılık modeli kullanmak istiyorum

Örnek sistem: planlanan işlem toplu işlem sistemi

DÜZENLE ilgili yoruma dayalı

OP de Akka ve Mesaj iletim işleyebilir dağıtılmış işleme ile ilgili bir varsayım yaptım. distributed Akka bahsediyordu düşündüm.Yerel eşzamanlılık için Akka kullanıyor portakal bir elma en ileti kuyrukları için karşılaştırma. İleti kuyruğu modeli yerel olarak Reactor kütüphane simple-react iki işi olan bir eşzamanlılık modeli (yani konu, kuyruklar, Borsalar) olarak uygulayabilirsiniz çünkü çoğu diyorum.

Sağ eşzamanlılık modeli toplama/kütüphane düşük gecikme uygulamalar için çok önemlidir. Bir ileti sırası gibi dağıtılmış işleme bir çözüm yönlendirme hemen hemen her zaman uygulama içinde daha açıkçası daha yavaş olan tel üzerinden yapılır, çünkü genellikle ideal değildir ve Akka üstün bir seçim olacaktır böylece. Ancak bazı özel MQ teknolojileri yönlendirme için yerel izin inanıyorum. Ayrıca sözünü ettiğim gibi, daha önce en MQ müşterilerine çok saçma hakkında parçacığı ve güvenmeyin engellenmeyen IO ve bir iş parçacığı bağlantısı/sıra/kanal... ironik bir biçimde engellenmeyen ıo değil her zaman düşük gecikme ama genellikle daha fazla kaynak verimli.

Gördüğünüz gibi konu dağıtılmış programlama ve eşzamanlı programlama oldukça geniş ve her gün değişen bu yüzden benim asıl niyeti olduğunu karıştırmayın ziyade odaklanmak tek bir alana dağıtılmış ileti işleme olan ne ben de OP oldu ile ilgili. Açısından bir eşzamanlılık belki odak aramalarda "reaktif" programlama (İHALE / dere) "yeni" ama benzer model oyuncu model ve ileti sırası modeli olan bu modeli olabilir genellikle kombine çünkü onlar olay tabanlı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Fuse

    Fuse

    21 Kasım 2005
  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • picster

    picster

    20 NİSAN 2006