Zookeeper artículo en profundidad la comprensión de los conocimientos básicos, que se merece 2020

lectura recomendada


¿Cuál es ZooKeeper?

ZooKeeper es un servicio de coordinación distribuida para la gestión de mainframe. En un entorno distribuido, la coordinación y servicios de gestión es un proceso complejo. ZOOKEEPER resolver este problema a través de su arquitectura simple y API. ZooKeeper permite a los desarrolladores concentrarse en la lógica de la aplicación principal sin tener que preocuparse acerca de la naturaleza distribuida de aplicaciones.

Servicios comunes proporcionados por ZooKeeper

  • Servicio de nombres - por nombre identifica los nodos del clúster. Es similar a DNS, pero sólo para el nodo.
  • gestión de la configuración - la adición de nodos reciente y la última información de configuración del sistema.
  • Administración de clúster - en tiempo real de unirse / dejar nodos en el estado del clúster y el nodo.
  • algoritmo de elección - una elección nodo como efectos de coordinación líder.
  • Bloqueo y servicio de sincronización - datos de bloqueo, mientras que la modificación de datos. Este mecanismo puede ayudar automáticamente la conmutación por error cuando se conecta a otras aplicaciones distribuidas (como Apache HBase).
  • Registro de datos de gran fiabilidad - datos pueden obtenerse incluso cuando están apagados en uno o varios nodos.

modelo de datos Zookeeper

Aquí Insertar imagen Descripción

  • Es muy parecido a los datos entre los árboles, pero también muy parecido a un directorio del sistema de archivos.
  • Árbol se compone de nodos, el nodo de almacenamiento de datos Zookeeper se basa también, este nodo se llama Znode. Sin embargo, el nodo es diferente del árbol, el znode referencia de la trayectoria de referencia, similar a una ruta de archivo . Tal estructura jerárquica, de manera que cada nodo tiene un Znode el único camino, al igual que el espacio de nombres que el aislamiento clara de información diferente.

Znode que elementos contenidos

Aquí Insertar imagen Descripción

  • datos: almacenamiento de datos Znode.
  • ACL: acceso al registro Znode, que es quién o qué se puede acceder a este nodo IP.
  • STAT: Znode que contiene varios metadatos, tales como ID de transacción, número de versión, marca de tiempo, el tamaño, etc.
  • niño: una referencia a los hijos del nodo actual

Nota: Zookeeper para la lectura y la escritura poco diseño escena. Znode no se utiliza para almacenar datos de negocios masivos, pero se utilizan para almacenar una pequeña cantidad de información de estado y configuración, los datos máximos para cada nodo no puede exceder de 1 MB.

tipo Znode

  • Znode se divide duradera nodo (persistente), el nodo de secuencia (secuencial) y el nodo temporal (efímera).
    • nodo persistente - incluso después, todavía existe la creación de este particular cliente se desconecta znode nodo duradera. Por defecto, a menos que se indique lo contrario, todos los znode son persistentes.
    • nodo temporal - cliente activo, de manera temporal nodo es válido. Cuando el cliente se desconecta con la colección ZooKeeper, se eliminará automáticamente el nodo temporal. Por lo tanto, sólo el nodo temporal no permite que los niños. Si se elimina el nodo temporal, el siguiente nodo apropiado a su posición de llenado. nodo líder provisional juega un papel importante en la elección.
    • nodo de orden - el orden nodo puede ser permanente o temporal. Znode Cuando se crea un nuevo nodo como una secuencia, ZooKeeper por número de serie de 10 bits anexado al nombre del conjunto camino znode originales. Por ejemplo, si crea un znode ruta / miaplicacion de un nodo secuencial, entonces el camino va a cambiar ZooKeeper / myapp0000000001, y el siguiente número de secuencia a 0000000002. Si dos nodos secuenciales se crean al mismo tiempo, no será el mismo para cada znode ZooKeeper usando digital. Con el fin de bloqueo de nodo y la sincronización de jugar un papel importante.

arquitectura ZooKeeper

  • ZOOKEEPER de "arquitectura cliente - servidor."
    Aquí Insertar imagen Descripción
  • Cada componente se describe en
sección descripción
Cliente El cliente, un nodo en el clúster de nuestras aplicaciones distribuidas, y acceder a información desde el servidor. Para un intervalo de tiempo particular, cada cliente envía un mensaje al servidor para que el servidor conoce el cliente está activo. Del mismo modo, cuando se conecta el cliente, el servidor envía el código de confirmación. Si el servidor conectado no responde, los clientes redirigir automáticamente el mensaje a otro servidor.
Servidor Servidor, nuestro nodo en general una en ZooKeeper, ofrece a sus clientes todos los servicios. Envía un código de confirmación para indicar al servidor que el cliente está activo.
Conjunto ZooKeeper grupo de servidores. Número mínimo de nodos es 3 para formar el deseado conjunto.
Líder nodo Server, si cualquier nodo conectado falla, la recuperación automática. Líder es elegido cuando se inicia el servicio.
Seguidor Siga el nodo del servidor de instrucciones líder.

El funcionamiento básico del Zookeeper

  • La creación de nodos create
  • nodo de eliminación delete
  • Determinar si hay un nodoexists
  • La obtención de datos de un nodogetData
  • Ajuste de los datos de un nodosetData
  • Obtiene todos los nodos secundarios del nodogetChildren

existe, getData, getChildren operación de lectura pertenece.

  • Zookeeper cliente cuando solicita una operación de lectura, puede seleccionar si desea configurar reloj.

Relojes (control)

  • El monitoreo es un mecanismo sencillo que permite que el cliente reciba la notificación de ZooKeeper listo para el cambio. El cliente puede ser proporcionada en el momento de la lectura de un znode Relojes particular. Relojes enviará ningún znode (registro del cliente) para clientes registrados notificados del cambio.
  • Znode cambio es un niño o znode modificar los datos asociados a los cambios znode. Sólo una vez desencadenar relojes. Si el cliente quiere darse cuenta Una vez más, hay que hacerlo de otra operación de lectura. Cuando la sesión de conexión expira, el cliente será desconectado del servidor, también se eliminarán los relojes relacionados.

Sessions (sesiones)

  • ZooKeeper sesión es muy importante para la operación. sesión solicitando a cabo en orden FIFO. Una vez que el cliente se conecta al servidor, el cliente establecerá una sesión y asignar un identificador de sesión.
  • El intervalo de latidos de envío del cliente en el momento específico eficaz para mantener la sesión. Durante el (tiempo de espera de sesión) especificado cuando el servidor está encendido sobre si colecciones ZOOKEEPER no se reciben de los latidos del corazón del cliente, que determinará los cliente se bloquea.
  • Session Timeout típicamente en milisegundos. Cuando la sesión termina por cualquier razón, se eliminará el nodo temporal creado durante esa sesión.

flujo de trabajo empleado del zoológico

  • Una vez que se inicia recolección de ZOOKEEPER, espera a que las conexiones del cliente. El cliente se conecta a un conjunto de nodos ZooKeeper. Puede ser un líder o un nodo de seguimiento. Una vez que el cliente está conectado, los nodos se les asignará una determinada sesión de cliente de identificación para el cliente envía un acuse de recibo. Si el cliente no recibe un acuse de recibo, intenta conectarse a otro nodo de recogida ZooKeeper. Una vez conectado al nodo, el cliente enviará un latido del corazón a intervalos regulares al nodo para garantizar que las conexiones no se pierden.
    • Si el cliente quiere leer un znode particular, se enviará una solicitud de lectura a la trayectoria znode nodo que tiene y el nodo adquiere su propia base de datos para devolver el znode solicitado. Con este fin, la velocidad de lectura ZooKeeper configurar rápidamente.
    • Si el cliente quiere establecer en ZooKeeper, se transmite a la ruta de datos y almacenamiento de datos del servidor znode. El servidor envía la petición al líder de conexión, el líder y el seguidor volverá a publicar la totalidad de la solicitud de escritura. Si sólo el nodo respuesta más exitosa, la solicitud de escritura se realiza correctamente, un código de retorno correcto será enviado al cliente. De lo contrario, la solicitud de escritura falla. La gran mayoría de los nodos se llaman quórum.
      Aquí Insertar imagen Descripción
paquete descripción
Write (escritura) proceso de escritura manejado por el nodo líder. líder enviará la petición de escribir todo znode, y esperar la respuesta znode. Si la mitad de la znode respuesta, el proceso de escritura se ha completado.
Read (lectura) La lectura se realiza por un interior conexión znode específica, no hay necesidad de interactuar con el clúster.
Copiar la base de datos (base de datos replicada) Se utiliza para almacenar datos en el cuidador del zoológico. Cada znode tiene su propia base de datos, cada uno en znode ayuda conformidad cada uno tiene los mismos datos.
Líder Líder es responsable de manejar una solicitud de escritura Znode.
Seguidor seguidor solicitud de escritura recibido de un cliente, y las envía a la znode líder.
procesador de solicitud (SOLICITUD procesador) Sólo existe en el nodo líder. Gestiona la solicitud de escritura desde el nodo de seguimiento.
átomo de emisión (emisiones atómicas) Responsable de los cambios en la radiodifusión de líder al nodo nodo seguidor.

consistencia Zookeeper

ZOOKEEPER como distribuidos servicios de coordinación del sistema, si su caída de cómo tratar con él?

  • Con el fin de evitar un bloqueo autónomo, Zookeeper mantiene un clúster. La figura siguiente:
    Aquí Insertar imagen Descripción
  • Servicio de clúster empleado del zoológico es una estructura principal de esclavos múltiples.
    • Al actualizar los datos, la primera actualización al nodo principal (en este caso se refiere a un nodo de servidor, no znode), re-sincronización al nodo.
    • Cuando la lectura de datos, leer directamente desde cualquier nodo.
    • Para garantizar la coherencia de datos desde el nodo maestro, utilizando el protocolo Zookeeper ZAB que es muy similar a y consistente Paxos algoritmo de balsa.

escenarios de aplicación del guardián

Bloqueo distribuido

  • Este es un investigador de diseño en Yahoo Zookeeper mente. nodo Zookeeper utilizando el orden temporal se puede distribuir fácilmente cerradura.

el registro del servicio y el descubrimiento

  • Uso Znode y Vigía, se puede lograr servicios de registro y descubrimiento distribuidos. La aplicación más famosa se distribuye marco RPC Dubbo Ali.

El intercambio de información de configuración y estado

  • CODIS Redis distribuye soluciones, en el uso de meta-información Zookeeper para almacenar datos, y la tabla de enrutamiento CODIS-proxy nodo. Mientras tanto comandos CODIS-config pondrá en marcha sincronizada a cada CODIS-proxy sobrevivir a través de ZooKeeper.
  • Además, Kafka, HBase, Hadoop, Zookeeper también se basan en la información del nodo de sincronización para lograr una alta disponibilidad.

Cuanto más se sabe, más usted no sabe.
Forma correcta sin necesidad de cirugía, los pacientes aún pueden buscar, no hay ninguna manera de la cirugía, poniendo fin a la cirugía.
Si usted tiene otras preguntas, mensaje de bienvenida, podemos discutir, aprender juntos y progresar juntos

Ha publicado 196 artículos originales · alabanza 118 won · vistas 10000 +

Supongo que te gusta

Origin blog.csdn.net/qq_40722827/article/details/105182718
Recomendado
Clasificación