Domanda

Sto scrivendo un'applicazione di ricerca distribuita con Akka utilizzando un semplice master e una topologia multipla del lavoratore, con l'obiettivo di implementare a un cluster interno di nodi o all'interno di un cloud aziendale. (Quando Akka 2.1 diventa disponibile, guarderò l'utilizzo del supporto clustering)

La mia domanda: Qual è il modo più semplice / migliore per distribuire il mio codice (sotto forma di una cartella contenente un microkernel Akka) su ciascun nodo, avvialo, lascialo fare è cosa, quindi abbattere e ripetere il necessario?

    .
  • La directory del microkernel ed eseguibile è identico per ogni nodo lavoratore e solo pochi MB. La configurazione contiene l'IP di un master che si collegheranno a.
  • Io intendo avviare manualmente il master.
  • La resilienza non è una preoccupazione poiché questa non è un'applicazione critica aziendale, piuttosto un privato problema di ricerca
  • Nessun dato importante è memorizzato localmente ai lavoratori.
  • Dopo aver completato l'applicazione, potrei desiderare di ridistribuire un'applicazione diversa senza strappare i nodi (ad esempio avendo raffinato il codice CODEBASE).

Aggiornamento: ha scoperto che Condor nodes per supportare i lavori in esecuzione in modalità macchina intera. Questo dovrebbe supportare l'esecuzione del microkernel come un lavoro, e devi solo assicurarsi che i lavoratori uschino correttamente quando fatto.

Aggiornamento 2: Qualcuno menzionato Zookeeper potrebbe essere adatto a questo. Apprezzerebbe l'input da chiunque abbia esperienza.

È stato utile?

Soluzione

Ecco alcune idee. Non ho esperienza con Akka, ma conosco la griglia-calcolo e la distribuzione.

    .
  1. Utilizzare uno strumento di griglia esistente, ad esempio http://www.gridgain.com (che avere una versione GPL). Ho anche sentito parlare di persone che costruiscono una griglia con http://www.hazelcast.com/

  2. Utilizzare un cloud-in-box, come l'aeronautica, http://www.pistoncloud.com/press-releases/Piston-Cloud-Launches-Free-openstack-distribution/ . Sono sicuro che ci devono essere altri.

  3. Airframe viene fornito con fonderia cloud, credo, ma potresti guardarlo direttamente usandolo: https:// micro.cloudfoundry.com/ ma non è sicuro di come quella versione ridimensiona.

  4. Ruota il tuo sistema, installare in un'unica immagine VM, quindi clonabilelo sui tuoi altri nodi.

  5. Quando si tratta di rotolare il tuo, potresti farlo come segue, il che è molto simile a qualcosa che ho già sviluppato e funziona bene.

      .
    • Costruisci la tua applicazione usando Maven, usando le quali mai le biblioteche ti piacciono.

    • Spingere i binari costruiti in sonatype nexus.

    • Costruisci un launcher personalizzato, che fornito le coordinate di Maven di un modulo possono eseguirlo. Il mio Laucher controlla prima un repo MAVEN locale per i vasi, se non esistono, quindi scaricali da Nexus. Quindi costruisce un percorso di classe di tutti i vasetti nell'albero della dipendenza transitiva. Quindi crea un nuovo cardLoader con il nuovo classpath e la lancia la classe principale tramite il ClassLoader.

    • Scrivi un servizio, utilizzando Java-Service-Wrappe o simili, che all'avvio controlla quale versione del codice da eseguire leggendo alcune coordinate di Maven e il nome di una classe principale da Config. La configurazione potrebbe essere un file sull'unità di rete, l'URL preconfigurato, o anche Zookeeper. Lo passa quindi al lanciatore che scarica ed esegue il codice.

    • Installare questo servizio su molte macchine, manualmente o tramite clonazione di una VM.

    • profitto!

    Non sto menzionando Akka in particolare, poiché la maggior parte del tuo problema sembra essere come ottenere il codice in esecuzione su nodi Mulitple.

    Il percorso personalizzato ha funzionato bene per me, ma ho solo alcuni server che utilizzano questo, e tutto il mio computing della griglia appropriato viene eseguito in Data-Sinapse. Ma mi chiedo se dovessi ricominciare se una di queste open source Paas sarebbe una buona vestibilità.

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