Wenn Sie zwei Kafka-Cluster mit verschiedenen Versionen lesen/schreiben wollen, können Sie Clients verwenden, die der niedrigeren Version entsprechen.
Zum Beispiel, wenn Sie von 0.8.2 lesen und schreiben zu 0.10.1 können Sie 0.8.2 Verbraucher und 0.8.2 Hersteller verwenden, da 0.8.2 Hersteller mit 0.10.1 vorwärts kompatibel sind.
Es würde nicht funktionieren, eine höhere Version für die Clients zu verwenden, da Ihr Verbraucher mit einer höheren Version als 0.8.2 nicht in der Lage wäre, von 0.8.2 zu lesen (auch wenn 0.9 oder 0.10.1 Producer schreiben kann) zu 0.10.1 Cluster).
Der Punkt ist, dass Sie einen 0.8.2 Consumer und 0.10.1 Producer nicht einfach in die gleiche App einfügen können, da es Klassenladekonflikte geben würde. Es ist nicht unmöglich zu denken, aber Sie müssten einen anderen Klassenlader für Consumer und Producer verwenden, um beide Teile Ihres Codes zu isolieren, um einen Klassenladekonflikt zu vermeiden. Fertig geschrieben, es würde Ihnen ermöglichen, einen 0.8.2-Consumer zu verwenden, um von 0.8.2-Cluster zu lesen, während 0.10.1 Producer verwendet, um zu 0.10.1-Cluster zu schreiben.
Aber wenn Sie keine spezielle Funktion 0.10.1 Hersteller Angebote benötigen, scheint es einfacher zu sein, einfach mit 0.8.2 für Verbraucher und Hersteller zu gehen und die Mühe zu vermeiden, mit anderen Klassenlader umzugehen. Benutzerdefinierte Klassenladeprogramme sind schwieriger zu verwenden, als es scheint.