2009-02-05 8 views
12

Erlang si sta guadagnando la reputazione di essere intoccabile nel gestire un grande volume di messaggi e richieste. Non ho avuto il tempo di scaricare e cercare di entrare nella comprensione del signor Erlang della teoria del passaggio ... quindi mi chiedo se qualcuno può insegnarmi (o indicare un buon sito di istruzioni.)Qual è il segreto di Erlang per la scalabilità?

Ho pensato di portare l'Erlang ejabberd a una combinazione di Python e C, in un modo che mi ha dato la stessa velocità e scalabilità. Quali strutture o modelli dovrei capire e attuare? (Twisted di non Python già fare questo?)

risposta

13

How/why do functional languages (specifically Erlang) scale well? (per la discussione del perché)

http://erlang.org/course/course.html (per una catena tutorial)

Per quanto riguarda il porting ad altre lingue, un sistema di scambio di messaggi sarebbe stato facile fare nella maggior parte delle lingue moderne. Ottenere lo stile funzionale può essere fatto in Python abbastanza facilmente, anche se non si otterrebbero le funzionalità di dispacciamento interno di Erlang "gratuitamente". Stackless Python può replicare molte delle funzioni di concorrenza di Erlang, anche se non posso parlare ai dettagli perché non l'ho usato molto. Se sembra essere molto più "esplicito" (nel senso che richiede di definire la concorrenza nel codice in luoghi in cui il design di Erlang consentirà che la concorrenza avvenga internamente).

+0

Oops! Grazie! Questo è un grande aiuto. Sono sorpreso che il duplicato di controllo delle domande di SO non mi abbia portato a quello. –

4

Erlang non è solo scalabilità ma soprattutto di

  • affidabilità
  • morbide caratteristiche real-time (abilitato da molle GC tempo reale che è possibile perché immutability [senza cicli] e condividere nulla e così)
  • prestazioni in compiti concomitanti (interruttore a buon compito, a buon mercato di spawn processo, gli attori modello, ...)
  • scalabilità - discutibili in stato attuale, ma in rapida evoluzione (circa 32 nuclei bene, è meglio che la maggior parte dei concorrenti, ma dovrebbe essere meglio in ne ar futuro).
+1

Sì, ma questa è la definizione di "ben fatto scalabilità". Scalabilità senza affidabilità, prestazioni o capacità in tempo reale non sono così utili;) – daitangio

2

Un'altra delle caratteristiche di erlang che hanno un impatto sulla scalabilità sono i processi economici a basso costo. Poiché i processi hanno un sovraccarico così basso, l'erlang può generarne molti più rispetto alla maggior parte delle altre lingue. Ottieni più soldi per il tuo denaro con i processi di erlang rispetto a molti altri linguaggi.

1

Penso che la scelta migliore per Erlang sia le applicazioni di rete - rende la comunicazione molto più semplice tra i nodi e cose come il monitoraggio del battito cardiaco, il riavvio automatico tramite supervisore sono integrati in OTP.