2010-07-07 10 views
12

Netty/NIO tabanlı bir hizmet kuruyoruz ve bu hizmetin üretim ortamımıza dağıtılmasını düşünüyorum. Hizmetlerimizi dağıtmanın standart yolumuz, Tomcats'ın içine yerleştirilecek olan SAVAŞLAR'dır.Tomcat içinde bir Netty Server'a ev sahipliği yapmak uygun/istenebilir mi?

Burada aynı yaklaşımı önerdiğimde, "Neler yapılmaması gerektiğine" dair söylentiler ve şikayetler aldım, çünkü hem Netty hem de Tomcat sunucuları ve "bir sunucuda başka bir sunucu barındırmak anlamsız" .

Benim için mükemmel bir anlam ifade ediyor, çünkü dağıtım sorunumu tamamen çözüyor, aynı zamanda başka bir kod yazmamı da sağlıyor. Neden bu kadar büyük "hayır hayır"?

+0

"Dağıtım sorununuz" ile "diğer bazı kodları yazmam için beni kurtardınız" konusunda daha spesifik olabilir misiniz? –

+0

@Romain - Operasyonlarımızda, insanlara WARS alıp onları çeşitli tomcatslara yerleştirmek, onları durdurmak/başlatmak/başlatmak için bir betik var. Eğer bir Tomcat'ta değil, bağımsız bir jar olarak barındırıyorsam, o zaman bu betikler ayarlanması gerekiyor. "Diğer kod", servis yöntemini HTTP üzerinden ifşa etmekteydi. Bunu, standart HTTP sunucu uygulaması aracılığıyla yapmak için kodumuz var, şimdi yeniden kullanmamız gerekecek. Soru şu ki - sadece bir Tomcat’ta barındırmada neyin var? – ripper234

+0

Bir SAVAŞI yeniden yerleştirmenin nesi yanlış? Yarar, gerekirse birleştirilmiş bir kod parçanıza sahip olmanızdır. –

cevap

16

Tomcat'in sağladığı dinamik WAR dağıtımı ve çözümü, web uygulamaları için tasarlanmıştır. Tomcat'e dağıtmaya çalıştığınız Netty uygulaması bir web uygulaması değil, yalnızca VM belleğini paylaşan ayrı bir sunucudur. Bu Tomcat'in OSGi gibi genel bir mikrokernele dönüştürüldüğü anlamına geliyor. Ancak, bunun büyük bir sorun olduğunu düşünmüyorum. Şirketiniz, standart dağıtım mekanizması olarak WAR kullanıyor olduğundan, yeniden kullanmak iyi bir fikir olabilir. Tomcat zaten bunları sağladığı için uzaktan kapatma gibi bazı yönetim işlevlerini bile yazmanıza gerek yoktur. Yapmanız gereken tek şey, dağıtımın yapılmadığı zamanlarda tüm kaynakların boşaltıldığından emin olmaktır.

Bazı insanlar bu yaklaşımı beğenmeyebilir. İdeal olarak, Tomcat'in bir modül olarak konuşlandırıldığı ve mikrokernel'in Tomcat'in yerine doğrudan SAVAŞI yönettiği herhangi bir uygulamayı (aka microkernel) dağıtmak ve yönetmek için ortak bir altyapı olmalıdır. Ama bu gitmek için uzun bir yol.

+2

Yeni şirket standardımız bir savaş olarak dağıtmak ve neredeyse her uygulama bizim özel protokolümüz için netty veya Mina kullanıyor. Sadece kapatma işlemine dikkat etmelisin, ama şu ana kadar büyük bir sorun yok. Şimdi eğer netty, bahar mvc için servlet yapabilirse, hepimiz hazır olurduk. – Jason

1

Tomcat'ta hiçbir şey başlatmayın, bu çok rahatsız edici ve bunun birçok acı sorunu var. Tomcat'ı (veya Jetty) uygulamanıza gömün ve uygulamanızı sade bir java süreci olarak çalıştırın.

+0

Bu yaklaşımı üretimde birkaç kez kullandım ve işe yarıyor. Maraen ve jenkins ile daha da eğlenceli. – miloxe

7

Müthiş bir anlam ifade eder. Aslında Tomcat'ta bir Java e-posta sunucusu çalıştırıyoruz.

  • Tomcat (eğer :) hazırda bekletme kullanmadığınız sürece) sıcak dağıtım verir

    1. Daemon komut zaten sizin için yazılır:

      Tomcat konut için başvuruda bazı büyük avantajları vardır

    2. Bir noktada, bir kullanıcı arabirimi veya Admin API'sine gereksiniminiz olabilir
    3. Tomcat'ı izlemek için çok sayıda araç ve uygulamanızın ücretsiz izlenmesi anlamına gelir.

    Artık, Netty, Mina veya herhangi bir olay odaklı ağ teknolojisiyle, çoğu MVC çerçevesini kullanamayacaksınız. Aslında çoğu Java kurumsal çerçevesini kullanamazsınız çünkü pek çok şey istek başına bir iş parçacığına dayanır (işlemler, güvenlik, vb ...).

  • İlgili konular