Algoritmo de hash consistente, MD5, CRC32 u otro, ¿qué algoritmo es mejor implementar?
1 Durante la inicialización, se genera una cadena numerada de forma fija con el número de segmentos x x el número de cortes de anillo n. , como SHARD-1-NODE -1, calcula todos los valores hash de todas las cadenas x x n.
2. Coloque todos los valores hash calculados en un mapa ordenado y ordene todos los elementos que contiene.
3. Cuando se ingresa una cadena, calcule el valor hash de la cadena de entrada, verifique entre qué dos elementos se encuentra el valor hash y seleccione el fragmento correspondiente al elemento más pequeño que el valor hash como datos. fragmento.
Los principios del método del salto son los siguientes: 1. Según la fórmula:
La probabilidad de que los datos caigan en cada nodo está distribuida uniformemente.
2. Calcule el valor hash de la cadena de entrada, determine si el valor pseudoaleatorio generado es menor que el nodo 1/x determinado actualmente y finalmente tome el nodo de captura con el número más grande como datos. punto de descarte. 3. En el uso real, se utiliza el método recíproco para realizar un juicio inverso a partir del valor máximo del nodo. Una vez que el valor pseudoaleatorio generado es mayor que X, se considera que el nodo X es el punto de aterrizaje de datos.
Comparación de datos
A continuación se comparará el rendimiento y el equilibrio del método de corte de anillos y el método de salto a través de experimentos, y se explicará por qué DBLE utiliza el método de salto en lugar del método de corte de anillos. .
Fuente de datos: 350595 datos de campo.
Después de la prueba:
1. Realice la tarea de dividir los datos de prueba a través de sus propios métodos de prueba.
2. Método de prueba: registre la varianza de los resultados de la segmentación; registre el tiempo desde el inicio del segmento hasta el final del segmento; registre la diferencia máxima entre los resultados de la segmentación y el valor promedio.
3. Dado que el método PartitionByString requiere que el número de fragmentos sea un factor de 1024, el proceso de prueba solo se puede probar en una forma exponencial de 2 y la dirección MAC no se trunca al probar PartitionByString. método, y la longitud completa se utiliza para las pruebas.