El ozono uso BlockCommitSequenceId en el envase

prefacio


En el ozono, la consistencia del estado del envase como para actualizar el nodo Pipeline Organización StateMachine de la forma. Pero aquí el rostro de algunos de los casos extremos que pueden estar presentes, como el reinicio repentino nodo Pipeline, directorio de contenedores eliminación accidental, necesitamos tener otros medios para mostrar el estado más reciente de contenedores se encuentra actualmente. De esta manera podemos saber si un contenedor de estado almacenada en la copia en la tubería entre nodos es consistente, coherente bloque contiene los datos, y así sucesivamente. Con este fin, la comunidad presentó un transactionId tipo auto-energizante en un recipiente, que indica el estado actual de la última de contenedores. El autor de este artículo para hablar sobre el tipo de ID de transacción auto-energizante en la implementación y uso de ozono de contenedores.

Recipiente de ozono 自 增 型 transactionId: BlockCommitSequenceId


Aquí quiero introducir primero introducir ozono ID del Contenedor incrementar el origen del tipo. En el ozono, Block recipiente está provisto de la unidad de almacenamiento de datos externo, que aceptará los datos de la solicitud de lectura interno al bloque externo. En resumen, un contenedor en el caso de su espacio de sobra, habrá un flujo constante de bloque de escritura de datos externa. Dada la máquina de retardo que puede haber diferentes ejemplares de los mismos contenedores de comunicaciones, redes, y la velocidad de escritura de datos habrá problemas, y por lo tanto de contenedores al mismo tiempo en el último "estado de los datos" será diferente. Si cada uno de nosotros como una operación de transacción, a continuación, la aplicación de la última transacción de contenedores será el último "estado de datos." En última instancia, sin embargo, una copia del cual se ejecuta la operación de escritura de contenedores de transacción, y luego llegar a un "estado de datos." Acuerdo final

Entonces la pregunta es, en Ozone, ¿cómo podemos lograr este transactionId ella? operador Id necesita asegurar que cada nodo en el contenedor de la tubería que tiene propiedades únicas. En ozono en, DataNode es lograr la consistencia operación de contenedores se controla por medio de Apache + Ratis ContainerStateMachine, y la propia ContainerStateMachine será aplicable a partir del servidor de registro Balsa Balsa, podemos sacar el máximo provecho de la balsa de Registro de ID como el identificador de actualización Envase de transacción. En este caso, no tenemos otra generación de exclusiva transactionId de contenedores. Aquí, el ozono presente transactionId llama BlockCommitSequenceId, lo que significa Id después de cada presentación escrita del bloque de datos.

BlockCommitSequenceId seguir los siguientes principios:

Los BlockCommitSequenceId final de múltiples copias del mismo recipiente es consistente, es decir, el final de la consistencia Container "estado de datos". Si hay menos de la fecha actual ID de transacción BlockCommitSequenceId de Contenedores en el momento de la escritura, que explicó que había sido escrito antes Bloquear estos datos, se puede pasar por alto esta operación de escritura.

BCSID (BlockCommitSequenceId corto), además de la actualización del nivel de contenedor, sino que también se grabará en cada bloque de datos, como un atributo de ID almacenado en la información de bloque.

Este proceso de conversión se muestra en la figura siguiente:
Aquí Insertar imagen Descripción
La adición figura muestra BCSID mantiene el último valor de un recipiente en el exterior, los datos de bloque es escrita en cada uno teniendo también una BCSID respectivo.

BlockCommitSequenceId uso previsto


BCSID se registra y actualiza en un recipiente, a continuación, lo que se ha previsto el uso de la misma adicional?

El escenario de uso en BCSID de ozono, que tiene al menos los siguientes propósitos:

  • Determinar si el estado de datos entre el recipiente réplica es coherente. Por ejemplo, al hacer operación de replicación de contenedores al comprobar las copias existentes de contenedores BCSID estado y el centro de servicio de gestión de SMC mantenida por BCSID si, y si no, la operación no se lleva a cabo de contenedores de replicación. Si es así, la operación realizada recipiente se cierra, y la replicación posterior operación.
  • Recipiente para determinar si DataNode cambios en los datos locales del estado. Si los cambios de datos se producen DataNode estado del envase antes y después de la reanudación, se BCSID va a cambiar, si el valor del registro actual de BCSID antes del reinicio, tras el reinicio, carga BCSID encontrar valores diferentes, entonces los datos han cambiado. Estos datos indican que este cambio se ha producido de contenedores, estado poco saludable.

cita


[1] .https: //issues.apache.org/jira/browse/HDDS-1843
[2] .https: //issues.apache.org/jira/browse/HDDS-935
[3] .https: // issues.apache.org/jira/browse/HDDS-603

Publicados 388 artículos originales · ganado elogios 424 · Vistas 2,07 millones +

Supongo que te gusta

Origin blog.csdn.net/Androidlushangderen/article/details/104736032
Recomendado
Clasificación