Wir planen, ein Protokollierungs-Framework zu bauen und für unsere Skalierung sind wir auf Kafka angewiesen, um eine Lösung zu sein, auf die wir uns konzentrieren wollen. Dies ist, was ich jetzt denke:(Design) Logging-Framework mit Kafka
Set of ~200 application machines -----> (each independently has a built in kafka producer) --------> which write to kafka --------> we use a hdfs sink to eventually write to hdfs.
Ist es eine gute Idee, um die Anwendung von Maschinen haben direclty nennen kafka? Die Maschinen erreichen fast eine Milliarde Zugriffe pro Tag. Ich möchte nicht, dass irgendetwas die Anwendungsmaschinen beeinflusst. Der Producer auf Anwendungsmaschinen würde einen Async-Sendevorgang ausführen. Ich denke nicht, dass dies CPU-intensive Operationen sind, aber ich bin mir nicht sicher, ob ich etwas vermisse.
Oder sollte ich eine Form von Log Aggegator auf den Client-Rechnern verwenden, die Stücke von Protokollen (sagen wir nach Zeit oder Größe) aggregiert und dann sendet. Dies würde die Belastung meines Kafka-Clusters reduzieren und die Arbeit der Client-Rechner reduzieren. Ich stütze mich auf diese Idee. Gibt es kundenspezifische Log-Aggregatoren, die ich bei Kafka-Herstellern verwenden kann?
Irgendwelche besseren Ideen?
Danke!