Node.js a multiplexed IO obecně

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Node.js a multiplexed IO obecně
« Odpověď #180 kdy: 07. 05. 2017, 23:38:38 »
Hodim sem takovou otázku ohledně Node.JS. Pokud vim, zpracovávaj se všechny požadavky v jednom vlákně. Co se tedy stane, když najednou server dostane obrovský množství požadavků. Moje představa je taková, že u prvního požadavku zpracuje např. jeden příkaz, pak jde k druhýmu.. a postupně je všechny obejde a jde zpracovávat druhej příkaz u všech. když bude takhle obsluhovat třeba X požadavků - OK, ale až jich bude 100× víc, v tu chvíli se to musí všechny požadavky zpracovávat pomalejš, ne? Nebo se to prostě řeší limitem, kolik se jich může zpracovávat současně?
Ne, vždy se jede až k dalšímu callbacku. Typicky jsou u spojení timeouty, když se server přetíží, nevyřídí všechny požadavky. Většina zde moc nechápe, jak node.js funguje. Muliplexování na jedno vlákno je hovadina, správně by se mělo použít něco jako GCD ve spojení s NIO.


gll

Re:Node.js a multiplexed IO obecně
« Odpověď #181 kdy: 07. 05. 2017, 23:48:46 »
Hodim sem takovou otázku ohledně Node.JS. Pokud vim, zpracovávaj se všechny požadavky v jednom vlákně. Co se tedy stane, když najednou server dostane obrovský množství požadavků. Moje představa je taková, že u prvního požadavku zpracuje např. jeden příkaz, pak jde k druhýmu.. a postupně je všechny obejde a jde zpracovávat druhej příkaz u všech. když bude takhle obsluhovat třeba X požadavků - OK, ale až jich bude 100× víc, v tu chvíli se to musí všechny požadavky zpracovávat pomalejš, ne? Nebo se to prostě řeší limitem, kolik se jich může zpracovávat současně?

Node.js přerušuje provádění požadavků jen pokud čekají na výsledek IO operace. Go přerušuje nepředvídatelně, přesně tak jak popisujete.

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #182 kdy: 07. 05. 2017, 23:56:44 »
Ne, vždy se jede až k dalšímu callbacku. Typicky jsou u spojení timeouty, když se server přetíží, nevyřídí všechny požadavky. Většina zde moc nechápe, jak node.js funguje. Muliplexování na jedno vlákno je hovadina, správně by se mělo použít něco jako GCD ve spojení s NIO.

Co je GCD?

kimec

Re:Node.js a multiplexed IO obecně
« Odpověď #183 kdy: 18. 05. 2017, 11:32:43 »

However, in the case of multi-threaded implementations, many browsers implement a structured cloning algorithm to copy the message into the receiving thread’s context

JS runtime musi predavane objekty serializovat a deserializovat. Je s tym spojeny overhead a nedokaze passnut referenciu na priamo.

JS runtime musi predavane objekty serializovat a deserializovat. Je s tym spojeny overhead a nedokaze passnut referenciu na priamo.
Aha, takze uplne stejna zoufalost jako v R :)

Pre upresnenie aktualneho stavu, situacia sa zmenila s uvedenim Shared memory and atomics do ECMAScript 2017. Clanok je z januara tohto roka.
Pribudol lahky nastrel pamatovych barier, CompareAndSwap a shareovatelny region pamate medzi Webworkermi. Passovanie referencii na objekty stale nie je mozne.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Node.js a multiplexed IO obecně
« Odpověď #184 kdy: 18. 05. 2017, 11:49:38 »

However, in the case of multi-threaded implementations, many browsers implement a structured cloning algorithm to copy the message into the receiving thread’s context

JS runtime musi predavane objekty serializovat a deserializovat. Je s tym spojeny overhead a nedokaze passnut referenciu na priamo.

JS runtime musi predavane objekty serializovat a deserializovat. Je s tym spojeny overhead a nedokaze passnut referenciu na priamo.
Aha, takze uplne stejna zoufalost jako v R :)

Pre upresnenie aktualneho stavu, situacia sa zmenila s uvedenim Shared memory and atomics do ECMAScript 2017. Clanok je z januara tohto roka.
Pribudol lahky nastrel pamatovych barier, CompareAndSwap a shareovatelny region pamate medzi Webworkermi. Passovanie referencii na objekty stale nie je mozne.
Takže pořád to je prakticky nepoužitelné...


Re:Node.js a multiplexed IO obecně
« Odpověď #185 kdy: 18. 05. 2017, 12:49:41 »
Takže pořád to je prakticky nepoužitelné...
Situace se zásadně změnila, dřív to bylo nepoužitelné, pak jsme dodělali spostu zajímavých věcí a pořád je to nepoužitelné.

Jo a ještě je potřeba dodat, že těch spoustu zajímavých věcí podporují jen některé prohlížeče. Mají penetraci 10%. Ale to nevadí, protože existuje knihovna, která tu funkcionalitu obaluje a má fallback pro ostatní prohlížeče.

Jo ale počítejte s tím, že ta knihovna je použitelná jenom s webpackem. Integrace s Gruntem není. Teda je, ale musí se do něj nainstalovat plugin.

Jo a ten plugin občas způsobuje memory leaky. Ale nevíme komu a proč.

Re:Node.js a multiplexed IO obecně
« Odpověď #186 kdy: 18. 05. 2017, 14:23:15 »
Jo a ještě je potřeba dodat, že těch spoustu zajímavých věcí podporují jen některé prohlížeče. Mají penetraci 10%. Ale to nevadí, protože existuje knihovna, která tu funkcionalitu obaluje a má fallback pro ostatní prohlížeče.

Jo ale počítejte s tím, že ta knihovna je použitelná jenom s webpackem. Integrace s Gruntem není. Teda je, ale musí se do něj nainstalovat plugin.

Jo a ten plugin občas způsobuje memory leaky. Ale nevíme komu a proč.
Měl jsem pocit (alespoň podle nadpisu), že se mluví o node.js. Výstřel do tmy.

A je to nepoužitelné, ale všichni to používají.

Re:Node.js a multiplexed IO obecně
« Odpověď #187 kdy: 18. 05. 2017, 14:55:42 »
A je to nepoužitelné, ale všichni to používají.
Všichni používají Node? Aha :)

Spíš všichni si s tím hrají, protože je to cool. ...a pak s tím mají takovéhle zkušenosti:
Citace
I spent a year trying to make Javascript and more specifically Node work for our team. Unfortunately during that time we spent more hours chasing docs, coming up with standards, arguing about libraries and debugging trivial code more than anything.
Would I recommend it for large-scale products? Absolutely not. Do people do that anyway? Of course they do. I tried to.
https://blog.geekforbrains.com/after-a-year-of-using-nodejs-in-production-78eecef1f65a
:)

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #188 kdy: 18. 05. 2017, 15:57:27 »
A je to nepoužitelné, ale všichni to používají.
Všichni používají Node? Aha :)

Spíš všichni si s tím hrají, protože je to cool. ...a pak s tím mají takovéhle zkušenosti:
Citace
I spent a year trying to make Javascript and more specifically Node work for our team. Unfortunately during that time we spent more hours chasing docs, coming up with standards, arguing about libraries and debugging trivial code more than anything.
Would I recommend it for large-scale products? Absolutely not. Do people do that anyway? Of course they do. I tried to.
https://blog.geekforbrains.com/after-a-year-of-using-nodejs-in-production-78eecef1f65a
:)

To je nefér srovnání. Django je určené pro jeden konkrétní typ aplikací. V tom je asi lepší. Node.js je univerzálnější.

JK

Re:Node.js a multiplexed IO obecně
« Odpověď #189 kdy: 18. 05. 2017, 17:21:43 »
OMG, proč jsem to vlákno vůbec četl. Což o to, JS má slabá místa, to je pravda. Nechcete si ovšem nejdřív doplnit elementární znalosti, než něco začnete kritizovat? Jak kdyby vám přečtení pár řádků specifikace mělo vykloubit mozek. Když vás někdo, kdo tu specifikaci evidentně četl, na vaší neznalost upozorní, tak z něj ještě děláte blbce. Nechci si ani představovat, co v tom plodíte za prasárny. Chyťte se spolu za monády a běžte ... do knihovny.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Node.js a multiplexed IO obecně
« Odpověď #190 kdy: 18. 05. 2017, 17:51:04 »
A je to nepoužitelné, ale všichni to používají.
Všichni používají Node? Aha :)

Spíš všichni si s tím hrají, protože je to cool. ...a pak s tím mají takovéhle zkušenosti:
Citace
I spent a year trying to make Javascript and more specifically Node work for our team. Unfortunately during that time we spent more hours chasing docs, coming up with standards, arguing about libraries and debugging trivial code more than anything.
Would I recommend it for large-scale products? Absolutely not. Do people do that anyway? Of course they do. I tried to.
https://blog.geekforbrains.com/after-a-year-of-using-nodejs-in-production-78eecef1f65a
:)
Tak ono to NIO je super nápad a funguje skvěle, jen se to nesmí míchat s Javascriptem, že... Aneb slovy klasika: "ECMAScript (sic!) on the backend sucks donkey bollocks. No developer capable of writing decent code who's well in his mind would touch it with a ten-foot pole."

čumil

Re:Node.js a multiplexed IO obecně
« Odpověď #191 kdy: 18. 05. 2017, 19:04:47 »
What? Pokud lidi s tvejma znalostma delaj v nodu, tak buh s nama. Ty nemas nejmenci paru o jeho funkci natoz jak obvykle funguje async kod nezavysle na jazyku...

Udelal bys my laskavost? Skus implementovat to cos tady navrh a pak si dej facku. Uz jenom to jakej bordel v side efektech te mel varovat ze je to picovyna.

Prosim trosku mozku omg

čumil

Re:Node.js a multiplexed IO obecně
« Odpověď #192 kdy: 18. 05. 2017, 19:05:52 »
Hodim sem takovou otázku ohledně Node.JS. Pokud vim, zpracovávaj se všechny požadavky v jednom vlákně. Co se tedy stane, když najednou server dostane obrovský množství požadavků. Moje představa je taková, že u prvního požadavku zpracuje např. jeden příkaz, pak jde k druhýmu.. a postupně je všechny obejde a jde zpracovávat druhej příkaz u všech. když bude takhle obsluhovat třeba X požadavků - OK, ale až jich bude 100× víc, v tu chvíli se to musí všechny požadavky zpracovávat pomalejš, ne? Nebo se to prostě řeší limitem, kolik se jich může zpracovávat současně?
Btw reaguju na tebe...

gll

Re:Node.js a multiplexed IO obecně
« Odpověď #193 kdy: 19. 05. 2017, 08:33:42 »
https://blog.geekforbrains.com/after-a-year-of-using-nodejs-in-production-78eecef1f65a
:)

S prvním bodem souhlasím. Také mi vadí zbytečné používání různých preprocesorů - Babelu, Elmu, Purescritu a podobně. Rychlý vývoj je problém, ale nebude trvat věčně.

Špatné zkušenosti se dají vygooglit o všech techologiích.

https://code.mixpanel.com/2011/08/05/how-and-why-we-switched-from-erlang-to-python/

Re:Node.js a multiplexed IO obecně
« Odpověď #194 kdy: 19. 05. 2017, 11:00:04 »
A je to nepoužitelné, ale všichni to používají.
Všichni používají Node? Aha :)

Spíš všichni si s tím hrají, protože je to cool. ...a pak s tím mají takovéhle zkušenosti:
Citace
I spent a year trying to make Javascript and more specifically Node work for our team. Unfortunately during that time we spent more hours chasing docs, coming up with standards, arguing about libraries and debugging trivial code more than anything.
Would I recommend it for large-scale products? Absolutely not. Do people do that anyway? Of course they do. I tried to.
https://blog.geekforbrains.com/after-a-year-of-using-nodejs-in-production-78eecef1f65a
:)
Nemám pocit že si s tím všichni jenom hrají. Z tvých předchozích příspěvků vím, že Google používat umíš. Stačí si vyjet, kdo všechno a kde to používá na produkci. (Stačí jen ti největší, abys procházením nestrávil dva dny.)

Předsudky často zaslepí oči i rozumným lidem. Nemusí mi vše vyhovovat, ale vykládat nesmysly jen proto, že se mi něco nelíbí je směšné...