2015-11-19 12 views
8

Wird der kommende kafka consumer 0.9.x mit 0.8 broker kompatibel sein?Ist kafka consumer 0.9 abwärtskompatibel?

Mit anderen Worten - es ist möglich, nur auf neue Verbraucher-Implementierung zu wechseln, ohne etwas anderes zu berühren?

Antwort

9

Gemäß der Dokumentation von Kafka 0.9.0 können Sie den neuen Consumer nicht zum Lesen von Daten von 0.8.x-Brokern verwenden. Der Grund ist der folgende:

0.9.0.0 hat eine Inter-Broker-Protokolländerung von früheren Versionen.

1

Basierend auf dieser Consumer Client Re-design Wiki-Seite, die zitiert,

Dies würde einige signifikante Änderungen an den Verbraucher APIs beinhalten *, so möchten wir Feedback zu dem Vorschlag unserer Community sammeln. Da die Liste der Änderungen nicht klein ist, würden wir gerne verstehen, ob einige Funktionen gegenüber anderen bevorzugt werden und, noch wichtiger, wenn einige Funktionen überhaupt nicht benötigt werden.

* Schwerpunkt meiner.

Ich habe nirgendwo ausdrücklich festgestellt, keine Kompatibilität. Aber unter Verwendung dieses Zitats und der Tatsache, dass der Produzent in 0.8 mit dem Produzenten in 0.7 nicht kompatibel war, nehme ich an, dass sie nicht kompatibel sind.

5

Nein. Im Allgemeinen wird empfohlen, Broker vor Clients zu aktualisieren, da Broker auf Rückwärtskompatibilität abzielen. Der 0.9-Broker wird sowohl mit den Consumer-APIs von 0.8 Consumer als auch 0.9 arbeiten, aber nicht umgekehrt.

0

Es sieht so aus, dass in kafka 0.9.0 die Rückwärtskompatibilität integriert ist. Prüfen http://kafka.apache.org/documentation.html#upgrade

Zitat aus Dokumentation

0.9.0.0 hat das Potenzial Bruch Änderungen (lesen Sie bitte vor dem Upgrade) und eine Inter-Broker-Protokoll Änderung gegenüber früheren Versionen. Für ein Rolling Upgrade:

  • aktualisieren server.properties Datei auf allen Maklern und fügen Sie den folgenden Eigenschaft: inter.broker.protocol.version = 0.8.2.X
  • die Broker-Upgrade. Dies kann ein Broker zu einem Zeitpunkt durchgeführt werden, indem Sie es einfach herunterfahren, den Code aktualisieren und neu starten.
  • Sobald der gesamte Cluster aktualisiert ist, stoßen Sie die Protokollversion durch Bearbeiten inter.broker.protocol.version und Einstellung auf 0.9.0.0.
  • Starten Sie die Makler eines nach dem anderem für die neue Protokollversion wirksam
1

Ich hat vor kurzem ein ähnliches Problem konfrontiert, wo in meiner Anwendung, die ich von kafka 0,9 lesen musste und dann schreiben zurück zu kafka 0.8. Ich habe kafka client 0.9 folgendermaßen benutzt.

Consumer Config

props.put("bootstrap.servers", "brokers_ip as comma seperated values"); 
    props.put("group.id", "your group id"); 
    props.put("key.deserializer", StringDeserializer.class.getName()); 
    props.put("value.deserializer", StringDeserializer.class.getName()); 
    props.put("enable.auto.commit", "true"); 
    props.put("auto.commit.interval.ms", 1000); 
    props.put("session.timeout.ms", 30000); 
    consumer = new KafkaConsumer<String, String>(props); 
    consumer.subscribe("List of topics to subscribe too"); 

Producer Config

 Properties props = new Properties(); 
     props.put("bootstrap.servers","list of broker ips"); 
     props.put("metadata.broker.list", "list of broker ips"); 
     props.put("serializer.class", "kafka.serializer.StringEncoder"); 
     props.put("acks", "all"); 
     props.put("retries", 0); 
     props.put("batch.size", 16384); 
     props.put("linger.ms", 1); 
     props.put("buffer.memory", 33554432); 
     ProducerConfig config = new ProducerConfig(props); 
     Producer<String, String> producer = new Producer<String, String>(config); 
     String message = "hello world"; 
     KeyedMessage<String, String> data = new KeyedMessage<String, String>(topic_name, message); 
     producer.send(data); 
     producer.close(); 

Hoffnung, das hilft.

+0

haben Sie 'producer.flush()' versucht? Dies ist ein blockierender Aufruf und bleibt für immer hängen, wenn ich versuche, 0.9 Producer API und 0.8.1.1 Broker zu verwenden. Aber 'KeyedMessage' wird in diesem Fall durch' ProducerRecord' ersetzt. – Confused

+0

Nein, ich habe das nicht versucht. – abhinav

+0

Kein Problem. Ich habe das mit einer offiziellen Mailingliste bestätigt. Es sieht so aus, als ob Version 0.8.1.1 und 0.10.0.0 nicht kompatibel sind. Also mussten Produzenten, Kafka-Cluster und Konsumenten aufgewertet werden. – Confused