Prima di tutto, mi scuso se questo è pubblicato nel sito sbagliato. Ho pensato che sia più adatto qui di SO perché la domanda è abbastanza generica, più una domanda di algoritmo che una specifica domanda di programmazione.
Ora lasciami descrivere lo scenario:
Ho un server cloud che, a causa di alcuni requisiti, deve connettersi a un altro server in Head Office tramite una VPN. Ci sono due indirizzi IP pubblici a cui il server può connettersi, diciamo IP_A e IP_B, serviti da due ISP diversi.
Ora, ISP A e ISP B non sono epitomi di stabilità; spesso le loro connessioni diventano instabili, anche se raramente allo stesso tempo. Quindi, ho scritto un demone che testerà periodicamente la qualità della connessione usando ping
. Se falliscono 4 ping in una riga, il demone disconnetterà la VPN attualmente connessa e passerà all'altro indirizzo IP.
Tuttavia, guardando attraverso il registro, a volte vedo una serie di errori di ping, ma non necessariamente 4 di fila. Esempio: fail - successo - successo - fallimento - successo - successo (e ripetizione per qualche tempo). Questo assomiglia ad un sicuro segno di instabilità, che il mio semplice rilevamento a 4 in fila non rileva.
Sto pensando di calcolare un "punteggio di instabilità in decomposizione", così che quando l'instabilità raggiunge una certa soglia, avviene l'interruttore VPN.
Il mio pensiero iniziale sarebbe di farlo in questo modo:
- Per ogni ping fallito, aumenta di E1 ^ (M * N), dove N è il numero di fail-in-a-row
- Per ogni ping riuscito, diminuire di E2
- Se si verifica un interruttore di connessione, reimposta il punteggio su 0
Pensi che questa sia una buona idea? O forse hai una strategia migliore per calcolare il "punteggio di instabilità"?