Cosa rende Erlang adatto alle applicazioni cloud?

9

Stiamo avviando un nuovo progetto e implementiamo l'istanziazione delle nostre società di una nuvola openstack (vedi link ). Il progetto è strumenti di sicurezza per la nostra azienda. Attualmente gestiamo molte centinaia di server dedicati per gli strumenti di sicurezza e li stiamo trasferendo alla nostra istanza di istanza di openstack.

Altri progetti nella mia azienda attualmente usano erlang in diverse applicazioni server distribuite, e altri Q / A sottolineano che l'uso di ellang in diversi servizi cloud popolari. Sto cercando di convincere gli altri a considerare dove potrebbe essere applicabile al nostro progetto.

Quali sono i punti di forza di erlang per la programmazione cloud? Dove sono le aree è particolarmente appropriato usare l'erlang?

    
posta Duncan 10.09.2012 - 13:20
fonte

3 risposte

8

Oltre al fatto che Erlang è stato specificamente sviluppato per essere eseguito in situazioni concomitanti / parallelizzate / distribuite, le due tecniche principali che impiega per renderlo possibile sono:

Nessun effetto collaterale:

Questo significa che quando date a una funzione una parte di dati da eseguire contro, non eccetto in casi molto severi che influenzano qualcos'altro nel sistema / processo in esecuzione. Ciò significa che se si esegue contemporaneamente una funzione 300 volte contemporaneamente, nessuna di queste 300 esecuzioni della funzione avrà effetto su nessuna delle altre.

La tecnica di implementazione per garantire assenza di effetti collaterali è chiamata "immutabilità" che significa grossolanamente, non può essere mutata (modificata). Ciò significa che non appena si crea una variabile, il valore di tale variabile non può essere modificato. Erlang implementa questo comportamento con "assegnazione singola", quindi dopo aver assegnato un valore a una variabile, potresti non assegnargliene più un valore.

X = 1.
X = 2. // This is not a valid operation

Ciò garantisce che nessun codice possa accidentalmente modificare il valore di X causando una condizione di competizione, quindi è intrinsecamente thread-safe e l'uso concorrente diventa banale. Questo è un comportamento molto raro tra i linguaggi del software e il modo più grande in cui Erlang riesce ad essere così adatto per l'esecuzione simultanea.

Il modello degli attori:

Questo è un modo particolare di modellazione che ha dimostrato di rendere l'implementazione e la gestione dell'elaborazione simultanea molto semplice per gli sviluppatori. Direttamente da wikipedia (http://en.wikipedia.org/wiki/Actor_model):

The Actor model adopts the philosophy that everything is an actor. This is similar to the everything is an object philosophy used by some object-oriented programming languages, but differs in that object-oriented software is typically executed sequentially, while the Actor model is inherently concurrent. An actor is a computational entity that, in response to a message it receives, can concurrently: send a finite number of messages to other actors; create a finite number of new actors; designate the behavior to be used for the next message it receives. There is no assumed sequence to the above actions and they could be carried out in parallel. Decoupling the sender from communications sent was a fundamental advance of the Actor model enabling asynchronous communication and control structures as patterns of passing messages.[6]

    
risposta data 10.09.2012 - 16:07
fonte
9

Erlang è particolarmente strong nel calcolo concorrente / parallelizzato. In effetti, è stato progettato originariamente per quello scopo. Non ha nulla a che fare con il cloud, tranne che spesso, applicazioni pesanti per il calcolo sono parallelizzate e implementate in istanze "cloud" per facilitare la crescita / riduzione della capacità su richiesta.

Il resto parla solo di marketing.

    
risposta data 10.09.2012 - 13:25
fonte
3

Un aspetto del cloud diverso dalle implementazioni hardware tradizionali è la facilità con cui è possibile creare nuove istanze quando necessario. La possibilità di monitorare altri nodi e processi su altri nodi rende relativamente semplice la creazione di sistemi altamente dinamici che possono aggiungere o rimuovere vms e gestirli secondo le necessità.

Questo è particolarmente vero se stai costruendo il tuo sistema usando il framework OTP (Open Telecom PLatform) di erlang, che fornisce sia la struttura che i meccanismi (alberi supervisore) per supportare la costruzione di cose piuttosto sofisticate con molto meno effrot di quanto tu possa immaginare . Erlang gestisce tutti i bit più difficili in modo da non doverlo fare.

    
risposta data 11.09.2012 - 19:47
fonte

Leggi altre domande sui tag