Compartir a través de


Configurar los ajustes para el componente Eureka Server para Spring en Azure Container Apps (versión preliminar)

Eureka Server para Spring es un mecanismo para la detección centralizada de servicios para microservicios. Use las instrucciones siguientes para aprender a configurar y administrar el componente Eureka Server para Spring.

Mostrar

Puede ver los detalles de un componente individual por nombre mediante el comando show.

Antes de ejecutar el comando siguiente, reemplace los marcadores de posición rodeados por <> por los valores.

az containerapp env java-component eureka-server-for-spring show \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --name <JAVA_COMPONENT_NAME>

List

Puede enumerar todos los componentes de Java registrados mediante el comando list.

Antes de ejecutar el comando siguiente, reemplace los marcadores de posición rodeados por <> por los valores.

az containerapp env java-component list \
  --environment <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP>

Unbind

Para quitar un enlace de una aplicación de contenedor, recurra a la opción --unbind.

Antes de ejecutar el comando siguiente, reemplace los marcadores de posición rodeados por <> por los valores.

az containerapp update \
  --name <APP_NAME> \
  --unbind <JAVA_COMPONENT_NAME> \
  --resource-group <RESOURCE_GROUP>

Lista de configuración permitida para el servidor Eureka para Spring

En la lista siguiente se detallan las configuraciones admitidas. Puede encontrar más detalles en Spring Cloud Eureka Server.

Nota:

Envíe incidencias de soporte técnico para nuevas solicitudes de características.

Opciones de configuración

El comando az containerapp update usa el parámetro --configuration para controlar cómo se configura el servidor Eureka para Spring. Puede usar varios parámetros a la vez siempre que estén separados por un espacio. Puede encontrar más detalles en Spring Cloud Eureka Server.

Las siguientes opciones de configuración están disponibles en la propiedad de configuración eureka.server.

Nombre Descripción Default value
eureka.server.enable-self-preservation Cuando está habilitado, el servidor realiza un seguimiento del número de renovaciones que debe recibir del servidor. Cada vez, el número de renovaciones cae por debajo del porcentaje de umbral definido por eureka.server.renewal-percent-threshold. El valor predeterminado se establece en true en el servidor Eureka original, pero en el componente de Java del servidor Eureka, el valor predeterminado se establece en false. Consulte Limitaciones del componente Eureka Server for Spring Java false
eureka.server.renewal-percent-threshold Porcentaje mínimo de renovaciones esperadas de los clientes en el período especificado por eureka.server.renewal-threshold-update-interval-ms. Si las renovaciones caen por debajo del umbral, las expiraciones se deshabilitan si se habilita el eureka.server.enable-self-preservation. 0,85
eureka.server.renewal-threshold-update-interval-ms Intervalo con el que debe actualizarse el umbral especificado en eureka.server.renewal-percent-threshold. 0
eureka.server.expected-client-renewal-interval-seconds Intervalo con el que se espera que los clientes envíen sus latidos. El valor predeterminado es 30 segundos. Si los clientes envían latidos con una frecuencia diferente, por ejemplo, cada 15 segundos, este parámetro se debe ajustar en consecuencia; de lo contrario, la autoconservación no funcionará según lo previsto. 30
eureka.server.response-cache-auto-expiration-in-seconds Obtiene el tiempo durante el cual la carga útil del registro debe mantenerse en la caché si no es invalidada por eventos de cambio. 180
eureka.server.response-cache-update-interval-ms Obtiene el intervalo de tiempo con el que se debe actualizar la memoria caché de carga del cliente. 0
eureka.server.use-read-only-response-cache Actualmente, com.netflix.eureka.registry.ResponseCache usa una estrategia de almacenamiento en caché de dos niveles para las respuestas. Una caché readWrite con una directiva de expiración y una caché de solo lectura que se almacena en caché sin expiración. true
eureka.server.disable-delta Comprueba si la información diferencial se puede servir al cliente o no. false
eureka.server.retention-time-in-m-s-in-delta-queue Obtenga la hora para la que se debe almacenar en caché la información diferencial para que los clientes recuperen el valor sin que falte. 0
eureka.server.delta-retention-timer-interval-in-ms Obtenga el intervalo de tiempo con el que la tarea de limpieza debe reactivarse y comprobar si hay información diferencial expirada. 0
eureka.server.eviction-interval-timer-in-ms Obtenga el intervalo de tiempo con el que la tarea que expira las instancias debe reactivarse y ejecutarse. 60000
eureka.server.sync-when-timestamp-differs Comprueba si se van a sincronizar instancias cuando difiere la marca de tiempo. true
eureka.server.rate-limiter-enabled Indica si el limitador de velocidad debe estar habilitado o deshabilitado. false
eureka.server.rate-limiter-burst-size Limitador de velocidad, propiedad del algoritmo de cubo de tokens. 10
eureka.server.rate-limiter-registry-fetch-average-rate Limitador de velocidad, propiedad del algoritmo de cubo de tokens. Especifica la tasa media de solicitud aplicada. 500
eureka.server.rate-limiter-privileged-clients Lista de clientes certificados. Esto se suma a los clientes Java estándar de eureka. N/D
eureka.server.rate-limiter-throttle-standard-clients Indica si los clientes estándar limitan la velocidad. Si se establece en false, solo los clientes no estándar tendrán una tasa limitada. false
eureka.server.rate-limiter-full-fetch-average-rate Limitador de velocidad, propiedad del algoritmo de cubo de tokens. Especifica la tasa media de solicitud aplicada. 100

Opciones de configuración comunes

  • Registro de configuraciones relacionadas
    • logging.level.*
    • logging.group.*
    • Se debe prohibir cualquier otra configuración en el espacio de nombres logging.*, por ejemplo, escribir archivos de registro mediante logging.file debe estar prohibido.

Llamada entre aplicaciones

En este ejemplo se muestra cómo escribir código Java para llamar entre aplicaciones registradas con el componente Eureka Server for Spring. Cuando las aplicaciones de contenedor están enlazadas con Eureka, se comunican entre sí a través del servidor Eureka.

En el ejemplo se crean dos aplicaciones, un llamador y un destinatario. Ambas aplicaciones se comunican entre sí mediante el componente Eureka Server for Spring. La aplicación de destinatario expone un punto de conexión al que llama la aplicación de autor de llamada.

  1. Creación de la aplicación de destinatario. Habilite el cliente Eureka en la aplicación Spring Boot agregando la anotación @EnableDiscoveryClient a la clase principal.

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CalleeApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CalleeApplication.class, args);
    	}
    }
    
  2. Cree un punto de conexión en la aplicación de llamada a la que llama la aplicación de autor de llamada.

    @RestController
    public class CalleeController {
    
        @GetMapping("/call")
        public String calledByCaller() {
            return "Hello from Application callee!";
        }
    }
    
  3. Establezca el nombre de la aplicación de llamada en el archivo de configuración de la aplicación. Por ejemplo, application.yml.

    spring.application.name=callee
    
  4. Creación de la aplicación del autor de la llamada.

    Agregue la anotación @EnableDiscoveryClient para habilitar la funcionalidad del cliente Eureka. Además, cree un WebClient.Builder bean con la anotación @LoadBalanced para realizar llamadas con equilibrio de carga a otros servicios.

    @SpringBootApplication
    @EnableDiscoveryClient
    public class CallerApplication {
    	public static void main(String[] args) {
    		SpringApplication.run(CallerApplication.class, args);
    	}
    
    	@Bean
    	@LoadBalanced
    	public WebClient.Builder loadBalancedWebClientBuilder() {
    		return WebClient.builder();
    	}
    }
    
  5. Cree un controlador en la aplicación de llamador que use el WebClient.Builder para llamar a la aplicación de llamada mediante su nombre de aplicación, destinatario.

    @RestController
    public class CallerController { 
        @Autowired
        private WebClient.Builder webClientBuilder;
    
        @GetMapping("/call-callee")
        public Mono<String> callCallee() {
            return webClientBuilder.build()
                .get()
                .uri("http://callee/call")
                .retrieve()
                .bodyToMono(String.class);
        }
    }
    

Ahora tiene una aplicación de llamador y destinatario que se comunica entre sí mediante el servidor Eureka para los componentes de Spring Java. Asegúrese de que ambas aplicaciones se ejecutan y se enlazan con el servidor Eureka antes de probar el punto de conexión de /call-callee en la aplicación del autor de llamada.

Limitaciones

  • El componente de Java del servidor Eureka incluye una configuración predeterminada, eureka.server.enable-self-preservation, establecida en false. Esta configuración predeterminada ayuda a evitar tiempos en los que las instancias no se eliminan después de habilitar la autoconservación. Si las instancias se eliminan demasiado pronto, es posible que algunas solicitudes se dirijan a instancias inexistentes. Si desea cambiar esta configuración a true, puede sobrescribirla estableciendo sus propias configuraciones en el componente de Java.

  • El servidor Eureka solo tiene una sola réplica y no admite el escalado, lo que hace que la característica del servidor Eureka del mismo nivel no esté disponible.

  • El panel de Eureka no está disponible.

Pasos siguientes