278 votes

Où Erlang est utilisé et pourquoi ?

Je voudrais savoir une liste des plus courantes application/sites Web/solutions où Erlang est utilisé, avec succès ou non.

Expliquant pourquoi il est utilisé dans une solution spécifique plutôt que d’autres langages de programmation seraient très appréciés, trop.

Liste Erlang mauvaise affaire studies (cas où Erlang est mal utilisé) il serait intéressant, aussi bien.

230voto

JRL Points 36674

De Programmation Erlang:

alt text

De nombreuses entreprises sont à l'aide de Erlang dans leurs systèmes de production:

Amazon utilise Erlang pour mettre en œuvre SimpleDB, en fournissant des services de base de données en tant que partie de Amazon Elastic Compute Cloud (EC2).

Yahoo! il utilise son service de bookmarking social, Délicieux, qui a plus de 5 millions d'utilisateurs et de 150 millions de dollars enregistré des Url.

Facebook utilise Erlang pour pouvoir le backend de son service de chat, la manipulation de plus de 100 millions d'utilisateurs actifs.

T-Mobile utilise Erlang dans ses SMS et les systèmes d'authentification.

Motorola est à l'aide de Erlang appel à des produits de traitement dans le public, le secteur de la sécurité.

Ericsson utilise Erlang dans son soutien nœuds, utilisé dans le GPRS et les réseaux mobiles 3G dans le monde entier.


Le plus populaire open source Erlang applications sont les suivantes:

• La 3D de la subdivision de modeler Wings 3D, utilisé pour le modèle et la texture polygone mailles.

• La Ejabberd système Extensible Messaging and Presence Protocol (XMPP), en fonction de messagerie instantanée (IM) serveur d'application.

• La CouchDB "schéma" du document de base de données orientée, offrant une extensibilité à travers le multicœur et multiserveur clusters.

• La MochiWeb bibliothèque qui offre un soutien pour la construction légère des serveurs HTTP. Il est utilisé pour l'alimentation des services tels que MochiBot et MochiAds, qui servent contenu généré dynamiquement à des millions de téléspectateurs par jour.

RabbitMQ, un AMQP de messagerie mise en œuvre du protocole. AMQP est une nouvelle standard de haute performance de la messagerie d'entreprise.

88voto

cstar Points 1963

ejabberd est l'un des plus bien savoir erlang application et celui que j'ai appris erlang.

Je pense que c'est l'un des projets les plus intéressants pour l'apprentissage erlang parce que c'est vraiment bâtiment sur erlang force. (Cependant, certains diront qu'il n'est pas le bureau du procureur, mais ne vous inquiétez pas il y a encore un trésor de grand code de l'intérieur...)

Pourquoi ?

Un serveur XMPP (comme ejabberd) peut être vu comme un niveau élevé de routeur, le routage des messages entre les utilisateurs finaux. Bien sûr, il ya d'autres fonctions, mais c'est l'aspect le plus important d'un serveur de messagerie instantanée. Il a de la route de nombreux messages simultanément, et de manipuler beaucoup de beaucoup de connexions TCP/IP.

Nous avons donc 2 caractéristiques:

  • gérer plusieurs connexions
  • itinéraire messages de certains aspects du message

Ce sont des exemples où erlang brille.

gérer plusieurs connexions

Il est très facile de construire évolutive non bloquants serveurs TCP/IP avec erlang. En fait, il a été conçu pour résoudre ce problème. Et étant donné qu'il peut pondre des centaines de milliers de processus (et non pas les threads, c'est une part de rien", ce qui est plus simple à concevoir), ejabberd est conçu comme un ensemble de processus erlang (qui peuvent être distribués sur plusieurs serveurs) :

  • client processus de connexion
  • processus de routeur
  • tchat processus
  • un serveur à un processus de

Tous d'entre eux à des échanges de messages.

itinéraire messages de certains aspects du message

Un autre très aimable fonction d'erlang est le pattern matching. Il est utilisé tout au long de la langue.

Par exemple, dans le code suivant :

access(moderator, _Config)->  rw;
access(participant, _Config)->  rw;
access(visitor, #config{type="public"})->  r;
access(visitor, #config{type="public_rw"})->  rw;
access(_User,_Config)->  none.

C'est 5 versions différentes de l' accessfonction. Erlang va sélectionner la version la plus appropriée étant donné les arguments reçus. (Config est une structure de type #config qui a type d'attribut).

Cela signifie qu'il est très facile et beaucoup plus clair que le chaînage if/else ou switch/case pour rendre l'entreprise à des règles.

Pour conclure

L'écriture des serveurs évolutifs, c'est l'ensemble de point d'erlang. Tout est conçu pour qu'elle ce qui en fait facile. Sur les deux précédentes fonctions, j'ajouterais :

  • chaud de mise à niveau du code
  • mnesia, distribué de bases de données relationnelles (inclus dans la distribution de base)
  • mochiweb, sur laquelle la plupart des http erlang serveurs sont construits sur
  • binaire de soutien (encodage et le décodage de protocole binaire facile que jamais)
  • une grande communauté avec beaucoup de projets open source (ejabberd, couchdb mais aussi webmachine, riak et d'une flopée de bibliothèque très facile à intégrer)

Moins De Ldc

Il y a aussi cet article de Richard Jones. Il l'a réécrit une application de C++ pour erlang: 75% moins de lignes en erlang.

55voto

jldupont Points 31331

La liste de la plupart des applications courantes pour Erlang comme couverts (CouchDb, ejabberd, RabbitMQ, etc), mais je voudrais contribuer suivantes.

La raison pour laquelle il est utilisé dans ces applications proviennent de la principale force d'Erlang: gestion de la demande de disponibilité.

Erlang a été construit à partir du sol en place pour la telco environnement exigeant que les systèmes de rencontrer au moins 5x9 de la disponibilité de (disponibilité de 99,999% par an jusqu'à temps). Cette figure ne laisse pas beaucoup de place pour les temps d'arrêt pendant un an! Pour cette raison, principalement, Erlang est livré avec les caractéristiques suivantes (liste non exhaustive):

  • Évolutivité horizontale (possibilité de distribuer des emplois à l'échelle de la machine les frontières facilement à travers transparente intra & inter communications de machine). La base de données intégrée (amnésie & nbsp;) est également distribué par la nature.

  • Verticale de l'évolutivité (possibilité de distribuer des emplois à travers les ressources de traitement sur la même machine): SMP est géré nativement.

  • Code de la Permutation à Chaud: la possibilité de mettre à jour/mise à niveau de code en direct pendant les opérations

  • Asynchrone: le monde réel est asynchrone, donc Erlang a été construit pour rendre compte de cette nature fondamentale. Une caractéristique qui contribue à cette exigence: Erlang est "libre" de processus (>32000 peuvent s'exécuter simultanément).

  • Supervision: de nombreuses stratégies différentes pour la supervision des processus de fabrication avec le redémarrage des stratégies, des seuils, etc. Permet de récupérer à partir du coin de cas et/ou de la surcharge de plus en plus facilement, tout en conservant les traces des problèmes pour plus tard, le dépannage, l'analyse post-mortem etc.

  • Gestion des ressources: la planification des stratégies, de la surveillance des ressources etc. Notez que la valeur par défaut process scheduler fonctionne avec O(1) mise à l'échelle.

  • En direct de débogage: la capacité de "journal" en direct nodes aide de dépannage des activités. Débogage peuvent être menées à vivre avec un accès complet à tout le processus de' état en cours d'exécution. Également intégré dans les outils de reporting d'erreur sont très utiles (mais parfois un peu difficile à utiliser).

Bien sûr, je pourrais parler de ses racines, mais cet aspect est quelque peu orthogonal à l'objectif principal (haute disponibilité). La principale composante de la nature fonctionnelle qui contribue généreusement à l'objectif cible est de l'OMI: "partager rien". Cette caractéristique permet de contenir des "effets secondaires" et de réduire la nécessité de coûteux mécanismes de synchronisation.

Je suppose que toutes ces caractéristiques aident l'extension d'un cas d'utilisation Erlang dans les applications critiques.

Une chose Erlang n'est pas vraiment bon: le traitement de gros blocs de données.

20voto

Jason Trost Points 101

Nous avons construit un échange de paris (aka la prédiction de marché) à l'aide d'Erlang. Nous avons choisi Erlang plus de certains de la plus traditionnelle financiers langages (C++, Java, etc) en raison de la simultanéité. Les marchés fonctionnent de manière similaire à la téléphonie échanges. Notre CTO, a fait un exposé sur l'utilisation d'Erlang au CTO parler.

Nous avons également utiliser CouchDB et RabbitMQ dans le cadre de notre stack.

19voto

Brian Agnew Points 143181

Erlang vient de Ericsson, et est utilisé dans certains de leurs systèmes de télécommunications.

En dehors des télécoms, CouchDb (un document de base de données orientée) est peut-être le plus connu Erlang application de la mesure.

Pourquoi Erlang ? À partir de la vue d'ensemble (la peine de lire en entier):

Le document, d'afficher, de sécurité et de la réplication de modèles spéciaux le but de la requête de la langue, de l'efficace robuste et mise en page du disque et de la concurrent et à la fiabilité de l' Erlang plate-forme sont tous soigneusement intégré pour une solution fiable et l'efficacité du système.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X