2011-09-05 23 views
5

Uzun süredir devam eden bir görevi ele almanın en iyi yolunun Node.js. Görünüşe göre Node.js'de uzun süren bir işlem yapmak iyi bir fikir değil çünkü düğümün tek dişli yapısı. Elbette fikri hiç web sunucusu yavaşlatmak getirmemektirUzun çalışma için hiç RabbitMQ ve Node.js kullanın.

Node.js Web Server <--> RabbitMQ <--> Node.js Backend Worker 

: Ben aradaki tavşan iki düğüm sunucularını sahip düşünüyordum bu yüzden

Ben RabbitMQ büyük bir hayranıyım. Normalde arka uç sunucusunu Java ile değiştirirdim ama tüm JS'yi tutmaya çalışıyorum.

Ben bu iyi bir fikir ya da hatta mümkün ise emin değilim bu yüzden bir Düğüm programcı değilim? Böyle bir şey deneyen var mı?

Size "Uzun süren süreci" ile ne demek bağlıdır
+0

Sadece arka uç çalışanı Java'yı yapıyorum ama yine de öndeki düğüm ve ortasında tavşan var. –

cevap

0

- node.js engellemek için, tek seferde hesaplama sürü yapmak zorundayız. G/Ç işlemi yapmak (kabaca, geri arama argümanını alan bir şeyi çağırmak) olay döngüsüne yol açacaktır.

çoğunlukla I/O'yu içermeyen tek bir web sitesinde yapacağını tartışmasız az şey vardır. Örneğin, bir veritabanına konuşmak - I/O. Dosya sisteminden bir şablon okuma - G/Ç. (Veritabanından veri içeren bir şablonun çalıştırılması - tamam, G/Ç değil. Muhtemelen çok pahalı değil.)

Şemada olduğu gibi iki Node.JS işleminiz varsa, her bir istemciye yanıt verilir. Yine de her zaman olduğu kadar uzun sürecek (I/O zaman artı hesaplama zamanı). Ancak, gelen talepleri serileştirmeyeceğinizden daha iyi bir iş çıktısı alabilirsiniz. Öte yandan, talepler sadece RabbitMQ'da yedeklenerek daha yüksek veriminizi daha yüksek gecikme haline getirebilir.

Ayrıca, istekleri daha hızlı bir şekilde almak için bir arka uç çalışanından/daha fazlasını/daha fazlasını çalıştırma fırsatınız da olur. İşi sadece web sunucusunda yapmak, ancak bir grup web sunucusu işlemi yürütmek ve sözde nginx ile yük dengeleme yapmak benzer bir etkiye sahip olacaktır.

+1

Uzun vadede çalışmayı kastettiğimde, toplu alım veya işlemeyi en az birkaç dakikayı birkaç saate çıkaracak demek istiyorum. Bunlar, normal bir kullanıcı talebi tarafından zorunlu olarak başlatılan süreçler değildir. Bence Java daha iyi bir seçenek çünkü: Gerçekten çok iyi biliyorum :), Hadoop ve Java su basarken JVM bu konuda iyi bir şey. RabbitMQ'yi beğendim çünkü daha rahat hissettiğimde daha sonra tekrar NodeJS'e geçebiliyorum. –

İlgili konular