IBM Cloud Docs
Bekannte Einschränkungen für Event Streams

Bekannte Einschränkungen für Event Streams

Wenn bei der Verwendung von Event Streamsein Problem auftritt, lesen Sie die folgenden bekannten Einschränkungen und Problemumgehungen.

Keine Funktionsübernahme durch Java-Kafka-Aufrufe, wenn ein Kafka-Bootstrap-Server fehlschlägt

Problem

Die Java™ Virtual Machine (JVM) speichert DNS-Suchen im Cache. Wenn die JVM eine IP-Adresse für einen Hostnamen auflöst, wird die IP-Adresse für einen angegebenen Zeitraum zwischengespeichert, der als Lebensdauer (TTL, Time to Live) bezeichnet wird. Einige Java-Konfigurationen legen die JVM-TTL so fest, dass sie die IP-Adresse eines Hostnamens erst nach einem Neustart der JVM aktualisiert. Ein Beispiel für eine solche Konfiguration ist eine Konfiguration mit einem Sicherheitsmanager.

Fehlerumgehung

Da Event Streams Kafka-Bootstrap-Server-URLs mit mehreren IP-Adressen für die Hochverfügbarkeit verwendet, sind dem Kafka-Client nicht alle IP-Adressen des Brokers bekannt, was die Funktionsübernahme durch einen betriebsbereiten Broker verhindert. In diesen Fällen erfordert ein Failover eine Anforderung der IP-Adressen für die Broker-URLs, um eine funktionierende IP-Adresse abzurufen. Es empfiehlt sich, die JVM mit einem TTL-Wert von 30 bis 60 Sekunden zu konfigurieren. Dieser Wert stellt sicher, dass der Kafka -Client eine neue IP-Adresse suchen und verwenden kann, wenn die IP-Adresse eines Bootstrap-Servers Probleme hat, indem er den DNS abfragt.

Sehen Sie sich das folgende Beispiel aus der Datei java.security an:

# 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

Vorgehensweise zum Ändern der JVM-TTL

  • Um die Lebensdauer der JVM für alle Anwendungen zu ändern, legen Sie den Wert networkaddress.cache.ttl in der Datei <$JAVA_HOME>/jre/lib/security/java.security fest.

  • Um die JVM-TTL für eine bestimmte Anwendung zu ändern, legen Sie networkaddress.cache.ttl in Ihrem Anwendungscode fest.

    java.security.Security.setProperty("networkaddress.cache.ttl" , "30");
    

Java-Kafka-Aufrufe überschreiten möglicherweise das Zeitlimit

Problem

In einigen Fällen kann bei einem Aufruf eines Kafka-Java-Clients Kafka nicht gefunden werden. Die Fehlerursache besteht darin, dass der Kafka -Client für jeden Bootstrap-Server dieselbe fehlerhafte IP-Adresse ermittelt hat. Der Kafka-Client startet Versuche bei den IP-Adressen jedes Brokers (die jeweils derselben fehlerhaften IP-Adresse entsprechen) und stellt fälschlicherweise fest, dass Kafka inaktiv ist. Der Kafka -Client verwendet die erste IP-Adresse, die in der Liste zurückgegeben wird, wenn in der DNS-Abfrage mehrere IP-Adressen zurückgegeben werden.

Fehlerumgehung

Wiederholen Sie Ihre Aufrufe, wenn Sie lange genug warten, bis der JVM-DNS-Cache abläuft, bis die Broker-URLs abgelaufen sind. Bei nachfolgenden Kafka-Aufrufen wird eine funktionierende Broker-IP-Adresse von der DNS-Abfrage zurückgegeben.

Ein Kafka Improvement Proposal (KIP) #302 (verfügbar als Option in Kafka 2.1.1 und standardmäßig eingeschlossen ab 2.6.0) stellt sicher, dass Kafka-Clients alle verfügbaren Broker-IP-Adressen und keine Untergruppe testen, sodass ein Fehler in einer einzelnen IP-Adresse keinen Fehler verursacht.

Sie müssen diese Funktionalität mit einem der folgenden Verfahren explizit aktivieren:

  • Geben Sie einen neuen zulässigen Wert in den Consumer- und Producereigenschaften des Konfigurationsparameters client.dns.lookup an:

    client.dns.lookup: "use_all_dns_ips"
    
  • Verwenden Sie die CommonClientConfigs.CLIENT_DNS_LOOKUP_CONFIG: ClientDnsLookup.USE_ALL_DNS_IPS-Konstanten.

Topics und Partitionen

  • Themennamen dürfen maximal 200 Zeichen lang sein.
  • Die Standardanzahl von Partitionen für ein Topic ist '1'.

Topics in Kafka erstellen und löschen

Das Erstellen und das Löschen von Topics in Kafka erfolgt durch asynchrone Operationen, deren Ausführung einige Zeit dauern kann. Vermeiden Sie Verwendungsmuster, die sich auf das schnelle Erstellen und Löschen von Themen oder auf das schnelle Löschen und erneute Erstellen von Themen stützen.