Red de Respuestas Legales - Derecho empresarial - ¿Cómo garantiza el algoritmo hash coherente la coherencia de los datos?

¿Cómo garantiza el algoritmo hash coherente la coherencia de los datos?

El principio del método de corte de anillo (hash consistente) es el siguiente:

1 Durante la inicialización, se genera un número fijo de caracteres con el número de fragmentos X × el. número de anillos N cadena, como SHARD-1-NODE-1, y calcula todos los valores hash de todas las cadenas X × N.

2. Coloque todos los valores hash calculados en un mapa ordenado y ordene todos los elementos que contiene.

3. Al ingresar una cadena, calcule el valor hash de la cadena de entrada, verifique entre qué dos elementos se encuentra el valor hash y tome el fragmento correspondiente al elemento más pequeño que el valor hash como fragmento de datos. .

Método de salto (jumpstringhash) El principio del método de salto es el siguiente: 1. Según la fórmula:

Distribuya uniformemente la probabilidad de que los datos caigan en cada nodo.

2. Calcule el valor hash de la cadena de entrada y determine si el valor pseudoaleatorio generado cada vez es menor que el nodo 1/x determinado actualmente. Finalmente, capture el número de nodo con el número más grande. se utiliza como punto de aterrizaje de los datos. 3. En el uso real, el método recíproco se utiliza para realizar un juicio inverso a partir del valor máximo del nodo. Una vez que el valor pseudoaleatorio generado es mayor que x, el nodo x se considera el punto de aterrizaje de los 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 pruebas para 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

Proceso de prueba:

1. Ejecute la tarea de fragmentación de los datos de prueba a través de los respectivos métodos de prueba.

2. Método de prueba: registre la variación de los resultados de la fragmentación; registre el tiempo desde el inicio de la fragmentación hasta el final de la fragmentación; registre la diferencia máxima entre los resultados de la fragmentación y el promedio.

3. Dado que se requiere que el número de fragmentos sea un factor de 1024 en el método modular PartitionByString, el proceso de prueba solo puede usar la forma exponencial de 2 para las pruebas y no se aplica cuando se prueba PartitionByString. Trunca la dirección MAC y toma la longitud completa para realizar pruebas.