interfaz de comunicación gRPC para etcd

¡Acostúmbrate a escribir juntos! Este es el noveno día de mi participación en el "Nuggets Daily New Plan · April Update Challenge", haz clic para ver los detalles del evento .

interfaz de comunicación gRPC para etcd

Definición de cliente

type Client struct{
	Cluster  // 向集群里增加etcd服务端节点之类,属于管理员操作
	KV // 我们主要使用的功能,即操作K-V
	Lease // 租约相关操作,比如申请一个TTL=10s的租约
	Auth // 管理ETCD的用户和权限 属于管理员操作
	Watcher // 观察订阅,从而监听最新的数据变化
	Maintenance // 维护etcd,比如主动迁移etcd的leader节点,管理员操作
	UserName string // 认证的用户名
	Password string // 认证的密码
}
复制代码

API central de etcd

  • Servicio KV: crear, actualizar, obtener y eliminar pares clave-valor
  • Ver servicio: Ver cambios clave
  • Servicio de arrendamiento: implemente un par clave-valor de cliente caducado para renovar el arrendamiento para mantener el latido del corazón
  • Servicio de bloqueo: etcd proporciona soporte de bloqueo compartido distribuido
  • Servicio Electoral: exponer el mecanismo de elección del cliente

Descripción general del proceso de lectura y escritura

solicitud de lectura

El cliente selecciona un nodo etcd a través del equilibrio de carga y envía una solicitud de lectura. La capa de la interfaz API proporciona el método Range RPC. El servidor etcd intercepta la solicitud de lectura gRPC y llama al procesador correspondiente para procesar la solicitud.

  1. etcdctl creará un objeto de biblioteca clientv3 y seleccionará un nodo etcd adecuado
  2. Llame al método Range RPC del módulo KV Server para enviar la solicitud
  3. Interceptación de interceptores, principalmente para hacer algo de verificación y monitoreo.
  4. Llame a la interfaz Range del módulo KV Server para obtener datos

Lectura lineal: la lectura lineal es un concepto relativo a la lectura en serie. Habrá varios nodos etcd en el modo de clúster, y diferentes nodos pueden tener problemas de coherencia. La lectura en serie devuelve directamente los datos de estado sin interactuar con otros nodos en el clúster. Este método es rápido y tiene una sobrecarga baja, pero habrá inconsistencias en los datos. La lectura lineal requiere consenso entre los miembros del clúster, lo que tiene una sobrecarga y una velocidad de respuesta relativamente completa, pero garantiza la coherencia de los datos. El modo de lectura predeterminado de etcd es la lectura lineal.

La solicitud de consulta en etcd, que consulta una sola clave o un grupo de claves y el número de consultas, en realidad llamará al método de claves de rango en la capa inferior.inserte la descripción de la imagen aquí

  1. Consulte rápidamente el elemento de índice correspondiente keyIndex de la clave según BTree en treeIndex, y el elemento de índice contiene Revisión
  2. De acuerdo con la revisión de la información del número de versión consultada, use la búsqueda binaria en el búfer de caché de Backend, si acierta, volverá directamente
  3. Si el caché no cumple con las condiciones, busque en BlotDB (según el índice de BlotDB) y devuelva la información del par clave-valor después de la consulta.

solicitud de escritura

El cliente selecciona un nodo etcd para iniciar una solicitud de escritura a través del equilibrio de carga. El servidor etcd intercepta la solicitud de escritura gRPC . Después de que se involucra el monitoreo de la suma de verificación, el servidor KV envía una propuesta al módulo raft. El contenido es el comando de escritura de datos, el cual es reenviado a través de la Red. Luego de llegar a un acuerdo, luego de persistir los datos, el estado se convierte en el contenido de la propuesta de ejecución del módulo MVCC.

  1. El cliente selecciona un nodo etcd a través del algoritmo de equilibrio de carga e inicia una llamada gRPC
  2. el servidor etcd recibe la solicitud del cliente
  3. Después de la interceptación de gRPC y la verificación de cuotas, el módulo de cuotas se usa para verificar si el tamaño del archivo de base de datos etcd excede la cuota.
  4. El módulo KV Server envía la solicitud al raft de este módulo, el cual se encarga de comunicarse con el módulo raft etcd para iniciar una propuesta, el comando es put, foo, bar, es decir, se utiliza el método put para actualizar foo a bar
  5. Después de reenviar la propuesta, la mitad de los nodos persistieron con éxito
  6. Máquina de estado de actualización del módulo MVCC

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin juejin.im/post/7085155080701214734
Recomendado
Clasificación