socialgekon.com
  • Tärkein
  • Teknologia
  • Tuote-Ihmiset Ja Joukkueet
  • Varastointi
  • Rahoitusprosessit
Web-Käyttöliittymä

Miksi helvetti käytän Node.js-tiedostoa? Tapauskohtainen opetusohjelma

Johdanto

Javascriptin kasvava suosio on tuonut mukanaan paljon muutoksia, ja verkkokehityksen kasvot ovat nykyään dramaattisesti erilaiset. Asioita, joita voimme tehdä nykyään verkossa palvelimella ja selaimessa käytetyn JavaScriptin avulla, oli vaikea kuvitella vasta useita vuosia sitten, tai ne oli kapseloitu hiekkalaatikkoympäristöihin, kuten Flash tai Java-sovelmat.

Ennen kaivamista Node.js-ratkaisut , saatat haluta lukea käytön eduista JavaScript pinon yli joka yhdistää kielen ja tietomuodon (JSON), jolloin kehittäjäresurssit voidaan käyttää uudelleen optimaalisesti. Koska tämä on pikemminkin JavaScriptin etu kuin nimenomaan Node.js, emme keskustele siitä paljon täällä. Mutta se on keskeinen etu solmun sisällyttämisessä pinoon.

Kuten Wikipedia toteaa: 'Node.js on pakattu kokoelma Googlen V8-JavaScript-moottoria, libuv-alustan abstraktiokerrosta ja ydinkirjastosta, joka itse on kirjoitettu ensisijaisesti JavaScript-muodossa.' Tämän lisäksi on syytä huomata, että Node.js: n luoja Ryan Dahl pyrki luomaan reaaliaikaiset verkkosivustot, joissa on push-ominaisuus , 'Innoittamana Gmailin kaltaisista sovelluksista'. Node.js-ohjelmassa hän antoi kehittäjille työkalun toimia estämistä estävässä, tapahtumavetoisessa I / O-paradigmassa.



Yli 20 vuoden ajan kansalaisuudettoman verkon, joka perustuu kansalaisuudettomaan pyyntö-vastaus-paradigmaan, meillä on vihdoin verkkosovelluksia, joilla on reaaliaikaiset, kaksisuuntaiset yhteydet.

Yhdessä lauseessa: Node.js loistaa reaaliaikaisissa verkkosovelluksissa, joissa käytetään push-tekniikkaa verkkopistorasioiden yli. Mikä siinä on niin vallankumouksellista? No, yli 20 vuoden ajan kansalaisuudettoman verkon, joka perustuu kansalaisuudettomaan kysely-vastaus-paradigmaan, meillä on vihdoin verkkosovellukset, joilla on reaaliaikaiset, kaksisuuntaiset yhteydet, joissa sekä asiakas että palvelin voivat aloittaa viestinnän, jolloin he voivat vaihtaa tietoja vapaasti . Tämä on jyrkässä ristiriidassa tyypillisen verkkovastausparadigman kanssa, jossa asiakas aloittaa aina viestinnän. Lisäksi kaikki perustuu avoimeen verkkopinoon (HTML, CSS ja JS), joka kulkee vakioportin 80 kautta.

Voidaan väittää, että meillä on ollut tämä jo vuosia Flash- ja Java-sovelmien muodossa - mutta todellisuudessa ne olivat vain hiekkalaatikkoympäristöjä, jotka käyttivät verkkoa asiakkaalle toimitettavana kuljetusprotokollana. Lisäksi niitä ajettiin erillään ja niitä käytettiin usein epätyypillisissä porteissa, mikä saattoi tarvita ylimääräisiä käyttöoikeuksia ja vastaavia.

Kaikilla eduillaan Node.js: llä on nyt kriittinen rooli monien korkean profiilin yritysten teknologiapinoissa, jotka ovat riippuvaisia ​​sen ainutlaatuisista eduista. Node.js-säätiö on yhdistänyt kaikki parhaat ajatukset siitä, miksi yritysten tulisi harkita Node.js-ohjelmaa lyhyessä esityksessä, joka löytyy Node.js -säätiön tapaustutkimussivu .

Tässä Node.js-oppaassa keskustelen paitsi siitä, miten nämä edut saavutetaan, mutta myös siitä, miksi haluat ehkä käyttää Node.js: ää ja miksi ei - käyttämällä esimerkkinä joitain klassisia verkkosovellusmalleja.

Kuinka se toimii?

Node.js: n pääidea: Käytä estämättömiä, tapahtumavetoisia I / O-toimintoja pysyäkseen kevyinä ja tehokkaina hajautettujen laitteiden yli kulkevien, datanintensiivisten reaaliaikaisten sovellusten edessä.

Se on suupala.

Se, mitä se todella tarkoittaa, on, että Node.js on ei hopea-bullet-uusi alusta, joka hallitsee verkkokehitysmaailmaa. Sen sijaan se on foorumi, joka täyttää tietyn tarpeen. Tweet

Mitä se Todella tarkoittaa, että Node.js on ei hopea-bullet-uusi alusta, joka hallitsee verkkokehitysmaailmaa. Sen sijaan se on foorumi, joka täyttää tietyn tarpeen . Tämän ymmärtäminen on ehdottoman välttämätöntä. Et todellakaan halua käyttää Node.js-tiedostoa prosessoria vaativiin toimintoihin; itse asiassa sen käyttö raskaaseen laskentaan mitätöi melkein kaikki sen edut. Missä Node todella loistaa, rakennetaan nopeita, skaalautuvia verkkosovelluksia, koska se pystyy käsittelemään valtavan määrän samanaikaisia ​​yhteyksiä korkealla suorituskyvyllä, mikä vastaa suurta skaalautuvuutta.

Kuinka se toimii hupun alla on melko mielenkiintoista. Verrattuna perinteisiin verkkopalvelutekniikoihin, joissa jokainen yhteys (pyyntö) synnyttää uuden ketjun, joka vie järjestelmän RAM-muistin ja lopulta maksimoi käytettävissä olevan RAM-muistin määrän, Node.js toimii yksisäikeisenä käyttäen estämätöntä I / O-puhelut sallivat sen tukea kymmeniä tuhansia samanaikaisia ​​yhteyksiä, joita pidetään tapahtumasilmukassa.

Kaavio perinteisestä vs. Node.js-palvelinkierteestä

Nopea laskelma: olettaen, että jokaisessa säikeessä on mahdollisesti mukana 2 Mt muistia, 8 Gt: n RAM-muistia käyttävässä järjestelmässä teoreettisesti enintään 4000 samanaikaista yhteyttä (laskelmat on otettu Michael Abernethyn artikkelista 'Just what is Node.js?', julkaistu IBM-kehittäjäWorksissa vuonna 2011; valitettavasti artikkeli ei ole enää saatavana) , plus kustannukset kontekstin vaihtaminen ketjujen välillä . Tämä on skenaario, jota tyypillisesti käsittelet perinteisissä verkkopalvelutekniikoissa. Välttämällä kaiken tämän Node.js saavuttaa yli-skaalautuvuustasot 1M samanaikaista yhteyttä , ja yli 600k samanaikaista verkkoliitäntää .

On tietysti kysymys yhden säikeen jakamisesta kaikkien asiakkaiden pyyntöjen välillä, ja se on potentiaalinen kuoppa Node.js-sovellusten kirjoittamisesta. Ensinnäkin raskas laskenta voi tukahduttaa Solmun yhden ketjun ja aiheuttaa ongelmia kaikille asiakkaille (lisätietoja tästä myöhemmin), koska saapuvat pyynnöt estetään, kunnes mainittu laskenta on valmis. Toiseksi kehittäjien on oltava todella varovaisia, jotta ei sallita poikkeuksen kuplimista ytimen (ylin) Node.js -tapahtumasilmukkaan asti, mikä saa Node.js-ilmentymän lopettamaan (kaataa tehokkaasti ohjelmaa).

Pinnalle kuplivien poikkeusten välttämiseksi käytetty tekniikka välittää virheet takaisin soittajalle takaisinsoittoparametreinä (sen sijaan, että heittäisit ne kuten muissa ympäristöissä). Vaikka jokin käsittelemätön poikkeus onnistuukin kuplimaan, on kehitetty työkaluja Node.js-prosessin seuraamiseksi ja tarvittavien toimenpiteiden suorittamiseksi. kaatuneen instanssin palauttaminen (vaikka et todennäköisesti pysty palauttamaan käyttäjän istunnon nykyistä tilaa), yleisin on Forever-moduuli tai käyttämällä erilaista lähestymistapaa ulkoisten järjestelmätyökalujen kanssa nousukas ja kehote , tai jopa juuri ylöspäin .

NPM: Solmupakettien hallinta

Kun keskustellaan Node.js: stä, yksi asia, jota ei varmasti pidä jättää pois, on sisäänrakennettu tuki pakettien hallinta NPM: n avulla , työkalu, joka tulee oletusarvoisesti jokaisen Node.js-asennuksen yhteydessä. NPM-moduulien idea on melko samanlainen kuin Rubiinihelmet : joukko yleisesti saatavilla olevia, uudelleenkäytettäviä komponentteja, jotka on helppo asentaa online-tietovaraston kautta, versioiden ja riippuvuuksien hallinnan avulla.

Täydellinen luettelo pakatuista moduuleista löytyy npm -sivusto tai käyttää sitä npm CLI -työkalulla, joka asennetaan automaattisesti Node.js: n kanssa. Moduuliekosysteemi on avoin kaikille, ja kuka tahansa voi julkaista oman moduulinsa, joka luetellaan npm-arkistossa.

Jotkut tämän päivän hyödyllisimmistä npm-moduuleista ovat:

  • ilmaista - Express.js - tai yksinkertaisesti Express - Sinatran innoittama web-kehys Node.js: lle ja tosiasiallinen standardi suurimmalle osalle Node.js-sovelluksista tänään.
  • avata - erittäin modulaarinen ja helppokäyttöinen kokoonpanokeskeinen kehys verkko- ja palvelusovellusten rakentamiseen
  • kytkeä - Connect on Node.js: n laajennettava HTTP-palvelinkehys, joka tarjoaa joukon tehokkaita 'laajennuksia', jotka tunnetaan väliohjelmistoina; toimii perustana Expressille.
  • socket.io ja sockjs - Palvelinpuolen komponentti kahdesta yleisimmästä verkkopistekomponentista tänään.
  • mopsi (aiemmin Jade ) - Yksi suosituimmista mallimoottoreista, innoittamana HAML, oletus Express.js: ssä.
  • mongodb ja mongojit - MongoDB-kääreet antamaan API MongoDB-objektitietokannoille Node.js: ssä.
  • toistaa - Redis-asiakaskirjasto.
  • lodash (alaviiva, lazy.js) - JavaScript-apuvyö. Alaviiva aloitti pelin, mutta yksi sen kahdesta kollegasta kaatui, pääasiassa Parempi suorituskyky ja modulaarinen toteutus.
  • ikuisesti - Todennäköisesti yleisin apuohjelma sen varmistamiseksi, että tietty solmasarja toimii jatkuvasti. Pitää Node.js-prosessin tuotannossa odottamattomien virheiden edessä.
  • sinikka - Monipuolinen Promises / A + -toteutus poikkeuksellisen hyvällä suorituskyvyllä
  • hetki - JavaScript-päivämääräkirjasto päivämäärien jäsentämistä, vahvistamista, muokkaamista ja muotoilua varten.

Luettelo jatkuu. Siellä on tonnia todella hyödyllisiä paketteja, jotka ovat kaikkien saatavilla (ei loukkaa niitä, jotka olen jättänyt pois tästä).

Esimerkkejä siitä, missä Node.js: ää tulisi käyttää

CHAT

Chat on tyypillisin reaaliaikainen monen käyttäjän sovellus. IRC: stä (päivästä toiseen) monien omien ja avoimien protokollien kautta, jotka toimivat epätyypillisissä porteissa, kykyyn toteuttaa kaikki nykyiset Node.js-tiedostot vakioportin 80 kautta kulkevilla verkkopistokkeilla.

Chat-sovellus on todella Node.js: n makean pisteen esimerkki: se on kevyt, paljon liikennettä käyttävä, paljon tietoliikennettä käyttävä (mutta vähän käsittelyä / laskentaa) sovellus, joka toimii hajautettujen laitteiden yli. Se on myös loistava käyttötapa myös oppimiseen, koska se on yksinkertainen, mutta se kattaa suurimman osan paradigmoista, joita käytät koskaan tyypillisessä Node.js-sovelluksessa.

Yritetään kuvata miten se toimii.

Yksinkertaisimmassa esimerkissä meillä on verkkosivustollamme yksi chat-huone, jonne ihmiset tulevat ja voivat vaihtaa viestejä yksi kerrallaan (itse asiassa kaikki). Oletetaan esimerkiksi, että verkkosivustolla on kolme henkilöä, jotka kaikki ovat yhteydessä taulukkoon.

Palvelinpuolella meillä on yksinkertainen Express.js-sovellus, joka toteuttaa kaksi asiaa:

  1. A GET / - pyynnön käsittelijä, joka palvelee verkkosivua, joka sisältää sekä ilmoitustaulun että Lähetä - painikkeen uuden viestinsyötön alustamiseksi, ja
  2. Verkkopistepalvelin, joka kuuntelee verkkopohjaisten asiakkaiden lähettämiä uusia viestejä.

Asiakkaan puolella meillä on HTML-sivu, johon on asennettu muutama käsittelijä, yksi Lähetä-painikkeen napsautustapahtumaa varten, joka poimii syötesanoman ja lähettää sen verkkopistokkeeseen, ja toinen, joka kuuntelee uusia saapuvia viestejä websockets-asiakkaalla (ts. muiden käyttäjien lähettämät viestit, jotka palvelin haluaa asiakkaan nyt näyttävän).

Kun joku asiakkaista lähettää viestin, tapahtuu näin:

  1. Selain saa kiinni Lähetä-painikkeen napsautuksen JavaScript-käsittelijän kautta, poimii arvon syöttökentästä (eli viestin tekstistä) ja lähettää verkkopisteviestin palvelimellemme yhdistetyn verkkopisteen asiakasohjelman avulla (alustettu verkkosivun alustuksessa).
  2. Verkkoyhteyden palvelinpuolen komponentti vastaanottaa viestin ja välittää sen kaikille muille liitetyille asiakkaille yleislähetystapaa käyttäen.
  3. Kaikki asiakkaat vastaanottavat uuden viestin push-viestinä websocketsin asiakaspuolen komponentin kautta, joka toimii verkkosivulla. Sitten he poimivat viestin sisällön ja päivittävät verkkosivun paikalleen liittämällä uuden viestin taululle.

Kaavio asiakas- ja palvelinverkkosovelluksista Node.js-sovelluksessa

Tämä on yksinkertaisin esimerkki . Enemmän vankka ratkaisu , voit käyttää yksinkertaista välimuistia, joka perustuu Redis-kauppaan. Tai vielä edistyneemmässä ratkaisussa viestijono jonoon viestien reitittämiseksi asiakkaille ja vankempi toimitusmekanismi, joka voi kattaa tilapäiset yhteyskatkokset tai viestien tallentamisen rekisteröidyille asiakkaille, kun he ovat offline-tilassa. Mutta tekemistäsi parannuksista huolimatta Node.js toimii edelleen samojen perusperiaatteiden mukaisesti: reagoi tapahtumiin, käsittelee monia samanaikaisia ​​yhteyksiä ja ylläpitää sujuvuutta käyttökokemuksessa.

API KOHTEEN TEKNISEN TIETOKONEEN KANSSA

Vaikka Node.js loistaa todella reaaliaikaisilla sovelluksilla, se on melko luonnollinen tapa paljastaa tiedot objektitietokannoista (esim. MongoDB). JSON-tallennettujen tietojen avulla Node.js voi toimia ilman impedanssin ristiriitaa ja tietojen muuntamista.

Jos esimerkiksi käytät Rails-ohjelmaa, muuntaisit JSON: sta binaarimalleiksi ja paljastaisit ne sitten takaisin JSON: ksi HTTP: n kautta, kun Backbone.js, Angular.js jne. Tai jopa tavallinen jQuery AJAX kuluttaa tietoja. puhelut. Node.js: n avulla voit vain paljastaa JSON-objektisi REST-sovellusliittymällä, jota asiakas voi käyttää. Lisäksi sinun ei tarvitse huolehtia muuntamisesta JSON: n ja muun välillä, kun luet tai kirjoitat tietokannastasi (jos käytät MongoDB: tä). Yhteenvetona voidaan todeta, että voit välttää useiden muunnosten tarpeen käyttämällä yhdenmukaista tietojen sarjallisuusmuotoa asiakkaan, palvelimen ja tietokannan välillä.

Jonossa olevat tulot

Jos saat paljon samanaikaista dataa, tietokannastasi voi tulla pullonkaula. Kuten yllä on kuvattu, Node.js pystyy helposti käsittelemään samanaikaiset yhteydet itse. Mutta koska tietokantakäyttö on estotoiminto (tässä tapauksessa), törmäämme vaikeuksiin. Ratkaisu on kuitata asiakkaan käyttäytyminen ennen kuin tiedot todella kirjoitetaan tietokantaan.

Tällä lähestymistavalla järjestelmä ylläpitää reagointikykyä suurella kuormituksella, mikä on erityisen hyödyllistä, kun asiakas ei tarvitse vahvaa vahvistusta onnistuneesta tietojen kirjoittamisesta. Tyypillisiä esimerkkejä ovat: käyttäjien seurantatietojen kirjaaminen tai kirjoittaminen, jotka on käsitelty erissä ja joita ei käytetä vasta myöhemmin; samoin kuin toiminnot, joita ei tarvitse heijastaa välittömästi (kuten tykkäysten määrän päivittäminen Facebookissa) missä lopulta johdonmukaisuus (niin usein käytetty NoSQL-maailmassa) on hyväksyttävä.

Tiedot asetetaan jonoon jonkinlaisen välimuistin tai viestijono-infrastruktuurin - kuten RabbitMQ tai ZeroMQ - kautta ja pilkotaan erillisellä tietokannan erä-kirjoitusprosessilla tai laskennan intensiivisellä käsittelyllä taustapalveluilla, jotka on kirjoitettu paremmin toimivaan alustaan ​​tällaisia ​​tehtäviä varten. Samanlainen käyttäytyminen voidaan toteuttaa muilla kielillä / kehyksillä, mutta ei samalla laitteistolla, samalla korkealla, ylläpidetyllä läpäisykyvyllä.

Kaavio tietokannan eräkirjoituksesta Node.js: ssä viestijonolla

Lyhyesti sanottuna: Solmun avulla voit työntää tietokantakirjoitukset sivuun ja käsitellä niitä myöhemmin etenemällä kuin ne onnistuisivat.

TIETOJEN VIRTAAMINEN

Perinteisemmillä web-alustoilla HTTP-pyyntöjä ja vastauksia käsitellään kuin yksittäisiä tapahtumia; Itse asiassa ne ovat todella virtoja. Tätä havaintoa voidaan käyttää Node.js: ssä hyvien ominaisuuksien rakentamiseen. Esimerkiksi tiedostoja on mahdollista käsitellä niiden lataamisen aikana, koska tiedot tulevat virtana ja voimme käsitellä niitä verkossa. Tämä voitaisiin tehdä reaaliaikainen ääni- tai videokoodaus ja välityspalvelin eri tietolähteiden välillä (katso seuraava osa).

PROXY

Node.js on helposti palvelinpuolen välityspalvelin, jossa se pystyy käsittelemään suuren määrän samanaikaisia ​​yhteyksiä estämättömällä tavalla. Se on erityisen hyödyllinen eri palvelujen välityspalvelimille, joilla on eri vasteajat, tai kerätä tietoja useista lähdekohdista.

Esimerkki: harkitse palvelinpuolen sovellusta, joka kommunikoi kolmansien osapuolten resurssien kanssa, kerää tietoja eri lähteistä tai tallentaa resursseja, kuten kuvia ja videoita, kolmannen osapuolen pilvipalveluihin.

Vaikka omistettuja välityspalvelimia onkin olemassa, solmun käytöstä voi olla hyötyä, jos välityspalvelininfrastruktuuriasi ei ole tai jos tarvitset ratkaisua paikalliseen kehittämiseen. Tarkoitan tällä, että voisit rakentaa asiakaspuolen sovelluksen Node.js-kehityspalvelimella omaisuuksia ja välityspalvelimen API-pyyntöjä varten, kun taas tuotannossa käsittelisit tällaisia ​​vuorovaikutuksia erillisen välityspalvelimen (nginx, HAProxy jne .).

Välitys - osakekauppiaan kojelauta

Palataan takaisin sovellustasolle. Toinen esimerkki siitä, missä työpöytäohjelmisto hallitsee, mutta joka voidaan helposti korvata reaaliaikaisella verkkoratkaisulla, on välittäjien kaupankäyntiohjelmisto, jota käytetään osakkeiden hintojen seuraamiseen, laskelmien / teknisen analyysin tekemiseen ja kaavioiden luomiseen.

Reaaliaikaiseen verkkopohjaiseen ratkaisuun siirtyminen antaisi välittäjille mahdollisuuden vaihtaa helposti työasemaa tai työpaikkaa. Pian voimme alkaa nähdä heidät Floridan rannalla .. tai Ibizalla .. tai Balilla.

SOVELLUKSEN VALVONTA Kojelauta

Toinen yleinen käyttötapaus, jossa Node-with-web-sockets sopii täydellisesti: verkkosivuston kävijöiden seuraaminen ja heidän vuorovaikutuksensa visualisointi reaaliajassa.

Voisit kerätä reaaliaikaisia ​​tilastoja käyttäjältäsi tai jopa siirtää ne seuraavalle tasolle ottamalla käyttöön kohdennettuja vuorovaikutuksia vierailijoiden kanssa avaamalla viestintäkanavan, kun he saavuttavat tietyn pisteen kanavassasi. (Jos olet kiinnostunut, tämä idea on jo tuotannossa CANDDi .)

Kuvittele, kuinka voisit parantaa liiketoimintaasi, jos tietäisit, mitä kävijät tekivät reaaliajassa - jos voisit visualisoida heidän vuorovaikutuksensa. Node.js: n reaaliaikaisten, kaksisuuntaisten pistorasioiden avulla voit nyt.

JÄRJESTELMÄN VALVONTA Kojelauta

Käydään nyt asioiden infrastruktuuripuolella. Kuvittele esimerkiksi SaaS-palveluntarjoajaa, joka haluaa tarjota käyttäjilleen palvelunvalvontasivun, kuten GitHubin tilasivun. Node.js-tapahtumasilmukan avulla voimme luoda tehokkaan verkkopohjaisen hallintapaneelin, joka tarkistaa palvelujen tilat asynkroninen tavalla ja välittää tietoja asiakkaille verkkopistokkeiden avulla.

Sekä sisäisten (yrityksen sisäisten) että julkisten palvelujen tilat voidaan ilmoittaa reaaliajassa ja reaaliajassa tätä tekniikkaa käyttämällä. Työnnä tätä ajatusta hieman pidemmälle ja yritä kuvitella a Verkon operointikeskus (NOC) Teleoperaattorin, pilvi- / verkko- / isännöintipalvelujen tarjoajan tai jonkin muun rahoituslaitoksen valvontasovellukset toimivat kaikki avoimella verkkopinolla, jota tukevat Node.js ja verkkopistokkeet Java- ja / tai Java-sovelmien sijaan.

Huomaa: Älä yritä rakentaa kovia reaaliaikaisia ​​järjestelmiä Solmuun (ts. Järjestelmät, jotka vaativat yhdenmukaisia ​​vasteaikoja). Erlang on luultavasti parempi valinta kyseiselle luokalle.

Missä Node.js-tiedostoa voidaan käyttää

PALVELIMEN puolella olevat verkkosovellukset

Express.js: n Node.js-tiedostoa voidaan käyttää myös klassisten verkkosovellusten luomiseen palvelinpuolelle. Vaikka tämä pyyntö-vastaus-paradigma, jossa Node.js kantaisi renderoitua HTML-koodia, ei kuitenkaan ole tyypillisin käyttötapa. Tämän lähestymistavan puolesta ja sitä vastaan ​​voidaan esittää argumentteja. Tässä on joitain huomioitavia tosiasioita:

Plussat:

  • Jos sovelluksessasi ei ole suorittimen intensiivistä laskentaa, voit rakentaa sen Javascript-ohjelmasta ylhäältä alas, jopa tietokantatasolle, jos käytät JSON storage Object DB: tä, kuten MongoDB. Tämä helpottaa kehitystä (mukaan lukien palkkaamista) merkittävästi.
  • Indeksoijat saavat täysin renderoidun HTML-vastauksen, joka on paljon SEO-ystävällisempi kuin esimerkiksi Yhden sivun sovellus tai Node.js: n päällä suoritettava verkkosovellussovellus.

Haittoja:

  • Mikä tahansa suorittimen intensiivinen laskenta estää Node.js-reagoinnin, joten kierteinen alusta on parempi lähestymistapa. Vaihtoehtoisesti voit kokeilla skaalata [*].
  • Node.js: n käyttäminen relaatiotietokannan kanssa on edelleen melko tuskaa (katso lisätietoja alla). Tee itsellesi palvelus ja poimi kaikki muut ympäristöt, kuten Rails, Django tai ASP.Net MVC, jos yrität suorittaa relaatiotoimintoja.
[*] Vaihtoehto näille suorittimen intensiivisille laskelmille on luoda erittäin skaalautuva MQ-tukiinen ympäristö, jossa on taustaprosessointi, jotta Node pysyy etupuolella ”virkailijana” käsittelemään asiakaspyyntöjä asynkronisesti.

Missä Node.js-tiedostoa ei pitäisi käyttää

PALVELIMEN WEB-SOVELLUS WEL A RELATIONAL DB -TAKAISIN

Esimerkiksi, kun Node.js: ää verrattiin Express.js: ään Ruby on Railsia vastaan, aiemmin oli puhdas päätös jälkimmäisen eduksi, kun oli kyse relaatiotietokantojen, kuten PostgreSQL, MySQL ja Microsoft SQL Server, käyttämisestä.

Node.js: n relaatiotietokantatyökalut olivat vielä alkuvaiheessa. Toisaalta Rails tarjoaa automaattisesti tiedonsiirron asetukset heti laatikosta yhdessä DB-skeeman siirron tukityökalujen ja muiden helmien kanssa (pun-tarkoitus). Railsilla ja sen vertaispuitteilla on kypsä ja todistettu Active Record- tai Data Mapper -tietokantakerroksen toteutus. [*]

Mutta asiat ovat muuttuneet. Jatka , TyyppiORM ja Kirjahylly ovat edenneet pitkälle kohti kypsiä ORM-ratkaisuja. Se voi myös olla syytä tarkistaa Liity Monsteriin jos haluat luoda SQL: n GraphQL-kyselyistä.

[*] On mahdollista ja harvinaista käyttää Solmea vain käyttöliittymänä pitäen samalla Rails-käyttöliittymäsi ja sen helpon pääsyn relaatiotietokantaan. Liittyvät: Takaosa: Gatsby.js: n ja Node.js: n käyttö staattisille sivustopäivityksille

RASKAS PALVELIMEN LASKENTA / KÄSITTELY

Raskaan laskennan osalta Node.js ei ole paras ympäristö. Ei, et todellakaan halua rakentaa Fibonacci-laskentapalvelin Node.js-tiedostossa . Yleensä mikä tahansa suorittimen intensiivinen käyttö mitätöi kaikki solmun tarjoamat suorituskykyedut tapahtumavetoisella, estämättömällä I / O-mallillaan, koska kaikki saapuvat pyynnöt estetään, kun säie on varattu numeronmurskauksellesi - olettaen, että yrität Suorita laskelmat samassa Node-esiintymässä, jolla vastaat pyyntöihin.

Kuten aiemmin todettiin, Node.js on yksisäikeinen ja käyttää vain yhtä CPU-ydintä. Kun on kyse samanaikaisuuden lisäämisestä monisydämiselle palvelimelle, solmun ydintiimi tekee jonkin verran työtä klusterimoduulin muodossa [viite: http://nodejs.org/api/cluster.html]. Voit myös käyttää useita Node.js-palvelinilmentymiä melko helposti a: n takana käänteinen välityspalvelin nginxin kautta .

Klusterin avulla sinun on silti ladattava kaikki raskaat laskelmat taustatietoprosesseihin, jotka on kirjoitettu siihen sopivammassa ympäristössä, ja saada ne kommunikoimaan viestijonopalvelimen, kuten RabbitMQ, kautta.

Vaikka taustakäsittelysi saatetaan suorittaa alun perin samalla palvelimella, tällaisella lähestymistavalla voi olla erittäin suuri skaalautuvuus. Nämä taustankäsittelypalvelut voitaisiin helposti jakaa erillisille työntekijäpalvelimille tarvitsematta konfiguroida eteenpäin suuntautuvien verkkopalvelimien kuormia.

Tietysti käyttäisit samaa lähestymistapaa myös muilla alustoilla, mutta Node.js: n avulla saat korkean reqs / s-tiedonsiirtonopeuden, josta olemme puhuneet, koska jokainen pyyntö on pieni tehtävä, joka hoidetaan erittäin nopeasti ja tehokkaasti.

Johtopäätös

Olemme keskustelleet Node.js: stä teoriasta käytäntöön aloittaen sen tavoitteista ja kunnianhimoista ja päättyen sen suloisiin kohtiin ja sudenkuoppiin. Kun ihmisillä on ongelmia solmun kanssa, se melkein aina taantuu siihen estotoimet ovat kaiken pahan perusta —99% solmun väärinkäytöksistä on välitön seuraus.

Solmussa estotoiminnot ovat kaiken pahan perusta - 99% solmun väärinkäytöksistä johtuu suorasta seurauksesta. Tweet

Muista: Node.js-tiedostoa ei koskaan luotu ratkaisemaan laskennan skaalausongelmaa. Se luotiin ratkaisemaan I / O-skaalauksen ongelma, jonka se tekee todella hyvin .

Miksi käyttää Node.js-tiedostoa? Jos käyttötapauksesi ei sisällä suorittimen intensiivisiä toimintoja eikä käytä mitään estolähteitä, voit hyödyntää Node.js: n etuja ja nauttia nopeista ja skaalautuvista verkkosovelluksista. Tervetuloa reaaliaikaiseen verkkoon.

Perustietojen ymmärtäminen

Mikä on Node.js?

Node.js on palvelinpuolen JavaScript-ajo-ympäristö. Se on avoimen lähdekoodin, mukaan lukien Googlen V8-moottori, libuv for cross-platform yhteensopivuus ja ydinkirjasto. Erityisesti Node.js ei paljasta globaalia ikkunaobjektia, koska se ei toimi selaimessa.

Mihin Node.js: ää käytetään?

Node.js: ää käytetään ensisijaisesti ei-estäviin tapahtumapohjaisiin palvelimiin, koska se on yksisäikeinen. Sitä käytetään perinteisiin verkkosivustoihin ja back-end API -palveluihin, mutta se on suunniteltu reaaliaikaisia, push-pohjaisia ​​arkkitehtuureja silmällä pitäen.

Mikä on verkkokehys?

Verkkokehykset, kuten Angular ja React, ovat kirjastoja, jotka auttavat järjestämään ja luomaan verkkoselaimessa suoritettavan käyttöliittymäkoodin. Ne lyhentävät kehitysaikaa ja käyttävät koodia uudelleen yhteisiin toimintoihin. Jotkut verkkokehykset ovat 'täysi pino', mikä tarkoittaa, että ne luovat myös verkkopalvelimessa toimivan taustakoodin.

Onko Node.js kehys?

Ei, se on ympäristö, ja sen sisällä toimii taustakehyksiä. Suosittuja ovat Express.js (tai yksinkertaisesti Express) HTTP-palvelimille ja Socket.IO WebSocket-palvelimille.

Onko Node.js ohjelmointikieli?

Ei, .js tarkoittaa, että Node.js: n kanssa käyttämäsi ohjelmointikieli on JavaScripti (tai mikä tahansa, joka voi levitä siihen, kuten TypeScript, Haxe tai CoffeeScript.)

Miksi Node.js on suosittu?

Sen lisäksi, että Node.js on tehokas toiminnassaan, se on suosittu, koska sillä on valtava, aktiivinen, avoimen lähdekoodin JavaScript-pohjainen ekosysteemi. Lisäksi sillä ei ole taipumusta rikkoa yhteensopivuutta versioiden välillä suurilla tavoilla.

Mikä on ero Node.js: n ja Angular / AngularJS: n välillä?

Node.js suorittaa JavaScript-koodin palvelimen ympäristössä, kun taas Angular on JavaScript-kehys, joka suoritetaan asiakkaalle (ts. Verkkoselaimessa).

Miksi Node.js on huono?

Yksisäikeinen Node.js voi olla huono valinta verkkopalvelimille, jotka kaksinkertaistuvat laskennallisina palvelimina, koska raskas laskenta estää palvelimen reagoinnin. Node.js itsessään ei kuitenkaan ole huono: Teknologia on melko kypsä ja sitä käytetään laajalti monen tyyppisille palvelimille.

Mielen silmä - katsaus datan visualisointipsykologiaan

Ux-Suunnittelu

Mielen silmä - katsaus datan visualisointipsykologiaan
Tekoälyn nykyisyys ja tulevaisuus suunnittelussa (infografiikan kanssa)

Tekoälyn nykyisyys ja tulevaisuus suunnittelussa (infografiikan kanssa)

Ux-Suunnittelu

Suosittu Viestiä
Urheilukuvaus iPhonella: kuinka voit tallentaa liikkuvia kohteita paremmin
Urheilukuvaus iPhonella: kuinka voit tallentaa liikkuvia kohteita paremmin
Suunnitteluajattelun arvo liiketoiminnassa
Suunnitteluajattelun arvo liiketoiminnassa
Johdanto Nameko-palvelun python-mikropalveluihin
Johdanto Nameko-palvelun python-mikropalveluihin
Toimittaja, ApeeScape Product and Project Management -blogit
Toimittaja, ApeeScape Product and Project Management -blogit
7 ilmaista Instagram-viestimallia virkistämään syötteesi
7 ilmaista Instagram-viestimallia virkistämään syötteesi
 
CSS-asettelun opetusohjelma: klassisista lähestymistavoista uusimpiin tekniikoihin
CSS-asettelun opetusohjelma: klassisista lähestymistavoista uusimpiin tekniikoihin
Tie parempaan ketterään testaukseen
Tie parempaan ketterään testaukseen
Harmaa aine - mikä on miellekartta suunnitteluprosessissa?
Harmaa aine - mikä on miellekartta suunnitteluprosessissa?
Kuinka hallita Design Divaa (eikä olla yksi)
Kuinka hallita Design Divaa (eikä olla yksi)
Kuinka ottaa täydellinen peiliselfie iPhonellasi
Kuinka ottaa täydellinen peiliselfie iPhonellasi
Luokat
KetteräSijoittajat Ja RahoitusTyökalut Ja OppaatTietojenkäsittely Ja TietokannatJaetut JoukkueetVarastointiRahoitusprosessitKetterä KykyiOS-vinkkejäVinkkejä Ja Työkaluja

© 2023 | Kaikki Oikeudet Pidätetään

socialgekon.com