2016-03-24 36 views
5

Şirketimizde ilkbahar, önyükleme, bahar bulutu vb. Kullanıyoruz. Bu altyapıdan memnunuz, ama hala bazı endişelerim var: dinlenme ve iletişim protokolü olarak kullanıyoruz. eğer onu harika bulursam, daha iyi bir şey bulabileceğimizi düşünüyorum. Geri kalanı ile:Microservices arasındaki iletişim nasıl geliştirilir

bir istemci ve bir sunucu (restcontroller) kullanmak gerekir
  • sunucuyu URI bilmemiz gerekir
  • , sen parametreler nereye bilmek gerek http yöntemi (POST, GET, PUT,...)
  • (beden, querystring)
  • ....

Eğer biz RMI gibi bir şey olsaydı daha kolay olurdu düşünmüyor musunuz? Oldukça eski bir teknoloji olduğunu biliyorum (ve bu dilden bağımsız değil), ama hayatı kolaylaştırdı (sadece bir arayüze ve uygulamasına ihtiyacınız var).

Etrafında arama yaparak, feign müşteriler veya bahar bulutu akışı gibi bazı ilginç projeler buldum, ancak bunların hiçbiri gümüş mermi gibi görünmüyor.

Bu konu hakkında ne düşünüyorsunuz? Bu senin hissettiğin bir problem mi? Eğer öyleyse, ona nasıl yaklaşırsınız?

Şimdiden teşekkürler.

cevap

0

Spring Cloud Netflix and Eureka Service Discovery ve Client-Side Load Balancing with Ribbon olarak kullanabilirsiniz.

Bunların yardımıyla, servis yerleri yerine “servis adları” ile mikro servisler arasında iletişim kurabilirsiniz.

this demo'a bakın. İstenmeyen mikro servis iletişimleri için ÇOK FAZLA OLMALIDIR.

Burada, aralarında iletişim için 2 basit microservices ve Discovery Service var.

+0

evet bunları kullanıyoruz. Ancak, onlarla birlikte URI keşif sorununu çözüyoruz (ve dengeliyor) Ayrıca, konfigürasyonu yönetmek için spring cloud config sunucusunu kullanıyoruz. Ama hala tüm bu teknolojilerle bile istirahat bir istemci/sunucu yazmak oldukça pahalı olduğunu düşünüyorum. Dinlenme, sahip olduğumuz en iyi çözüm mü? Kullanması daha kolay bir şey yok mu? – Pirulino

1

Microservices sıkı bir şekilde eşleşmesi gerektiği anlamına gelmez, RMI kodunuzu her iki ucunda da gerektirir, yani diğer tarafı kontrol etmediğinizde eğlenceliydi, örneğin yükseltmek istemeyen istemciler B! @ *! güvenlik duvarlarından geçmek.

Sabun, maalesef bahsettiğiniz şeylerin çoğunu çözdü. Java'nın hiç iyi bir Sabun yığını olmadı. Rest, özellikle bir web sayfası ve javascript'ten hizmete erişirken başka avantajlara da sahip.

3

Şirketimde, mikro hizmet tablomuza "intern" iletişim yığını eklemek için JMS'yi kullanıyoruz. Güvenilir, kullanımı basit, verimli ve çok performanslı.

Uygulama olarak Apache ActiveMQ kullanıyoruz, ancak RabbitMQ da yaygın olarak kullanılıyor.

+0

Bu benim aradığım şey. Biz de rabbitMQ kullanıyoruz ve çok güzel bir RPC uygulaması var (http://docs.spring.io/spring-amqp/reference/htmlsingle/#_message_correlation_with_a_reply_queue) ama daha iyi bir çözüm olup olmadığını anlamaya çalışıyordum. Bu http://www.grpc.io/ gördünüz mü? – Pirulino

+0

Bunu bir RPC aracı olarak değil, bir ileti değişimi olarak kullanmayız (JMS'nin ana hedefi). RPC araçları genellikle birçok soruya cevap vermez JMS şunları yapar: ağ geçici olarak kapalı olduğunda ne olur? Bir örneği ele almak istiyorsan ne olur? Bütün örnekler? Belirli bir sınıf veya örnek türü? JMS ile tüm bu kullanım durumlarını ele almak çok kolay, ben RPC araçları ile kolayca yapabilirsiniz değil. JPC'yi JMS üzerinden yapabilirsiniz, ancak uygulamayı mesaj odaklı bir uygulama olarak tasarlamanın daha kolay olabileceğini düşünüyorum. –

+0

Aynı zamanda [akka] (http://akka.io/) 'a da bakabilirsiniz, ayrıca mesaj odaklı uygulamayı tasarlamak için de iyi bir araçtır ve bu kullanım için yaygın olarak kullanılır (dahili mikro iletişim iletişimi) –

İlgili konular