Limitazioni note per Event Streams
Se riscontri un problema mentre utilizzi Event Streams, esamina le seguenti limitazioni e soluzioni temporanee note.
Non viene eseguito il failover delle chiamate Java Kafka se si verifica un malfunzionamento di un server di avvio Kafka
Problema
La JVM ( Java™ Virtual Machine) memorizza nella cache le ricerche DNS. Quando la JVM risolve un indirizzo IP per un nome host, memorizza nella cache l'indirizzo IP per un periodo specificato, noto come TTL (time to live). Alcune configurazioni Java impostano JVM TTL in modo che non aggiorni mai l'indirizzo IP di un nome host fino a quando la JVM non viene riavviata. Una configurazione di esempio è una configurazione che dispone di un gestore della sicurezza.
Soluzione temporanea
Poiché Event Streams utilizza gli URL del server di avvio Kafka con più indirizzi IP per l'alta disponibilità, non tutti gli indirizzi IP del broker sono noti al client Kafka, il che impedisce il failover a un broker funzionante. In questi casi, un failover richiede una riaccodamento degli indirizzi IP per gli URL del broker per ottenere un indirizzo IP funzionante. Ti consigliamo di configurare la tua JVM con un valore TTL compreso tra i 30 a i 60 secondi. Questo valore garantisce che se l'indirizzo IP di un server bootstrap ha dei problemi, il client Kafka è in grado di ricercare e utilizzare un nuovo indirizzo IP eseguendo una query del DNS.
Consultare il seguente esempio dal file 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
Come modificare il TTL della JVM
-
Per modificare il TTL della JVM per tutte le applicazioni, impostare il valore
networkaddress.cache.ttlnel file<$JAVA_HOME>/jre/lib/security/java.security. -
Per modificare il TTL JVM per una specifica applicazione, impostare
networkaddress.cache.ttlnel codice dell'applicazione.java.security.Security.setProperty("networkaddress.cache.ttl" , "30");
Le chiamate Java Kafka potrebbero andare in timeout
Problema
Talvolta una chiamata del client Java Kafka non riesce a trovare Kafka. La causa dell'errore è che il client Kafka ha determinato lo stesso indirizzo IP in errore per ciascuno dei server di avvio. Il client Kafka tenta l'indirizzo IP di ogni broker (che è lo stesso indirizzo IP malfunzionante) e determina erroneamente che Kafka non è attivo. Il client Kafka utilizza il primo indirizzo IP restituito nell'elenco se nella query DNS vengono restituiti più indirizzi IP.
Soluzione temporanea
Ripetere le chiamate dopo aver atteso abbastanza a lungo per la scadenza della cache DNS JVM per gli URL del broker. Nelle successive chiamate Kafka, viene restituito un indirizzo IP del broker funzionante dalla query DNS.
Una Kafka #302 (disponibile come opzione da Kafka 2.1.1 e inclusa per impostazione predefinita da 2.6.0) garantisce che i clienti Kafka provino tutti gli indirizzi IP del broker disponibili e non un sottoinsieme, quindi un malfunzionamento in un singolo indirizzo IP non causa un errore.
Devi optare per questa funzionalità utilizzando uno dei seguenti metodi:
-
Specificare un nuovo valore consentito nelle proprietà Consumer e Producer del parametro di configurazione
client.dns.lookup:client.dns.lookup: "use_all_dns_ips" -
Utilizzare le costanti
CommonClientConfigs.CLIENT_DNS_LOOKUP_CONFIG: ClientDnsLookup.USE_ALL_DNS_IPS.
Argomenti e partizioni
- I nomi argomento sono limitati ad un massimo di 200 caratteri.
- Il numero predefinito di partizioni per un argomento è uno.
Creazione ed eliminazione di argomenti in Kafka
In Kafka, la creazione e l'eliminazione di argomenti sono delle operazioni asincrone il cui completamento potrebbe richiedere un certo tempo. Evitare i modelli di utilizzo che si basano sulla rapida creazione ed eliminazione degli argomenti o sulla rapida eliminazione e ricreazione degli argomenti.