Recentemente ho aggiunto alcune funzionalità di bilanciamento del carico a un software che ho scritto. Si tratta di un'applicazione in rete che esegue alcuni scricchiolii di dati basati su input provenienti da un database SQL. Dato che il crunch può essere piuttosto intenso, ho aggiunto la possibilità di avere più istanze di questa applicazione in esecuzione su server diversi per suddividere il carico, ma poiché ora il bilanciamento del carico è un atto manuale. Un utente deve specificare quali istanze prendono quale parte del dominio di input.Protocolli heartbeat/Algoritmi o buone pratiche
Vorrei portarlo al livello successivo e programmare le istanze per negoziare automaticamente l'immersione dei dati di input e per riconoscere se uno di essi "scompare" (si è arrestato o è stato spento) in modo che le istanze rimanenti possono assumere il carico di lavoro dell'istanza non riuscita.
Per implementare questo obiettivo sto prendendo in considerazione l'utilizzo di un semplice protocollo heartbeat tra le istanze per determinare chi è online e chi no e mentre questo non è molto complicato vorrei sapere se ci sono network di heartbeat stabiliti protocolli (basati su UDP, TCP o entrambi).
Ovviamente questo accade molto nel mondo di networking con tecnologie di clustering, failover e alta disponibilità quindi suppongo che alla fine mi piacerebbe sapere se forse ci sono protocolli o algoritmi stabiliti che dovrei essere a conoscenza di o implementare.
EDIT
Sembra, sulla base delle risposte, che O non ci sono ben stabiliti protocolli battito cardiaco o che nessuno sa su di loro (il che implica che essi non sono così ben consolidata, dopo tutto) nel qual caso sto andando a rotolare il mio.
Mentre nessuna delle risposte ha offerto ciò che stavo cercando in particolare, ho intenzione di votare per Matt Davis's answer poiché era il più vicino e ha sottolineato una buona idea per usare il multicast.
Grazie a tutti per il vostro tempo ~
Sapete se è possibile personalizzare i messaggi heartbeat nativi di WebLogic per aggiungere alcune informazioni aggiuntive come la CPU corrente e/o il carico di rete? (per consentire algoritmi di bilanciamento del carico che utilizzano tali informazioni per evitare di sovraccaricare un server in difficoltà con più richieste) – XpiritO
Questa è più una domanda per Pascal (http://stackoverflow.com/questions/1442189/heartbeat-protocols-algorithms-or- best practice/1442255 # 1.442.255). Non sono così familiare con WebLogic - nel mio caso ho finito per usare ciò che avevo già iniziato a lavorare su una soluzione personalizzata basata su UDP. –