Introducción al Principio Eureka
1. El proveedor de servicios proporciona servicios de aplicaciones y los registra en el servidor de eureka.
2. El consumidor del servicio va al centro de registro cada 30 segundos para obtener la IP, el puerto, la dirección de interfaz y otra información del servicio.
3. Después de que el consumidor del servicio obtiene la información de la aplicación del proveedor de servicios, puede llamar directamente a la interfaz del proveedor de servicios.
El principio del registro de servicios implica principalmente la estructura de almacenamiento del servidor eureka, que adopta una estructura de caché de tres capas. Para conocer la lógica de implementación interna específica, consulte el diagrama esquemático en la Parte 2.
Cuando el proveedor de servicios completa el registro de la información del servicio, mantendrá un latido y enviará periódicamente una solicitud de descanso al servidor eureka para indicarle que todavía está vivo. El intervalo de latido predeterminado es de 30 segundos.
El cliente Eureka obtendrá periódicamente información del servicio registrado del servidor eureka (el valor predeterminado es 30), que se divide en adquisición completa y adquisición incremental. De forma predeterminada, cuando el cliente se inicia por primera vez, iniciará la recopilación completa y el almacenamiento en caché de información local en el servidor, y luego iniciará la recopilación incremental cada 30 segundos para actualizar el caché local.
Por lo general, las llamadas entre servicios utilizan la simulación de componentes para iniciar solicitudes de descanso; Ribbon está integrado en él y utiliza la estrategia de carga de entrenamiento de rotación para extraer la información de registro extraída por el cliente eureka. mismo para cargar.
La simulación y la cinta se explicarán en detalle en investigaciones posteriores.
Indica que la información de registro del servicio se eliminará del centro de registro, por lo que no se podrá llamar al servicio.
Modo de servicio fuera de línea:
Hay una tarea programada de desalojo en el servidor eureka, que se ejecuta cada 60 segundos de forma predeterminada y su alcance está en el caché y los registros de lectura y escritura.
Cuando el proveedor de servicios no renueva el servicio dentro de los 90 segundos predeterminados, dicha información de registro no válida se eliminará cuando se ejecute Evict. Por lo general, un servicio se cierra o se cierra por la fuerza.
Definición oficial: El modo de autoprotección es una medida de protección de seguridad contra fluctuaciones anormales de la red. El uso del modo de autoprotección puede hacer que el clúster de Eureka funcione de manera más sólida y estable.
Durante el proceso de ejecución, Eureka Server contará si la tasa de falla del latido es inferior al 85% en 15 minutos. Si es inferior al 85%, Eureka Server protegerá la información de registro de la instancia actual y no permitirá que caduque inmediatamente.
De forma predeterminada, esta configuración está activada.
Hay un problema con la autoprotección. Durante el período de protección, el servicio se bloquea, lo que provoca que no se pueda llamar a la interfaz.
Debido a que el cliente eureka almacena en caché la información de registro localmente, aún se puede acceder al servicio después de cerrar el servidor eureka, pero los proveedores y consumidores de servicios se dividen en las siguientes situaciones:
Cuando el consumidor del servicio se reinicia, la caché local se invalida y la asignación al proveedor del servicio no existe, por lo que no se puede realizar la llamada al servicio.
Cuando se reinicia el proveedor de servicios, la información de la caché antes de que eureka caiga todavía se almacena en la caché local de la persona que llama al servicio, y el servicio se puede llamar normalmente.
Referencia:/fox_Bert/article/details/104210074
El método de sincronización utilizado por eureka es punto a punto (replicación punto a punto). No existe una relación maestro-esclavo entre réplicas. Cualquier réplica puede recibir una operación de escritura y luego cada réplica actualiza los datos entre sí.
El propio Servidor Eureka depende del Cliente Eureka, es decir, cada Servidor Eureka actúa como cliente para otros Servidores Eureka.
Una vez iniciado el servidor Eureka, solicitará a uno de los otros nodos del servidor Eureka a través del cliente Eureka que obtenga la información del servicio registrado y luego la copiará a otros nodos pares.
Siempre que la información del servidor Eureka cambie, como una solicitud de registro, renovación o baja iniciada por el cliente, el servidor Eureka notificará a otros servidores Eureka de su información más reciente para mantener la sincronización de datos.
Problemas existentes:
1) Cada nodo escribirá, lo que provocará conflictos de datos.
2) Si sus propios cambios de información son sincronizados por otro servidor Eureka, y éste se sincroniza nuevamente, se producirá un bucle infinito de sincronización de datos.
Problema 1) Solución:
Eureka resuelve este problema mediante el atributo similar a un número de versión lastDirtyTimestamp.
LastDirtyTimestamp es una propiedad de la instancia de servicio en el registro, que indica la hora del último cambio de esta instancia de servicio.
Problema 2) Solución:
Eureka Server utiliza http HEADER HEADER _ REPLICATION para distinguir una solicitud normal de una instancia de aplicación común, lo que indica que se trata de una solicitud de replicación, por lo que otros pares nodos La solicitud no se copia cuando se recibe, evitando así un bucle infinito.
Hemos aprendido antes que eureka no garantiza una fuerte coherencia de los datos, solo garantiza la máxima coherencia de los datos y garantiza una alta disponibilidad a través del modo de clúster.