N alt işlemlerini engelleyen bir Node.js işlemim (bir sunucu değil) var. Bir noktada 50'den fazla CP olabilir. Bu yüzden, process.send (IPC) gerçekten engelleniyorsa, bu durumun her CP tarafından büyük bir cezaya dönüşebileceğini düşünmeye başladım. Çünkü benim programımda olan şey, her CP'nin tek ebeveyn işlemine mesaj göndermek için process.send kullanmasıdır, böylece ebeveyn kayıt işlemini yapar, böylece kayıt senkronize edilir. Ancak, eğer process.send bir noktada engellerse, ana süreç bir darboğaz haline gelebilir. process.send senkronizasyon/async on * nix/Windows?
Yani soru edilir - node.js IPC engelliyor ya * nix ve Windows'u olmayan engelleme? Engelleme yapıyorsa ve ben ya da bir başkası gerçekten eşzamanlı olmayan IPC'yi istiyorsa, bir ileti sırası veya ZeroMQ kullanmalı mıyım? Süreç gönderme asenkron olarak ayarlandı
6
A
cevap
8
, bu libuv kod değişiklikleri nedeniyle https://github.com/nodejs/node/commit/56d9584a0ead78874ca9d4de2e55b41c4056e502
"`ChildProcess.prototype.send()` and `process.send()` used to operate
synchronously but became asynchronous in commit libuv/[email protected]"
bakınız; Bir kaç dezavantajı var ama eğer ana süreçte darboğaz haline gelmekten endişe ediyorsanız, bunun yerine iletişim için boruları kullanabilirsiniz.
50 CPler bir sorun olmayacak, ancak 500 mimarisi ve mesajların boyutuna bağlı olarak kısaltabilir. Bu noktada biraz daha süslü bir mesaj sırasını tavsiye ederim. ZeroMQ veya düz redis çalışması gerekir.
İlgili konular
- 1. Button on Ruby on Rails bozuk rota
- 2. "on" preventDefault
- 3. Statistics_norecompute = ON
- 4. On jQuery
- 5. Yakalanmamış TypeError: Nesne [object Object] 'on' yöntemi yoktur 'on'
- 6. vue.js reference div id on v-on: click
- 7. WeChat SDK on kol64
- 8. openJPA on Java SE
- 9. Post on Facebook
- 10. PostSharp on derlemeler
- 11. Gradle on Eclipse
- 12. Mono IDE on Windows
- 13. Memset on vector C++
- 14. on-değişim değeri
- 15. Ruby on Rails ilişkiler
- 16. Ruby on Rails
- 17. Çizim DrawingVisual on Canvas
- 18. WebViewJavascriptBridge on iOS
- 19. Spark executor on YARN
- 20. Jquery .on() çağrıyı seçmiyor
- 21. IPTV on Android
- 22. Ruby & Ruby on Rails
- 23. jquery on click methodları
- 24. Json on Android
- 25. JTransforms FFT on Image
- 26. textLabel.backgroundColor on UITableViewCell çalışmıyor
- 27. on GCMIntentService'denRegistered() hiç çağrılmadı
- 28. Ruby on Rails
- 29. difflib on Ruby
- 30. jQuery on() ve stopPropagation()
aslında, Github bağlantısını okursanız, process.send'in eşzamanlı değil senkronize olduğunu, iyi bir haber olduğunu belirtir –
"ChildProcess.prototype.send()" ve "process.send()" 'u eşzamanlı olarak çalıştırmak için kullanılır, ancak commit libuv/libuv @ 393c1c5'de eşzamansız hale gelir –