Arquitectura y principios de Nacos: modelo de configuración


inserte la descripción de la imagen aquí


fondo

En la arquitectura monolítica, podemos escribir la configuración en el archivo de configuración, pero existe la desventaja de que cada vez que se modifica la configuración, es necesario reiniciar el servicio para que surta efecto.

También se puede mantener cuando la instancia de la aplicación es relativamente pequeña. Si hay cientos o miles de instancias en la arquitectura de microservicio, todas las instancias deben reiniciarse cada vez que se modifica la configuración, lo que no solo aumenta la inestabilidad del sistema, sino que también aumenta el costo de mantenimiento.

inserte la descripción de la imagen aquí
Entonces, ¿cómo puede modificar la configuración sin reiniciar el servicio? Todo ello produce cuatro demandas básicas:

 Necesidad de admitir la modificación de la configuración dinámica

 Qué tan en tiempo real deben ser los cambios dinámicos

 Cómo controlar y controlar el riesgo de cambio después de que el cambio sea más rápido, como escala de grises, reversión, etc.

 Cómo configurar la seguridad para configuraciones confidenciales

inserte la descripción de la imagen aquí


introducción del concepto

Configuración

Durante el proceso de desarrollo del sistema, algunos parámetros y variables que deben cambiarse generalmente se separan del código y se administran de forma independiente, y existen en forma de archivos de configuración independientes. El propósito es hacer que los artefactos o entregables del sistema estático (como WAR, paquetes JAR, etc.) se adapten mejor al entorno operativo físico real.

La administración de la configuración generalmente se incluye en el proceso de implementación del sistema, y ​​este paso lo completan los administradores del sistema o el personal de operación y mantenimiento. Los cambios de configuración son uno de los medios efectivos para ajustar el comportamiento del sistema en tiempo de ejecución.


Gestión de la configuración

En Nacos, todas las actividades relacionadas con la configuración, como el almacenamiento, la edición, la eliminación, la gestión de escala de grises, la gestión de versiones históricas y la auditoría de cambios de todas las configuraciones en el sistema, se denominan colectivamente gestión de configuración.


Servicio de configuración

Un proveedor de servicios que proporciona configuración dinámica o gestión de metadatos y configuración durante la ejecución del servicio o la aplicación.


Elementos de configuración

Un parámetro configurable específico y su rango de valores generalmente existen en forma de param-key = param-value.

Por ejemplo, a menudo configuramos el nivel de salida del registro del sistema (logLevel = INFO | WARN | ERROR) como un elemento de configuración.


Conjunto de configuración

Una colección de elementos de configuración relacionados o no relacionados se denomina conjunto de configuración.

En el sistema, un archivo de configuración suele ser un conjunto de configuración, que incluye la configuración de todos los aspectos del sistema. Por ejemplo, un conjunto de configuración puede incluir elementos de configuración como el origen de datos, el grupo de subprocesos y el nivel de registro.


espacio de nombres

Se utiliza para el aislamiento de configuración granular de inquilinos. La configuración del mismo Grupo o ID de datos puede existir en diferentes espacios de nombres.

Uno de los escenarios comunes de Namespace es distinguir y aislar la configuración de diferentes entornos, como el aislamiento de recursos (como la configuración de la base de datos, el umbral de límite actual y el cambio a una versión anterior) entre el entorno de desarrollo y prueba y el entorno de producción.

Si no se especifica un espacio de nombres, el espacio de nombres público se utiliza de forma predeterminada


Grupo de configuración (Grupo)

Un conjunto de conjuntos de configuración en Nacos es una de las dimensiones de configuración. Agrupe los conjuntos de configuración por una cadena de caracteres significativa (como grupo experimental y grupo de control en ABTest), para distinguir los conjuntos de configuración con la misma ID de datos.

Cuando crea una configuración en Nacos, si no completa el nombre del grupo de configuración, el nombre del grupo de configuración predeterminado es DEFAULT_GROUP.

Escenarios comunes para la agrupación de configuraciones: diferentes aplicaciones o componentes usan los mismos elementos de configuración, como la configuración de database_url y la configuración de MQ_Topic.


ID de configuración (ID de datos)

El ID de un conjunto de configuración en Nacos. El ID del conjunto de configuración es una de las dimensiones para dividir configuraciones. Los ID de datos se utilizan a menudo para delimitar el conjunto de configuración de un sistema.

Un sistema o aplicación puede contener varios conjuntos de configuración y cada conjunto de configuración se puede identificar con un nombre significativo. Se garantiza que el ID de datos es globalmente único tanto como sea posible. Puede consultar las reglas de nomenclatura en Nacos Spring Cloud:

${
    
    prefix}-${
    
    spring.profiles.active}-${
    
    file-extension}

Instantánea de configuración

El SDK del cliente de Nacos generará una instantánea de la configuración localmente. Cuando el cliente no puede conectarse al servidor Nacos, la instantánea de configuración se puede usar para mostrar la capacidad general de recuperación ante desastres del sistema.

Las instantáneas de configuración son similares a las confirmaciones locales en Git, y también similares a los cachés, que se actualizarán en los momentos apropiados, pero no existe el concepto de vencimiento del caché.


Modelo de configuración de Nacos

modelo base

inserte la descripción de la imagen aquí

  1. Nacos proporciona una consola visual, que puede publicar, actualizar, eliminar, escala de grises, gestión de versiones y otras funciones para la configuración.
  2. El SDK puede proporcionar funciones como la publicación de la configuración, la actualización de la configuración y la supervisión de la configuración.
  3. El SDK supervisa los cambios de configuración a través de la conexión larga de GRPC, y el lado del servidor compara si el MD5 configurado en el lado del cliente es igual al MD5 local, e impulsa los cambios de configuración si no son iguales.
  4. El SDK guardará una instantánea de la configuración y la obtendrá localmente cuando haya un problema con el servidor.

Configurar el modelo de recursos

El espacio de nombres está diseñado para el aislamiento de recursos. Podemos verlo desde las siguientes dos perspectivas al configurar los recursos:

  • Desde la perspectiva de un solo arrendatario, necesitamos configurar varios conjuntos de configuraciones de entorno y podemos crear espacios de nombres de acuerdo con diferentes entornos. Por ejemplo, en el entorno de desarrollo, el entorno de prueba y el entorno en línea, creamos el espacio de nombres correspondiente (dev, test, prod) y Nacos generará automáticamente la identificación del espacio de nombres correspondiente. Si desea configurar la misma configuración en el mismo entorno, puede usar Grupo para distinguirlos. Como se muestra abajo:

inserte la descripción de la imagen aquí

  • Desde la perspectiva de varios inquilinos, cada inquilino puede tener su propio espacio de nombres. Podemos crear un espacio de nombres para cada usuario y asignar los permisos correspondientes al usuario, como múltiples inquilinos (zhangsan, lisi, wangwu), cada inquilino quiere tener su propia configuración de múltiples entornos, es decir, cada inquilino quiere configurar múltiples entornos. . Luego, puede crear un espacio de nombres (zhangsan, lisi, wangwu) para cada inquilino. También se generará el ID de espacio de nombres correspondiente. Luego use Group para distinguir configuraciones para diferentes entornos. Como se muestra abajo

inserte la descripción de la imagen aquí


Modelo de almacenamiento de configuración (diagrama ER)

inserte la descripción de la imagen aquí
La configuración de almacenamiento de Nacos tiene varias tablas importantes:

 config_info La tabla principal para almacenar información de configuración, que contiene ID de datos, ID de grupo, contenido, ID de inquilino, clave de datos cifrados y otros datos.

 config_info_beta es la tabla de información de configuración de la prueba de escala de grises, y el contenido almacenado es básicamente similar al de config_info. Hay un campo beta _ips para juzgar si es una ip en escala de grises cuando el cliente solicita configuración.

 config_tags_relation La tabla de etiquetas configurada, si se especifica una etiqueta al publicar la configuración, la información asociada entre la etiqueta y la configuración se almacenará en esta tabla.

 La tabla de información del historial de configuración his_config_info registrará una parte de los datos cuando la configuración se publique, actualice, elimine, etc., que se puede usar para la administración de múltiples versiones y la reversión rápida.

inserte la descripción de la imagen aquí

Supongo que te gusta

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