Come determinare l'origine di una richiesta in un sistema di servizio distribuito?

6

Mappa / Riduci è un grande concetto per l'ordinamento di grandi quantità di dati contemporaneamente. Cosa fare se si dispone di piccole parti di dati e è necessario ridurlo tutto il tempo?

Semplice esempio: scegliere un servizio per la richiesta.

Immagina di avere% servizi di10. Ciascuno fornisce servizi host con set di richiesta headers e post / ottieni argomenti. Ogni servizio dichiara che ha 30 chiavi univoche - 10 per set.

service A:
name
id
...

Ora immaginiamo di avere un host di servizi distribuiti. Abbiamo 200 di macchine con servizi di 10 su ciascuna. Ogni servizio ha 30 di chiavi univoche in questi set. ma ora per trovare a quale servizio mappare la richiesta in arrivo, facciamo in modo che i nostri servizi pubblichino valori univoci che si associano a tali insiemi. Possiamo avere fino ao più di 10 000 di questi valori su ogni macchina per ogni servizio.

service A machine 1
name = Sam
id = 13245
...
service A machine 1
name = Ben
id = 33232
...
...
service A machine 100
name = Ron
id = 777888
...

Quindi otteniamo 200 * 10 * 30 * 30 * 10 000 == 18 000 000 000 e otteniamo 500 richieste al secondo sul nostro gateway ciascuna contenente 45 elementi 15 di cui sono solo noise . E il nostro compito è trovare un servizio per richiesta (almeno una macchina su cui è in esecuzione).

Su tutte le macchine su tutto il cluster per gli stessi servizi abbiamo le stesse regole.

Possiamo prima selezionare a quale servizio è arrivata la nostra richiesta tramite il filtro delle regole 10 * 30 . e avremo 200 * 30 * 10 000 == 60 000 000 .

Quindi ... 60 mil è sicuramente un problema ... Spero di avere l'idea di mappare 30 * 10 000 su una rete neurale artificiale allo stesso modo Perceptron che emette 1 se 30 parole (alcuni hash da parole) dalla richiesta sono corretti o se inferiore a Perceptron deve restituire 0. E io invieremo ciascun Perceptron per ciascun servizio da ogni macchina al gateway. Quindi avrei una mappa Perceptron <-> machine per ogni servizio.

Qualcuno può essere alto se la mia idea di Perceptron è almeno "sana di mente"? O le persone normali lo fanno in un altro modo? O se ci sono migliori ANNs per tali scopi?

    
posta Kabumbus 03.09.2011 - 19:49
fonte

1 risposta

1

Perché non aggiungere solo un ID macchina sopra all'identificativo del servizio? In questo modo hai 31 chiavi univoche, che specificano sia il servizio che la macchina, e ti rimane una ricerca su 10000.

Inoltre, non capisco davvero i tuoi calcoli. Da quello che vedo, assomiglia più a:

Hai scelto tra (200 macchine) * (10 servizi per macchina) * (10000 valori per servizio).

Se si filtra per servizio in base alle 30 chiavi, si sta esaminando (200 macchine) * (1 servizio) * (10000 valori per servizio). Da dove vengono i 30 in più?

    
risposta data 16.09.2011 - 00:03
fonte