Penso che questo problema sia meglio ripreso nella mailing list di cassandra-user; quello è dove le persone sono.
Cassandra non ha il bilanciamento automatico del carico eppure ma potrebbe farlo in un futuro non troppo lontano. Il ramo 0.5 potrebbe essere capace di questo ora.
In sostanza, quando si esegue il bootstrap di un nodo su un sistema già in esecuzione, dovrebbe trovare un punto nell'anello che bilancia meglio il carico e si metta lì. Se si aggiungono nodi uno alla volta (ad esempio, se un nodo termina il bootstrap prima di aggiungerne un altro), questo dovrebbe funzionare piuttosto bene, a condizione che la distribuzione delle chiavi non cambi troppo nel tempo.
Tuttavia, le chiavi potrebbero cambiare nel tempo (soprattutto se sono basate sul tempo), quindi è consigliabile una soluzione alternativa.
Dipende da ciò che si desidera scansionare. Se è sufficiente selezionare la scansione PARTE della chiave, è possibile eseguire l'hash del bit su cui non si desidera eseguire la scansione dell'intervallo e utilizzarlo come prima parte della chiave.
userò il termine "partizione" qui per fare riferimento alla parte della chiave che non si vuole variare la scansione
function makeWholeKey(partition, key) {
return concat(make_hash(partition), partition, key);
}
Ora, se si vuole variare la scansione delle chiavi all'interno di una determinata partizione , è possibile impostare la scansione tra makeWholeKey (p, start) e makeWholeKey (p, end)
Ma se si desidera eseguire la scansione delle partizioni, si è fuori di sorte.
Ma è possibile rendere i nodi dotati di token distribuiti in modo uniforme attorno all'intervallo di output make_hash(), e si otterranno dati distribuiti in modo uniforme (presupponendo di avere ENOUGH partizioni che non si accumulano tutti su uno o due valori hash)
Ho trovato ulteriori dettagli sull'idea "l'aggiunta di hash alle chiavi" in questo blog http://blog.evanweaver.com/articles/2009/07/06/up-and-running-with-cassandra/ – deepblue