Restricciones conocidas para Event Streams
Si encuentra un problema mientras utiliza Event Streams, revise las siguientes restricciones y métodos alternativos conocidos.
Las llamadas de Java Kafka no se migran tras error si falla un servidor de programa de arranque
Problema
La JVM (Java™ Virtual Machine) almacena las búsquedas de DNS en la memoria caché. Cuando la JVM resuelve una dirección IP para un nombre de host, almacena en memoria caché la dirección IP durante un periodo especificado, que se conoce como tiempo de vida (TTL). Algunas configuraciones Java establecen el TTL de JVM para que nunca renueve la dirección IP de un nombre de host hasta que se reinicie la JVM. Una configuración de ejemplo es una que tenga un gestor de seguridad.
Método alternativo
Puesto que Event Streams utiliza los URL de servidor de programa de arranque de Kafka con varias direcciones IP para alta disponibilidad, no todas las direcciones IP del intermediario son conocidas para el cliente Kafka, lo que impide la migración tras error a un intermediario funcional. En estos casos, una migración tras error requiere una solicitud de las direcciones IP para que los URL de intermediario obtengan una dirección IP de trabajo. Se recomienda configurar la JVM con un valor de TTL de entre 30 y 60 segundos. Este valor garantiza que si la dirección IP del servidor de programa de arranque tiene problemas, el cliente de Kafka puede buscar y utilizar una nueva dirección IP consultando el DNS.
Consulte el ejemplo siguiente del archivo java.security :
# The Java-level namelookup cache policy for successful lookups:
#
# any negative value: caching forever
# any positive value: the number of seconds to cache an address for
# zero: do not cache
#
# default value is forever (FOREVER). For security reasons, this
# caching is made forever when a security manager is set. When a security
# manager is not set, the default behavior in this implementation
# is to cache for 30 seconds.
#
# NOTE: setting this to anything other than the default value can have
# serious security implications. Do not set it unless
# you are sure you are not exposed to DNS spoofing attack.
#
#networkaddress.cache.ttl=-1
Cómo modificar el TTL de la JVM
-
Para modificar el TTL de la JVM para todas las aplicaciones, establezca el valor
networkaddress.cache.ttlen el archivo<$JAVA_HOME>/jre/lib/security/java.security. -
Para modificar el TTL de la JVM para una aplicación específica, establezca
networkaddress.cache.ttlen el código de aplicación.java.security.Security.setProperty("networkaddress.cache.ttl" , "30");
Las llamadas de Java Kafka pueden agotar el tiempo de espera
Problema
A veces una llamada de cliente Kafka Java no encuentra Kafka. La causa de la anomalía es que el cliente Kafka ha determinado la misma dirección IP anómala para cada uno de los servidores de programa de arranque. El cliente Kafka intenta la dirección IP de cada intermediario (que es la misma dirección IP anómala) y determina de forma incorrecta que Kafka está inactivo. El cliente Kafka utiliza la primera dirección IP devuelta en la lista si se devuelven varias direcciones IP en la consulta DNS.
Método alternativo
Vuelva a intentar las llamadas después de esperar el tiempo suficiente para que caduque la memoria caché DNS de JVM para los URL de intermediario. En las llamadas Kafka posteriores, se devuelve una dirección IP de intermediario de trabajo de la consulta DNS.
Una Kafka Proposición de mejora (KIP) #302 (disponible como opción en Kafka 2.1.1 e incluida de forma predeterminada en 2.6.0) garantiza que los clientes de Kafka prueben todas las direcciones IP de intermediario disponibles y no un subconjunto, por lo que un error en una única dirección IP no provoca un error.
Tiene que optar por esta funcionalidad utilizando uno de los métodos siguientes:
-
Especifique un nuevo valor permitido en las propiedades de Consumer y Producer del parámetro de configuración
client.dns.lookup:client.dns.lookup: "use_all_dns_ips" -
Utilice las constantes
CommonClientConfigs.CLIENT_DNS_LOOKUP_CONFIG: ClientDnsLookup.USE_ALL_DNS_IPS.
Temas y particiones
- Los nombres de temas están restringidos a un máximo de 200 caracteres.
- El número predeterminado de particiones por tema es de uno.
Creación y supresión de temas en Kafka
En Kafka, la creación y supresión de temas son operaciones asíncronas que pueden tardar algún tiempo en completarse. Evite patrones de uso que se basen en la rápida creación y supresión de temas, o en la supresión rápida y la recreación de temas.