Sono abbastanza sicuro che qualcuno ci abbia già pensato e lo abbia studiato a lungo, ma ho difficoltà a trovare materiali o parole chiave da cercare, per l'idea a cui stavo pensando recentemente.
Ho pensato a questo concetto, in cui nei sistemi distribuiti, il calcolo e l'elaborazione effettivi si sarebbero verificati sulla rete, piuttosto che sui nodi (server o client) sulla loro strada dall'origine alla destinazione. Laddove i router di rete oltre a instradare i pacchetti di rete sul nodo successivo fino alla consegna alla destinazione, eseguono anche alcune istruzioni incorporate in quei pacchetti.
Quindi, ad esempio, un pacchetto di rete verrebbe diviso in due aree: dati e istruzioni (+ alcune intestazioni) e quando un router instrada un pacchetto sul router successivo, invierebbe un pacchetto trasformato secondo le istruzioni incorporate:
+----------------------+
|Network Packet Headers|
+----------------------+
| DATA SLOT 1 |
| DATA SLOT 2 |
| .......... |
| DATA SLOT N |
+----------------------+
| Increment slot1 |
| SLOT3 = SLOT1 + SLOT2|
+----------------------+
| instruction ptr |
+----------------------+
In modo che quando quei pacchetti di rete arrivassero alla loro destinazione, una parte di esso (a seconda di quanti cerchi doveva passare) sarebbe già stata calcolata (ad esempio audio decodificata, ecc.) scaricando entrambi gli endpoint.
I router sono tecnicamente in grado di farlo. Elaborano i dati in base ai valori del pacchetto di rete, ad esempio scegliendo dove inviare il pacchetto successivamente in base all'intestazione IP. Non c'è nulla che impedisca loro di essere utilizzati come "la vera nuvola", giusto? Ogni router eseguirà un pacchetto o un paio di istruzioni da quel pacchetto (e aggiornerà il puntatore dell'istruzione) a seconda delle sue risorse e capacità HW. Quindi un pacchetto di rete sarebbe uno stack frame anziché solo un pacchetto di rete.
Naturalmente, esiste un'intera classe di problemi associati a questo modello, come i dati di partizionamento (o anche la possibilità di farlo), ma è tutto basato su vecchi concetti di calcolo eterogeneo e programmazione funzionale.
Qualcuno potrebbe indicarmi una ricerca, materiali o progetti che trattano concetti simili?
Grazie!