Arquitectura y principios de Nacos: modelo de datos del servicio de registro (versión 2.x)


inserte la descripción de la imagen aquí


Servicio (Servicio) e Instancia de servicio (Instancia)

  • En el descubrimiento de servicios, un servicio es una abstracción de la funcionalidad del software (como inicio de sesión o pago) proporcionada por una aplicación. El servicio es diferente de la aplicación y el alcance de la aplicación es más amplio. El servicio pertenece a la relación de inclusión de la aplicación y la aplicación puede proporcionar múltiples servicios.
  • Para diferenciar y controlar los servicios a un nivel detallado, Nacos elige el servicio como el concepto más básico del registro.
  • Una instancia de servicio es un nodo de proveedor específico de un servicio. Una instancia pertenece a un solo servicio y un servicio puede contener una o más instancias.
  • En muchos escenarios, las instancias también se denominan proveedores de servicios y las instancias que usan servicios son consumidores de servicios.
  • Nacos considera el servicio como la unidad básica del centro de registro, y la instancia es el nodo proveedor específico del servicio. Una instancia pertenece a un solo servicio y un servicio puede contener varias instancias.
  • Las instancias también se denominan proveedores de servicios, y quienes las utilizan son consumidores de servicios.

definir servicio

inserte la descripción de la imagen aquí

  • Namespace (Namespace): El concepto superior y más completo en el modelo de datos de Nacos, que se utiliza para definir en escenarios que requieren un aislamiento obligatorio, como entornos o inquilinos. Los servicios de Nacos también necesitan usar espacios de nombres para el aislamiento.
  • Agrupación (Group): un concepto de aislamiento en el modelo de datos de Nacos que es inferior a los espacios de nombres. A diferencia del atributo de aislamiento obligatorio de los espacios de nombres, la agrupación es un concepto de aislamiento débil y se usa principalmente para distinguir lógicamente algunos escenarios de uso de servicios o diferentes aplicaciones. Para servicios con el mismo nombre, los casos más utilizados son el grupo de prueba y el grupo de producción del mismo servicio, o utilizar el nombre de la aplicación como un grupo para evitar que los servicios proporcionados por diferentes aplicaciones tengan el mismo nombre.
  • Nombre del servicio (Nombre): el nombre real del servicio, que generalmente se usa para describir que el servicio proporciona una determinada función o capacidad.

Por lo general, se recomienda utilizar una combinación del entorno operativo como espacio de nombres, el nombre de la aplicación como grupo y la función de servicio como nombre del servicio para garantizar la singularidad natural del servicio. Por supuesto, los usuarios pueden ignorar el espacio de nombres y la agrupación. y solo use el nombre del servicio como la exclusividad del servicio. Esto requiere que los usuarios agreguen sus propias reglas al definir el nombre del servicio para garantizar que el servicio se pueda ubicar de manera única en uso sin encontrar el servicio incorrecto.


metadatos de servicio

La definición del servicio solo establece cierta información básica para que el servicio lo describa y encuentre el servicio de manera conveniente y rápida, mientras que los metadatos del servicio definen aún más los atributos detallados y la información de descripción del servicio en Nacos. incluyen principalmente:

  • Umbral de protección de la salud (ProtectThreshold): para evitar demasiadas fallas en las instancias, lo que hace que todo el tráfico fluya hacia las instancias restantes y luego hace que la presión del tráfico abrume las instancias restantes para formar un efecto de avalancha. El umbral de protección de la salud debe definirse como un número de punto flotante entre 0 y 1. Cuando la relación entre las instancias en buen estado del nombre de dominio y el total de instancias de servicio es inferior a este valor, la instancia se devolverá al cliente independientemente de si está en buen estado o no. Aunque se pierde algo de tráfico de esta manera, se asegura de que las instancias restantes en buen estado en el clúster puedan funcionar con normalidad.
  • Selector de instancias (Selector): Se utiliza para filtrar y filtrar instancias al obtener la lista de instancias bajo el servicio. El selector también se denomina enrutador. Actualmente, Nacos admite la capacidad de almacenar cierta información de la instancia en la CMDB de administración de metadatos externos y usar las etiquetas de metadatos almacenadas en la CMDB para filtrar al descubrir servicios.
  • Datos extendidos (extendData): Sirve para que el usuario personalice el contenido de los metadatos extendidos al registrar una instancia, en forma de KV. Puede expandir la información de metadatos del servicio en el servicio, lo cual es conveniente para que los usuarios implementen su propia lógica personalizada.

inserte la descripción de la imagen aquí


definir instancia

Dado que una instancia de servicio es un nodo que brinda servicios específicamente, Nacos principalmente necesita almacenar información básica relacionada con la red de la instancia al diseñar la definición de la instancia, que incluye principalmente los siguientes contenidos:

  • Dirección IP de red: la dirección IP de la instancia, que se puede configurar como un nombre de dominio después de la versión Nacos2.0.
  • Puerto de red: información del puerto de esta instancia.
  • Saludable: se utiliza para indicar si la instancia está en un estado saludable y se mantendrá en Nacos a través de controles de salud. El contenido específico se detallará en el capítulo Mecanismo de control de salud de Nacos. Los lectores solo necesitan el significado del contenido en presente Can.
  • Clúster (Cluster): se utiliza para marcar a qué clúster lógico pertenece la instancia
  • Datos extendidos (extendData): contenido de metadatos para extensiones definidas por el usuario, en forma de KV. La información de metadatos de la instancia se puede expandir en la instancia, lo cual es conveniente para que los usuarios implementen su propia lógica personalizada y marquen la instancia.

metadatos de instancia

A diferencia de los metadatos del servicio, los metadatos de la instancia se utilizan principalmente para obtener información relacionada con el funcionamiento y el mantenimiento de la instancia. incluyen principalmente:

  • Peso: Configuración a nivel de instancia. El peso es un número de punto flotante con un rango de 0-10000. Cuanto mayor sea el peso, mayor será el tráfico asignado a la instancia.
  • Estado en línea (habilitado): marque si la instancia acepta tráfico, la prioridad es mayor que el peso y el estado de salud. Lo utiliza el personal de operación y mantenimiento para eliminar rápida y manualmente una instancia del servicio sin cambiar la instancia en sí.
  • Datos extendidos (extendData): A diferencia de los datos extendidos en la definición de instancia, estos datos extendidos son para que el personal de operación y mantenimiento modifique y agregue rápidamente los datos extendidos de la instancia sin cambiar la instancia misma, para lograr el rol de la instancia de operación y mantenimiento.

En la versión Nacos2.0, los datos de instancia se dividen en definición de instancia y metadatos de instancia, principalmente porque estos dos tipos de datos son en realidad dos escenarios diferentes de la misma instancia: escenario de desarrollo y operación y escenario de operación y mantenimiento .

Para atributos como en línea, fuera de línea y peso, generalmente se considera que cuando la instancia ya se está ejecutando, los datos deben ser modificados y mantenidos manualmente por el personal de operación y mantenimiento.

Sin embargo, la información como la IP, el puerto y el clúster no cambiará después de que la instancia se inicie y registre en circunstancias normales.

Después de fusionar estas dos partes de datos, puede obtener la información completa de la instancia, que también es la estructura de datos de la instancia en la versión Nacos1.0.

inserte la descripción de la imagen aquí


propiedades persistentes

Nacos proporciona dos tipos de servicios: servicios persistentes y servicios no persistentes, que se utilizan respectivamente en escenarios de componentes de servicios básicos similares a DNS y escenarios de servicios comerciales reales de capa superior.

Para indicar qué tipo de servicio es el servicio, es necesario seleccionar el atributo persistente del servicio al crear el servicio. Teniendo en cuenta que la mayoría de los escenarios actuales de descubrimiento de servicios dinámicos son tipos de servicios no persistentes (como Spring Cloud, Dubbo, Service Mesh, etc.), Nacos establece el valor predeterminado en servicios no persistentes .

Después de Nacos 2.0, la definición de atributos persistentes se abstrae en el servicio. Un servicio solo se puede definir como un servicio persistente o un servicio no persistente. Una vez que se completa la definición, no se puede cambiar hasta el final de la vida útil. ciclo propiedades persistentes.

El atributo de persistencia afectará si Nacos almacenará de forma persistente los datos del servicio y la instancia. Después de configurarlo como persistente, la instancia ya no se eliminará automáticamente y el usuario deberá eliminarla manualmente.


Grupo

Un clúster es una abstracción lógica de un grupo de instancias de servicio en Nacos, está entre servicios e instancias, y es el hundimiento de algunos atributos de servicio y la abstracción de atributos de instancia.

definir grupos

En Nacos, parte de la información y los datos sobre los controles de estado se almacenan principalmente en el clúster:

  • Tipo de verificación de salud (HealthCheckType): qué tipo de verificación de salud usar, actualmente compatible: TCP, HTTP, MySQL; establecer en NINGUNO para desactivar la verificación de salud.

  • Puerto de comprobación de estado (HealthCheckPort): establezca el puerto utilizado para la comprobación de estado.

  • Ya sea para usar el puerto de la instancia para la verificación de estado (UseInstancePort): si el puerto de la instancia se usa para la verificación de estado, el puerto de red en la definición de la instancia se usará para la verificación de estado en lugar del puerto de verificación de estado establecido anteriormente.

  • Datos extendidos (extendData): contenido de metadatos para extensiones definidas por el usuario, en forma de KV. Puede personalizar y expandir la información de metadatos del clúster, lo cual es conveniente para que los usuarios implementen su propia lógica personalizada y marquen el clúster.

inserte la descripción de la imagen aquí
[Servicio, clúster e instancia]


ciclo vital

En el registro, los datos de la instancia están vinculados al estado de la instancia del servicio, por lo que el estado de la instancia del servicio determina directamente el ciclo de vida de los datos de la instancia en el registro. Como un servicio es una abstracción agregada de una instancia, el ciclo de vida también está determinado por el estado de la instancia del servicio.

ciclo de vida del servicio

El ciclo de vida de un servicio es relativamente simple, comenzando desde que el usuario inicia una solicitud de registro de servicio al centro de registro.

En Nacos existen dos formas de iniciar el registro del servicio, una es crear un servicio directamente, y la otra es crear un servicio automáticamente al registrar una instancia, la primera le permite al iniciador especificar una parte de la información de metadatos del servicio. durante la creación, mientras que este último solo se creará el servicio con los metadatos predeterminados.

Durante el ciclo de vida, los usuarios pueden agregar y eliminar instancias de servicio al servicio y también pueden modificar los metadatos del servicio.

Cuando el usuario inicia una solicitud para eliminar el servicio o no hay instancias en el servicio dentro de un cierto período de tiempo (ya sea en buen estado o no), el servicio finaliza su ciclo de vida y espera la próxima creación.


Ciclo de vida de la instancia

El ciclo de vida de una instancia comienza con una solicitud para registrar la instancia. Sin embargo, de acuerdo con diferentes atributos persistentes, el ciclo de vida posterior de la instancia es diferente

  • Una instancia persistente mantendrá un estado saludable a través del estado de la verificación de salud, pero no terminará automáticamente el ciclo de vida de la instancia; antes del final del ciclo de vida, la instancia persistente puede modificar los datos o incluso modificar activamente su salud estado. La única forma de finalizar el ciclo de vida de una instancia persistente es una solicitud para cerrar sesión en la instancia.

  • Las instancias que no son persistentes mantendrán un estado saludable de diferentes maneras según la versión.

    La versión de Nacos 1.0 renovará el contrato a través de una solicitud de latido regular, cuando no haya latido para renovar el contrato dentro de un cierto período de tiempo, la instancia no persistente terminará el ciclo de vida;

    La versión de Nacos 2.0 mantendrá el estado a través de la conexión larga de gRPC. Cuando la conexión se interrumpe, la instancia no persistente terminará el ciclo de vida.

Por supuesto, una instancia no persistente también puede terminar activamente su ciclo de vida a través de una solicitud para cerrar sesión en la instancia, pero debido a la existencia de conexiones largas y renovaciones de latidos, puede causar que el ciclo de vida de los datos de la instancia anterior sea terminada y eliminada, e inmediatamente debido a las solicitudes de Compensación por latido y conexiones persistentes, comienza de nuevo el ciclo de vida de la instancia, dando la ilusión de una falla de cierre de sesión.


Ciclo de vida del clúster

El ciclo de vida del clúster es relativamente complicado, dado que el clúster es una capa intermedia de servicios e instancias, el ciclo de vida del clúster está relacionado con el ciclo de vida tanto de la instancia como del servicio.

El ciclo de vida de un clúster comienza al mismo tiempo que el ciclo de vida de la primera instancia del clúster, porque una instancia debe pertenecer a un clúster, incluso el clúster predeterminado, por lo que cuando comienza el ciclo de vida de la primera instancia, el clúster el comienzo del ciclo de vida;

Cuando no hay instancias en un clúster, el ciclo de vida del clúster no finalizará de inmediato, sino que esperará hasta que finalice el ciclo de vida del servicio antes de finalizar el ciclo de vida juntos.


Ciclo de vida de los metadatos

Dado que los metadatos y su modelo de datos correspondiente están estrechamente relacionados, el ciclo de vida de los metadatos es básicamente coherente con el modelo de datos correspondiente.

Sin embargo, los metadatos suelen ser los datos operados activamente por el personal de operación y mantenimiento, que serán memorizados por Nacos durante un período de tiempo, por lo que la terminación del ciclo de vida de los metadatos va a la zaga de la de los datos correspondientes;

Si los datos correspondientes reinician su ciclo de vida durante este período de retraso, el ciclo de vida de los metadatos se restablecerá inmediatamente y no se cancelará.

inserte la descripción de la imagen aquí

[Diagrama del ciclo de vida de cada dato]

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/yangshangwei/article/details/131167827
Recomendado
Clasificación