Vedo una tendenza emergente nel computing "cloud" per spostare il carico di lavoro su un server di terze parti e ottenere addebiti per la quantità di lavoro svolto in questo modo. Questo potrebbe essere qualsiasi cosa, dal file hosting all'autenticazione dell'utente. Così ho riflettuto su questo per un po 'e ho pensato, perché questi servizi non possono essere offerti in modalità peer-to-peer piuttosto che in modalità client-server tradizionale.
Quindi la mia idea è di creare (al meglio delle mie capacità per descriverlo) una macchina virtuale con una scatola nera. Qualche programma che ospita un servizio Web su quel computer che consente a qualsiasi altro computer con questo software di chiedere di eseguire calcoli di qualsiasi tipo, a condizione che lo stesso possa essere richiesto dall'host, senza alcun "costo" finanziario di alcun tipo .
Ovviamente, sarebbe un rischio per la sicurezza senza le dovute precauzioni, quindi è necessario osservare quanto segue:
- Questo software ha il potere di rifiutare le richieste di esecuzione o di interrompere l'esecuzione in qualsiasi momento.
- Vengono passati i parametri che richiedono determinate autorizzazioni di accesso, tra cui include ma non sono limitate a:
- Utilizzo della memoria: quanti megabyte saranno presenti nel programma disposizione.
- Utilizzo del disco - Quanto spazio su disco può essere consumato.
- Namespace - Contesto per questo programma, che determina se avrà accesso allo spazio su disco scritto da altri programmi con questo spazio dei nomi.
- Utilizzo della CPU - La percentuale massima della CPU che può essere utilizzata durante i momenti di inattività e i momenti di inattività.
- L'accesso al "disco" è una scatola nera con radice "/" che viene simulata, nascondendo il contenuto del disco reale. Quando un programma viene eseguito, viene creata una cartella con il suo nome sotto "/ prog /" e viene data la possibilità di leggere e scrivere in qualsiasi cartella (inclusa la cartella di altri programmi, magari con un parametro che la richiede esplicitamente). Solo altri programmi sotto lo stesso spazio dei nomi possono vedersi, ma un programma può trovarsi in più spazi dei nomi.
- Una sorta di framework di analisi che determina statisticamente se il porting di lavori multi-thread su altre macchine virtuali black box è conveniente e, in caso affermativo, lo tenterà automaticamente. Tuttavia non chiederà alcun lavoro da un computer con parametri di risorse superiori ai parametri di risorsa che fornisce esso stesso ad altri computer. Significa, ottieni solo ciò che dai in breve.
- Se non vengono posti limiti su determinati tipi di risorse, un certo tipo di fail safe garantisce che la stabilità del computer non sia messa a rischio.
- Una sorta di potente sistema di moduli che consente alle persone di scrivere programmi per lavorare con questo sistema.
- Questi moduli avrebbero un modo amichevole per installarsi da installazioni su computer peer o in alternativa un modo per scaricare e installarsi da un sito internet.
- Questi moduli dovrebbero seguire le stesse linee guida di un programma eseguito su questo sistema.
La mia domanda è, a) e se esiste già qualcosa che lo fa in una certa misura e 2) quale lingua, piattaforma, sistema operativo consiglieresti di costruire questo programma?
Ero inclinato verso Java, dal momento che una macchina virtuale ha accesso completo a come vengono eseguiti i suoi programmi, quindi dovrei solo rielaborare il modo in cui i file vengono letti / scritti sul file system, ma nulla è scritto nella pietra. Qualsiasi consiglio sarebbe apprezzato, anche se è un consiglio che suggerisce questo tipo di cose non è possibile. Inoltre, se qualcuno ha un buon nome per questo programma, sono tutto orecchie. :)