Ho lavorato su un grande sistema distribuito in genere con oltre 10.000 clienti che vivono su una singola rete (LAN) che accedono a un insieme centrale di API nel cloud. Non è esattamente un problema impegnativo. Dove diventa interessante è che a ogni cliente può essere richiesto di caricare una grande quantità di dati da un file 1 KiB a un file multi GiB. Una singola richiesta di caricamento avverrà ~ simultaneamente attraverso i client.
Parti del sistema che sono stocastiche:
- Quali client sono vivi.
- Da quanti client è richiesto un file.
- La dimensione del file.
- Il numero di richieste di file.
La mia domanda è: ci sono buoni documenti bianchi o algoritmi noti che potrebbero essere usati per coordinare tutti i client in modo che non sovraccarichino immediatamente la rete che stanno risiedendo e consumino tutta la larghezza di banda? Il problema principale sarebbe il router periferico poiché hanno risolto la larghezza di banda. Il risultato atteso sarebbe che i clienti escogitino un modo per coordinarsi con se stessi per completare alla fine la richiesta di file mantenendo al minimo l'uso della larghezza di banda e minimizzando la comunicazione con l'API durante questo processo.
Fino ad oggi, sto solo permettendo a un numero fisso di client di trasmettere grandi quantità di dati contemporaneamente. Non è ottimale anche se funziona. La limitazione della velocità standard è fuori dato che il sistema non può semplicemente arrestare le connessioni client poiché sono parte integrante della funzionalità del sistema.
La mia ipotesi sarebbe che qualcuno che lavora con map-reduce si sarebbe imbattuto in un problema simile. Inoltre, ho esaminato la possibilità di creare un protocollo per il voto locale e globale su priorità, simile al processo elettorale di MongoDB.
Esempio
Hai un'azienda di 100 dipendenti con una dorsale di 300x300 su Internet. Hanno client installati su tutti i loro laptop e server. Immaginiamo che ogni dipendente abbia un laptop e ci siano 10 server.
Se non è difficile concepire una situazione in cui ci sono molti file che coprono la maggior parte delle macchine e sono stati richiesti allo stesso tempo. Ciò potrebbe facilmente causare una situazione in cui tutta la larghezza di banda viene consumata per un breve periodo di tempo che influisce sulla consegna di tali file, il che probabilmente influirà sulla capacità del dipendente di svolgere il proprio lavoro.