2013-02-24 25 views
7

App iletişim Ben katır internette araştırdı ve Uygulamalar kendi aralarında iletişim kurmak için anlamak zorundayız - Aynı Katır örneğinde dağıtılan bile - onlar da TCP, HTTP kullanmak zorunda olacak veya JMS aktarır.Katır İnter - Aynı örneği

VM desteklenmiyor.

Ancak bu ESB ilkelerine aykırı biraz bulabilirsiniz. İdeal olarak EndPoints'i ve ESB'yi tanımlayabilmeli ve herhangi bir Transport'u kullanarak buna bağlanabilmeli miyiz? Yanılıyor olabilirim. Ayrıca, tüm uygulamalar aynı JVM'yi paylaştığından, işlenmemiş bir HTTP protokolüne ya da bir kişinin yapabileceği bağlantı sayısının sunucu kaynaklarına bağımlı olduğu TCP'ye bağlı olarak bellek içi VM kuyruğu üzerinden iletişim kurabilmesini bekler. JMS için bile, başka bir kuyruğu tanımlamamız ve yönetmemiz ve performans üzerinde etkisi olabilecek ağır kullanımlar için ihtiyacımız var. Dağıtılmış ve kümelenmiş sistemlerimiz olup olmadığını kabul etsem de, HTTP veya JMS sadece seçenekler olabilir.

bir arası uygulama iletişim protokolü olarak VM dahil etmek uygulama planı var mıdır veya bir Akış başka Akış Endpoint ile ancak farklı bir uygulamada iletişim kurabilir başka yolu var mı?

DÜZENLEME: - Mulesoft http://forum.mulesoft.org/mulesoft/topics/concept_of_endpoint_and_inter_app_communication
Evet, gelecekteki bir sürüm için arası uygulama iletişimi hakkında düşünüyorsun Yanıt. Yine de yapacağımız zaman belli değil ama bu özelliğin nasıl davranmasını istediğimizle ilgili birkaç fikrimiz var. Tüm uygulamalarınızda kullanılacak kaynakları tanımlayabileceğiniz bir sunucu düzeyi yapılandırması oluşturabiliriz. Orada bir VM konektörü tanımlayabilir ve aynı sunucudaki uygulamalar arasında mesaj göndermek için kullanabilirsiniz. Dediğim gibi, bu sadece bir fikir. VM gelecekteki bir özelliği var ya etmezse arası uygulama iletişim olarak VM kullanımını İlişkin

cevap

2

, sadece MuleSoft cevap verebilir.

Ben ESB ilkesine aykırı olduğunu sanmıyorum. "Konteyner" özelliği David A Chappell'in "Kurumsal Servis Otobüsü book" bölüm 6'da oldukça iyi tanımlanmıştır. Kapsayıcı uygulamaları izole tutmak için en iyi şekilde denemelidir.

Bu, "bağımsız olarak konuşlandırılabilen tümleştirme hizmetleri" (aynı bölüm), daha kolay kümelenme ve diğer güzellikler gibi bazı avantajlar sağlayacaktır. Aynı VM uygulamalar arası iletişimlere farklı sunucularda yerleştirilen uygulamalar arasındaymış gibi davranmalısınız.

+0

Teşekkür Victor. Uygulamaların dağıtılmış halde tutulması gerektiğini kabul ediyorum. Ancak son noktalardan erişilebilir olmalıdır. Şu anda Mule'de gördüklerimiz, JVM'deki istekleri taşıyacak olan HTTP ya da AMQ gibi harici bir MoM'ye güvenmek zorunda olan aynı JVM üzerindeki Uygulamalar arasında iletişim kurabilmektir. Bu benim bir yük olarak hissettim. Aynı JVM'de dağıtılan bir uygulama, sanal makine kullanarak başka bir uygulama ile sorunsuz bir şekilde iletişim kurabilmelidir. Hala yalıtılmışlar ama gerektiğinde mantıklı bir şekilde bütünleştiriliyorlar. Yanlış olduğunu bildirirseniz lütfen beni düzeltin. – Soumya

+0

Bu yaklaşımdaki sorun, kümelenmenin doğal olarak devre dışı bırakılmış olmasıdır. Bunu yasaklayan tasarımın var. İyi bir yaklaşım, Mule Enterprise Edition VM'yi (bugün, Virtual Machine taşımasında değil, Bellek aktarımında olduğu için bugün olduğu gibi korkunç bir isme sahip olan) yalnızca vm uygulamalarında değil, aynı zamanda küme (bkz. [güvenilirlik kalıbı] (http://www.mulesoft.org/documentation/display/current/Reliability+Patterns)). –

+0

Topluluk veya kuruluş kullanıyor musunuz? EE kullanmıyorsanız, [DevKit] (http://www.mulesoft.org/documentation/display/current/Mule+) kullanarak VM'de iletişim kurmak için paylaşılan statik ConcurrentLinkedQueue'dan yararlanan bir aktarım yazmak zor olmamalıdır. DevKit). Hızlı yerel ve kümelenmiş iletişim için redis, hornetq veya bazı paylaşılan bellek sistemini kullanmayı tercih ederim. –

İlgili konular