2013-08-02 9 views
10

Hem G/Ç ağır hem de CPU ağır görevleri için doğru bir web teknolojisi seçmeye çalışıyorum. NodeJs büyük yükü taşımak için mükemmeldir ve aynı zamanda ölçeklendirilebilir. Ancak, cpu ağır kısmı ile sıkışmış. Başka bir teknolojiyi (ör. Java) düğüme entegre etmek mümkün, böylece algoritmalarımı diğer iş parçacıklarında çalıştırmam ve sonra sonuçları düğümde tekrar kullanabileceğim. Mevcut bir çözüm var mı? Diğer öneriler çok iyi olacak.Java ağır CPU görevleri ile çalışmak için nodejs ile nasıl entegre edilir?

+2

Yapılması en kolay şey test etmek ve çeşitli teknolojilerin gereksinimlerinize göre nasıl performans gösterdiğini görmek. Ayrıca, altyapının 10 yıl önce olduğu kadar pahalı olmadığını da unutmayın. Yüklemeyi desteklemek için yeni sunucu örneklerini spinnning, bu günlerde önemsiz. –

+1

Neden cpu ağır JS kodunu başka bir iş parçacığıyla dışarıdan yükleyebildiğiniz için başka bir teknoloji seçmelisiniz? Konulara göz atın-a-gogo https://github.com/xk/node-threads-a-gogo ve diğer nodejs threading tools :) – randunel

+0

Çok teşekkürler, nodejs threading araçları aradığım şey gibi görünüyor. Bunu kesinlikle deneyeceğim. :) –

cevap

11

NodeJS'i Java ile node-java kullanarak iç içe geçebilirsiniz.

+0

Çok teşekkürler, bunu da deneyeceğim. –

2

Önceki bir yanıtta belirtildiği gibi, Java ile konuşabilen bir npm modülü olan node-java'yı kullanabilirsiniz. Ayrıca, Java kütüphanesi olarak Node.js'yi saran ve Java'da bir Node.js API'si sağlayan J2V8'u da kullanabilirsiniz.

+1

Cevabınız için teşekkürler. Soru 3 yıl önce sorulmuştur. Güncel Sonuç: (dağıtılmış bir çözüm olarak) tavşan mq ya kafka gibi mesaj simsarlarının aslında entegrasyonlar bu tür yapıyor önlemek için yardımcı olabilir. Ayrıca, hesaplama ağır işler, apache kıvılcımı gibi özel modüllere verilebilir. Genelde, bu aşamada, lambda mimarisi inandığım sorunun cevabıdır. –

0

Yanıt, lambda architecture.

NodeJs kendi başına faydalıdır - hızlı sorguları hafif bir şekilde ele alır, verilerde ekstra hesaplamalar yapmaz.

İşlemcinin ağır görevleri, JVM'ye dayanan özel bileşenlere kolayca aktarılabilir (en iyi olanlar JVM üzerindedir). Bu mesaj brokerleri ve microservices kullanarak güzel uygulanmaktadır.

Düğümlerin Cassandra ya da Mongodb gibi veritabanlarına bağlanabileceği ve Apache Spark gibi küme hesaplama çerçevelerine bağlanabilecek olay temelli bir mimari (zorunlu olsa da, sorunun kaynağı da buna bağlı olarak). sistemi. Ve hafif kaplar, içinde yaşamak için bileşenlerin her biri için güzel izole edilmiş çalışma zamanı ortamları sağlayarak pastayı kremaya ekler. Bu soruya şu ana kadarki sonuç şu: Bu soruyla ilgili şu ana kadarki sonucum var. Yukarıdaki önerilerin, cpu-ağır görevler için java veya başka bir JVM tabanlı çözüm altında düğümü sarma gereksinimini ortadan kaldırdığını düşünüyorum.

İlgili konular