Akka JMS / AMQP Message Brokers'ı geride bırakıyor mu? [kapalı]


19

Geçen hafta Akka belgelerine derinlemesine dalış yaparak geçirdim ve sonunda aktör sistemlerinin ne olduğunu ve çözdüklerini anladım .

Benim anlayış (ve birlikte deneyim) geleneksel JMS / AMQP mesaj simsarlarının onlar aşağıdakileri sağlamak için var olmasıdır:

  • Üretici ve tüketici arasında eşzamansız işleme; ve
  • İleti teslimat garantisi, kalıcılık, yeniden deneme ve geri dönüşler dahil

Ancak Akka, gerekli tüm altyapı ve operasyonel yükü olmadan bunu sağlamıyor mu?

  • Akka'da tüm Aktör iletişimi eşzamansızdır ve engellemez; ve
  • Akka'da, SupervisorStrategiesyeniden deneme, geri dönüş ve tırmanmayı başarmak için var. Aktörler, bu da bir gereklilikse, hemen hemen her türlü mağazaya devam edecek şekilde yapılandırılabilir .

Merak ediyorum: Uygulamam Akka kullanıyorsa, resme JMS / AMQP brokerlerini (örneğin ActiveMQ, RabbitMQ, Kafka) getirmem gerekiyor mu? Başka bir deyişle, yeni bir Akka tabanlı uygulamanın yeni bir JMS / AMQP aracı kümesinin kullanılmasını gerektireceği bir kullanım durumu var mı? Neden ya da neden olmasın?

Tek argüman, belki de Akka uygulamamın başka bir sistemle entegre olması gerektiğidir. Ancak bu durumda, Akka-Camel modülü, Akka'nın Devel'in kapsamlı, neredeyse sonsuz entegrasyon özellikleri listesine girmesine izin verir (TCP, FTP, ZeroMQ, liste uzayıp uzar ...).

Düşünceler?


3
Son paragrafınız Akka'nın mesaj simsarlarını modası geçmemesinin bir nedeni değil mi? Örneğin, JMS uyumlu bir ileti aracısı aracılığıyla uzak C ++ uygulamalarıyla etkileşime giren bir Java uygulaması üzerinde çalışıyorum. Java uygulamamı Akka-Camel kullanarak yazabilirdim, ancak yine de C ++ uygulaması nedeniyle aracıya ihtiyacım var.
Thomas Owens

Ahhh teşekkürler @ThomasOwens (+1) ama sorumu (haklı olarak) yanlış anladın. Birkaç dakika içinde ifadeyi değiştireceğim, böylece daha açık olacak. Gerçekten sorduğum şey: Bir Akka uygulaması oluşturuyorsam, yeni bir JMS / AMQP brokeri de tanıtmam gerekir mi? Bence cevap "hayır", çünkü Akka + Deve (yine sanırım ) genellikle bir broker tarafından çözülen tüm sorunları çözer. Örneğinizde, JMS aracısı zaten C ++ uygulamasıyla iletişim kurmanın bir yolu olarak var ; Yeni Akka uygulamamla birlikte eklemiyorum. Ve böylece Akka-Camel modülü benim için mesajlaşmayla ilgilenecek.
smeeb

2
Belki yanlış anlıyorum, ancak Camel JMS'nin yerini almıyor (örneğin), ancak JMS aracılığıyla mesaj göndermek için kullanılabilecek bir arayüz sağlıyor. JMS'yi AMQP, RabbitMQ veya XMPP ile değiştirebilirsiniz. Örneğimde, Java + Akka ve C ++ uygulamalarım JMS üzerinden iletişim kurabilmeleri için yepyeni olsa bile, yine de bir çeşit JMS uyumlu mesaj kuyruğu tanıtmam gerekiyor ve ardından Akka-Camel'i kullanabilirim onunla iletişim kurmak. Deve bir komisyoncu sağlamaz, sadece birkaç protokol içinde iletişim kurmak için araçlar sağlar. Akka-Camel, Camel'in arayüzü üzerinden daha tanıdık bir arayüz sağlar.
Thomas Owens

Tekrar teşekkürler @ThomasOwens (+1) - Sanırım bunu çok düşünüyorsun :-). Örneğin, mevcut bir C ++ uygulaması var - belki de bazı eski sistem ve C ++ uygulamasının dış dünyayla entegrasyon için halihazırda kullandığı mevcut JMS uyumlu bir aracı var . Bu durumda, yeni Akka uygulamam - tıpkı sizin de söylediğin gibi - bu aracıya mesaj göndermek / almak için Akka-Camel modülünü kullanır. Ama burada istediğim bu değil! 2 şey inşa etmem gerekecek bir neden olup olmadığını merak ediyorum : (1) yeni Akka uygulamam ve (2) aynı zamanda bir JMS / AMQP brokeri ...
smeeb

3
Camel'in sonsuz entegrasyon yeteneklerinden bahsediyorsunuz, ancak Hiçbir Şey ile entegre olamaz. Entegrasyonu için bir şey olması gerekiyor, aksi takdirde çalışmadığınız bir grup hizmet için destek alıyorsunuz. Bir şeyle entegre etmek için Camel'i kullanmak istiyorsanız JMS'yi, HTTP veya FTP sunucusunu veya başka bir şeyi başlatın. Aksi takdirde, hiçbir şeyle bütünleşmezken sonsuz bir şekilde mükemmel entegrasyon özellikleri sağlar.
Jimmy Hoffa

Yanıtlar:


12

Aktör Modeli

Aktör modeli, birçok eşzamanlı hesaplama ve durumsal işlemeyi gerçekleştiren uygulamalar oluşturmak için bilgisayar bilimi stratejisidir. Tek strateji değil, aynı zamanda hesaplamayı her seferinde ve sırayla işledikleri mesajlarla iletişim kuran aktörlere taşıyan çok iyi test edilmiş, basit ve güvenilir bir yaklaşım .

Akka, aktör modelini uygulayan ve önceden oluşturulmuş tüm altyapı ve özelliklerle (javascript yerine JQuery kullanmak gibi) aktör sistemleri oluşturmanıza izin veren bir çerçevedir.

Mesajlaşma

Mesaj sistemleri, mesaj gönderip alabilen uygulamalardır. Temel kuyruklardan konular, pub / sub, sebat ve diğer özelliklerle büyük kurumsal yazılımlara kadar birçok çeşit vardır, ancak nihai hedef aynıdır. Bazı baytları bir yere kaydedin ve daha sonra bir tür siparişle tekrar alın. Bugün birincil kullanım durumu, sistemleri ayırmak ve farklı zamanlamalarda veya hızlarda eşzamansız işlemeye izin vermektir. RabbitMQ, NATS, Kafka vb. Mesaj sistemlerinin örnekleridir.

karşılaştırma

Aktör modeli ve Akka çerçevesi, mesaj kuyrukları gibi uygulamalar oluşturmanın harika bir yolu olan düşük düzey araçlardır .

Mesaj kuyruğu yerine Akka'yı kullanabilir misiniz? Elbette. Aktör modelini zaten kullanan bir yazılım oluşturuyorsanız, özellikle aynı iş parçacığı veya uygulama içinde mesaj göndermek için muhtemelen harici bir mesaj kuyruğuna ihtiyacınız yoktur. Akka Remoting yeteneklerini, diğer makinelerde çalışan diğer aktör sistemlerine bile mesaj göndermek için kullanabilirsiniz.

Ancak, bu mesajlaşma sistemlerini geçersiz kılıyor mu? Kesinlikle hayır. Tüm bunları kendiniz kodlayabilmeniz, özellikle bir aktör modeli sorununuz için iyi olmadığında veya iletişim kurmak için farklı diller, uygulamalar, harici API'ler, işletim sistemleri, veritabanları vb. birbirleriyle (aktör sistemleri olsun ya da olmasın).

Bazı mesajları iki sistem arasında geçirmeniz gerekiyorsa, bir mesaj kuyruğu kullanın. Aynı uygulamada ölçeklendirilebilir durum bilgisi gerektiren işleme ve düşük gecikmeli mesajlaşmaya ihtiyacınız varsa aktör modelini kullanın. Her ikisi de tamamen farklı seviyelerde bulunur ve bunları nasıl kullandığınız, oluşturduğunuz çözüme bağlıdır.


Aynı aktör modeli hakkında mesajlaşmaya karşı SO hakkında harika bir cevap var: /programming/5693346/when-to-use-actors-instead-of-messaging-solutions-such-as-websphere-mq- ya da tibco

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.