Node.js ou Erlang
J'aime vraiment ces outils quand il s'agit du niveau de simultanéité qu'il peut gérer.
Erlang ressemble beaucoup plus stable solution, mais exige beaucoup plus de l'apprentissage et beaucoup de plonger dans un langage fonctionnel paradigme. Et il semble que Erlang rend beaucoup mieux quand il s'agit de multi cœurs de Processeurs(corrigé moi si je me trompe).
Mais lequel dois-je choisir? Lequel est le mieux dans le court/long terme?
Mon objectif est d'apprendre un outil qui rend la mise à l'échelle de mes projets web sous haute charge plus facile que les langues traditionnelles.
- Vous pouvez utiliser du JavaScript, un langage fonctionnel avec underscorejs.org
- êtes-vous sûr que vous avez dit la bonne question ?
- Les pommes et les Oranges. Node.JS (à sa base) est libevent (C) + Javascript interop. Erlang est un site totalement personnalisé IO mise en œuvre. Node.JS est faite pour les mono-thread apps. Votre delema est voulez-vous un emploi à Facebook/Google, ou voulez-vous faire kickass logiciel.
Vous devez vous connecter pour publier un commentaire.
Je donnerais Erlang un essai. Même s'il sera plus raide de la courbe d'apprentissage, vous allez obtenir plus hors de lui, car vous allez apprendre un langage de programmation fonctionnel. Aussi, depuis Erlang est spécifiquement conçu pour créer fiable, hautement simultanées systèmes, vous apprendrez beaucoup sur la création hautement évolutive de services en même temps.
Je ne peux pas parler pour Erlang, mais quelques choses qui n'ont pas été mentionnés à propos de nœud:
Découvrez la vidéo sur yahoo blog par Ryan Dahl, le gars qui a écrit nœud. Je pense que cela va aider à vous donner une meilleure idée de l'endroit où le nœud est à la, et où il va.
Gardez à l'esprit que le nœud est toujours à la fin des étapes de développement, et a donc été l'objet d'assez peu de changements, changements qui ont cassé le code antérieur. Cependant, soi-disant, il est à un point où vous pouvez attendre de l'API de ne pas trop changer plus. Donc, si vous cherchez quelque chose d'amusant, je dirais que le noeud est un excellent choix.
Je suis un long temps de programmeur Erlang, et cette question m'a incité à prendre un coup d'oeil à node.js. Il a l'air assez bien foutu.
Il semble que vous devrez lancer plusieurs processus pour tirer parti des processeurs multi-cœurs. Je ne vois rien sur la définition de l'affinité du processeur si. Vous pouvez utiliser taskset sur linux, mais il devrait probablement être paramétrées et défini dans le programme.
J'ai aussi remarqué que le support de plate-forme pourrait être un peu plus faible. Plus précisément, il semble que vous auriez besoin pour s'exécuter sous Cygwin pour Windows de soutien.
Semble si bon.
Modifier
Node.js maintenant a un support natif pour Windows.
Je suis à la recherche du même, deux solutions vous sont, gotts, pour de multiples projets.
Jusqu'à présent, le meilleur rasoir que j'ai trouver pour choisir l'un d'entre eux pour un projet donné est de savoir si j'ai besoin d'utiliser le Javascript. Un système existant, je suis à la recherche de migrer est déjà écrit en Javascript, donc sa prochaine version est susceptible d'être fait dans node.js. D'autres projets seront réalisés dans certains Erlang web framework, car il n'y a pas de code existant de la base de migrer.
Une autre considération est que Erlang échelles de bien-delà de plusieurs cœurs, il peut l'échelle de l'ensemble de centre de données. Je ne vois pas d'un mécanisme intégré dans node.js qui me permet d'envoyer un autre JS traiter un message sans prendre la machine c'est sur, mais c'est construit à droite dans Erlang au niveau le plus bas. Si votre problème n'est pas assez grand pour avoir besoin de plusieurs machines ou si elle n'a pas besoin de plusieurs coopérant processus, cet avantage n'est probablement pas à la matière, de sorte que vous devez l'ignorer.
Erlang est en effet une profonde de la piscine pour plonger dans. Je suggère d'écriture autonome du programme fonctionnel d'abord avant de commencer à construire des applications web. Encore plus facile de la première étape, puisque vous semblez à l'aise avec Javascript, c'est d'essayer de programmation JS dans un plus de style fonctionnel. Si vous utilisez jQuery ou Prototype, vous avez déjà commencé dans cette voie. Essayez de rebondir entre la pure programmation fonctionnelle en Erlang ou l'un de ses plus proches parents (Haskell, F#, Scala...) et fonctionnelle JS.
Une fois que vous êtes à l'aise avec la programmation fonctionnelle, chercher l'un des nombreux Erlang frameworks web; vous ne devriez pas être la rédaction de votre application directement à quelque chose de bas niveau comme
inets
à ce stade tardif. Regardez quelque chose comme L'azote, par exemple.Alors que je n'irais personnellement pour Erlang, je vais vous avouer que je suis un peu biaisé par rapport à JavaScript. Mon conseil est que vous évaluez quelques points:
Erlang a vraiment peaufiné la simultanéité & transparente au réseau parallèle de système distribué. En fonction de ce qui est exactement le projet, la disponibilité de la maturité de la mise en œuvre d'un tel système pourrait l'emporter sur toutes les questions concernant l'apprentissage d'une nouvelle langue. Il y a aussi deux autres langues que le travail sur Erlang VM que vous pouvez utiliser, le Ruby/Python-comme Erea et Lisp-Aromatisé Erlang.
Encore une autre option est d'utiliser les deux, surtout avec Erlang être utilisé comme une sorte de "hub". Je ne suis pas sur si Node.js a l'Étranger Interface de la Fonction du système, mais si il y a, Erlang a la bibliothèque C pour les processus externes à l'interface avec le système, juste comme n'importe quel autre processus Erlang.
Il ressemble à Erlang a de meilleures performances pour un déploiement dans un relativement bas de gamme, serveur (512 MO 4-core 2.4 GHz AMD VM). C'est à partir de SyncPad de l'expérience de comparer Erlang vs Node.js mise en œuvre de leurs tableau blanc virtuel de l'application serveur.
Il y a un plus de langues sur la même machine virtuelle erlang est -> Elixir
C'est une alternative très intéressante à Erlang, vérifier celui-ci dehors.
Aussi, il a une croissance rapide framework web basé sur elle-> Phoenix Cadre
whatsapp ne pourrait jamais atteindre le niveau d'évolutivité et de fiabilité sans erlang https://www.youtube.com/watch?v=c12cYAUTXXs
Je Préfère Erlang sur le Nœud.
Si vous voulez de la simultanéité, le Nœud peut être substitué par Erlang ou Golang en raison de leur poids léger processus.
Erlang n'est pas facile à apprendre exige beaucoup d'efforts, mais sa communauté est active, peut obtenir de l'aide de qui, ce n'est que la raison pourquoi les gens préfèrent Nœud .