Cónsul - Arquitectura

El diagrama de arquitectura para el cónsul que trabaja en un centro de datos se puede describir mejor como se muestra a continuación:

Como podemos observar, existen tres servidores diferentes, los cuales son administrados por Consul. La arquitectura de trabajo funciona mediante el uso del algoritmo de balsa, que nos ayuda a elegir un líder entre los tres servidores diferentes. A continuación, estos servidores se etiquetan de acuerdo con las etiquetas comoFollower y Leader. Como sugiere el nombre, el seguidor es responsable de seguir las decisiones del líder. Todos estos tres servidores están conectados entre sí para cualquier comunicación.

Cada servidor interactúa con su propio cliente utilizando el concepto de RPC. La comunicación entre los clientes es posible debido aGossip ProtocolComo se menciona abajo. La función de comunicación con Internet puede estar disponible mediante TCP o el método de comunicación de chismes. Esta comunicación está en contacto directo con cualquiera de los tres servidores.

Algoritmo de balsa

Raft es un algoritmo de consenso para administrar un registro replicado. Se basa en el principio deCAP Theorem, que establece que en presencia de una partición de red, se debe elegir entre consistencia y disponibilidad. No todos los tres fundamentos del teorema CAP pueden lograrse en un momento dado. En el mejor de los casos, uno tiene que intercambiar dos de ellos.

UNA Raft Clustercontiene varios servidores, generalmente en el recuento de números impares. Por ejemplo, si tenemos cinco servidores, permitirá que el sistema tolere dos fallas. En un momento dado, cada servidor se encuentra en uno de los tres estados:Leader, Followero Candidate. En una operación normal, hay exactamente un líder y todos los demás servidores son seguidores. Estos seguidores se encuentran en un estado pasivo, es decir, no emiten solicitudes por sí mismos, sino que simplemente responden a las solicitudes de los líderes y del candidato.

La siguiente ilustración describe el modelo de flujo de trabajo con el que funciona el algoritmo de balsa:

Datos de valor clave

Desde la versión 0.7.1 del Cónsul, ha habido una introducción de datos de valor clave separados. El comando KV se utiliza para interactuar con el almacén de valores-clave del Cónsul a través de la línea de comando. Expone comandos de nivel superior paraInserting, Updating, Reading y Deletingde la tienda. Para obtener el almacén de objetos de clave / valor, llamamos al método KV disponible para el cliente de cónsul -

kv := consul.KV()

los KVPair Structurese utiliza para representar una única entrada clave / valor. Podemos ver la estructura de Consul KV Pair en el siguiente programa.

type KVPair struct {
   Key string
   CreateIndex uint64
   ModifyIndex uint64
   LockIndex uint64
   Flags uint64
   Value []byte
   Session string
}

Aquí, las diversas estructuras mencionadas en el código anterior se pueden definir de la siguiente manera:

  • Key- Es un nombre de URL de barra. Por ejemplo, sitios / 1 / dominio.

  • CreateIndex - Número de índice asignado cuando se creó la clave por primera vez.

  • ModifyIndex - Número de índice asignado cuando la clave se actualizó por última vez.

  • LockIndex - Número de índice creado cuando se adquiere un nuevo candado en la entrada de clave / valor

  • Flags - La aplicación puede utilizarlo para establecer el valor personalizado.

  • Value - Es una matriz de bytes de un máximo de 512 kb.

  • Session - Se puede configurar después de crear un objeto de sesión.

Tipos de protocolo

Hay dos tipos de protocolo en Consul, que se denominan como:

  • Protocolo de consenso y
  • Protocolo de chismes

Entendamos ahora en detalle.

Protocolo de consenso

El Cónsul utiliza el protocolo de consenso para proporcionar consistencia como se describe en el teorema CAP. Este protocolo se basa en el algoritmo Raft. Al implementar el protocolo de consenso, el algoritmo de balsa se utiliza cuando los nodos de balsa están siempre en cualquiera de los tres estados: seguidor, candidato o líder.

Protocolo de chismes

El protocolo de chismes se puede utilizar para administrar la membresía, enviar y recibir mensajes en todo el clúster. En cónsul, el uso del protocolo de chismes ocurre de dos maneras,WAN (Red de área inalámbrica) y LAN(Red de área local). Hay tres bibliotecas conocidas, que pueden implementar un algoritmo Gossip para descubrir nodos en una red peer-to-peer:

  • teknek-gossip - Funciona con UDP y está escrito en Java.

  • gossip-python - Utiliza la pila TCP y también es posible compartir datos a través de la red construida.

  • Smudge - Está escrito en Go y usa UDP para intercambiar información de estado.

Los protocolos de chismes también se han utilizado para lograr y mantener una consistencia en la base de datos distribuida o con otro tipo de datos en estados consistentes, contando el número de nodos en una red de tamaño desconocido, difundiendo noticias de manera robusta, organizando nodos, etc.

Llamadas a procedimientos remotos

El RPC puede indicarse como la forma abreviada de llamadas a procedimiento remoto. Es un protocolo que usa un programa para solicitar un servicio de otro programa. Este protocolo se puede ubicar en otra computadora en una red sin tener que reconocer los detalles de la red.

La verdadera belleza de usar RPC en Consul es que nos ayuda a evitar los problemas de latencia que la mayoría de las herramientas de servicio de descubrimiento tenían hace algún tiempo. Antes de RPC, Consul solía tener soloTCP y UDPconexiones basadas, que eran buenas con la mayoría de los sistemas, pero no en el caso de los sistemas distribuidos. RPC resuelve estos problemas al reducir el período de tiempo de transferencia de información de paquetes de un lugar a otro. En esta área, GRPC de Google es una gran herramienta para mirar hacia adelante en caso de que uno desee observar puntos de referencia y comparar el rendimiento.