Come instradare al server RMI più vicino?
-
05-07-2019 - |
Domanda
In seguito alla mia domanda Come migliorare il prestazioni dell'applicazione di architettura server client
Ho deciso di mantenere un database centralizzato e diverse configurazioni server-database slave. Ho intenzione di utilizzare Symmetric DS per replicare tra il database slave e master. Ogni configurazione del server-database verrebbe installata più vicino al client. Idealmente, desidero che la richiesta da un client instrada al database del server slave più vicino per l'ovvia ragione. Dal momento che sto usando RMI per connettermi al server, voglio sapere se c'è qualche prodotto / API attualmente disponibile, che risolverebbe questo?
Qualsiasi altra soluzione diversa da quella sopra è molto apprezzata :)
Nota: il refactoring del codice client è sicuramente un'alternativa ma poiché l'applicazione è molto grande, è un rischio enorme (può violare il codice esistente), richiedere tempo & amp; costoso.
Soluzione
Dai un'occhiata a hashing distribuito e coerente:
http://en.wikipedia.org/wiki/Distributed_hash_table#Keyspace_partitioning http://en.wikipedia.org/wiki/Consistent_hashing
Barebone, avresti impostato una variante di hashing coerente che avrebbe preso l'identificatore del client (al posto della 'chiave') e avrebbe localizzato il server più vicino. Il vantaggio in questo caso è che se uno degli slave si arresta, l'infrastruttura verrà indirizzata in modo trasparente al prossimo server più vicino.