Domanda

ho cercato a Akka di recente ed è abbastanza impressionante. E sembra che ha la maggior parte delle caratteristiche assassine di Erlang - trasparenza posizione, gerarchie di supervisione, e altro ancora. Ci sono tutte le caratteristiche Erlang ha quel Akka non lo fa?

È stato utile?

Soluzione

Disclaimer: io sono il PO per Akka

  • Erlang fa copy-on-send - usi Akka memoria condivisa (oggetti immutabili) per in-VM invia
  • Erlang fa per processo GC - Akka utilizza JVM GC
  • OTP - integra Akka con l'intero ecosistema Java (Apache Camel, JAX-RS , etc etc)
  • Erlang fa il processo pianificazione per voi - Akka consente di utilizzare molti diversi Dispatcher con configurazione senza fine opportunità
  • Erlang fa codice caldo ricaricare - Akka in grado di supportare, ma è meno flessibile a causa della JVM classloading

Sono quelli dalla parte superiore della mia testa.

D'altra parte, con mezzi Akka che è possibile utilizzare Scala, Java, Groovy o JRuby per scrivere le applicazioni.

Altri suggerimenti

processi

??In Erlang sono garantiti da commutare circa ogni 1000 riduzioni. In tale quadro naif come agente di Scala / Akka possiede un programmatore fino a quando non finisce il lavoro in ricezione. Scacco matto. Gioco finito. Hasta la vista :) persone, non perdete il vostro tempo su pseudo tecnici. I scioccato che ragazzi qui confrontare Scala con Erlang.

Inoltre ci sono molti altri cosiddetti "caratteristiche killer", ma qui è il mio consiglio, non pensare in termini di caratteristiche, pensare a idiomi che consente particolare linguaggio. Scala ruba "migliori caratteristiche", Erlang consente / te attrezzi con idiomi retto con sistemi di compilazione affidabile, con linguaggio di alto livello che guidato da quegli idiomi giuste. Quando si impara Erlang si sta ricostruendo la vostra mente, il vostro modo di pensare affidabile sistema distribuito, Erlang voi e gli aggiornamenti si insegna. Scala è solo un altro imperativo (oh, scusate, multiparadigmal, parola divertente) linguaggio che cerca di rubare buone caratteristiche da altre lingue.

Quasi nessuno parla di isolamento del processo. Senza garanzie di "il tuo filo non si scherza con la mia spazzatura", i sistemi distribuiti sono molto più difficili da ragionare su. (Sono già abbastanza difficile con i processi di Erlang.)

Per quanto ne so (che non è lontano, data la mia esperienza diretta limitata con la JVM), solo Erlang in realtà ottiene l'isolamento dei processi "a destra" sulla JVM. Mr. Google può dare alcuni suggerimenti su dove trovare la ricerca da Fox e Candea (?) Su sistemi di ricerca che utilizzano una tecnica di "micro-reboot" ( "recupero-oriented computing"). Un Erlang sviluppatore si legge che la ricerca e dice un paio di cose:

  1. Benvenuto nel club, quello che ci hai messo tanto?
  2. La JVM rende terribilmente, terribilmente difficile di aderire, però. : -)

Per quanto mi riguarda, il codice hot swapping in un intero cluster Erlang senza tempi di inattività (ad esempio: make:all([netload]). È una delle caratteristiche assassino Erlang

Ma cerchiamo di invertire la tua domanda: Che cosa significa Akka avere quella Erlang non lo fa? Naturalmente è possibile aggiungere decine di estensioni e librerie (Scala, Akka, primavera, OSGi, ...) per Java per cercare di avvicinarsi a Erlang. Ma dove è il punto? In sintesi tutte queste estensioni sono molto più complesse di imparare la semplice linguaggio Erlang che ormai ha dimostrato per oltre 2 decenni che può fare la parte superiore scalabilità lavoro offerta con zero downtime.

Probabilmente Erlang è meglio per i sistemi distribuiti più grandi (di seguito la risposta di vjache), ma per un server normale quando si vuole solo utilizzare tutta la potenza di CPU multiple allora Akka è buona scelta- fornisce una buona astrazione, le prestazioni e l'integrazione con l'ecosistema Java.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top