2017-12-11 8 views
0

Ich habe gerade angefangen Kafka zu lernen. Ich versuche also, eine Social-Media-Webanwendung zu erstellen. Mir ist ziemlich klar, wie man Kafka für mein Backend verwendet (Kommunikation vom Backend zu Datenbanken und anderen Diensten).Ist ein Web-Frontend, das direkt an einen Kafka-Broker produziert, eine tragfähige Idee?

Ich bin mir jedoch nicht sicher, wie Frontend mit Backend kommunizieren soll. Ich dachte über eine Architektur nach: Frontend -> Kafka -> Backend.


Frontend fungiert als Hersteller und Backend als Verbraucher. In diesem Fall hätte das Frontend angeblich alle erforderlichen Ressourcen, um es dem Kafka-Broker zu veröffentlichen (selbst wenn ich Sicherheit auf Kafka implementiere). Nun, ist dieses Szenario möglich:

Nehmen wir an, ich imitieren das Frontend und absurde/ungültige Nachrichten an meinen Kafka-Broker. Jetzt kann ich diese Nachrichten behandeln und filtern, wenn sie mein Backend erreichen. Aber ich weiß, dass Kafka diese Nachrichten vorübergehend speichert. Wäre mein Kafka-Server nicht mit DDOS-Problemen konfrontiert, wenn solche "gefälschten" Nachrichten in großem Umfang veröffentlicht werden, da sie sie sowieso speichern, da sie nicht ausgefiltert werden, bis sie tatsächlich vom Backend konsumiert werden?

Wenn ja, wie kann ich das verhindern?

Oder ist das keine gute Option? Ich kann auch versuchen, REST für die Frontend/Backend-Kommunikation zu verwenden, und dann wird Kafka vom Backend verwendet, um mit Datenbank (en) und anderen Dingen zu kommunizieren.

Oder ich kann eine Middleware haben (wieder, REST), die solche Nachrichten erkennt und herausfiltert.

+0

Möchten Sie den Grund für den Downvote erklären? Das ist eine echte Frage, die ich selbst mit vielen Recherchen nicht beantworten kann. Was kann ich noch tun, um diese Frage zu verbessern? – user3271166

+0

Es wurde wahrscheinlich abgelehnt und für die Schließung gestimmt, da Sie keine spezifische Frage zu einem bestimmten Programmierproblem stellen, wie es in der Hilfe erforderlich und beschrieben ist. Es ist sehr weit gefasst und fragt nach einer Meinung ohne klare Umrisse dessen, was Sie gerade tun, was auf dieser faktenbasierten Plattform nicht erlaubt ist. Wenn das kein Wochenende später Abend wäre, wäre es sicher schon geschlossen. – Rob

+0

Alles, was ich fragte, war: "Wenn mein Frontend Nachrichten an Kafka als Producer sendet, wie verhindere ich unerwünschte DDoS-Attacken oder ähnliches?" Ich bin mir nicht sicher, wie breit es war, aber ich werde versuchen, es in Zukunft besser zu formulieren. – user3271166

Antwort

3

Der einfachste Weg ist es, die Front-End Produkte mit dem Kafka REST hat Proxy

Details hier https://docs.confluent.io/1.0/kafka-rest/docs/intro.html

Auf diese Weise gibt es keinen kafka Client-Code in Ihrem Frontend erforderlich ist und Sie können HTTP (S) mit Standard-Load-Balancern und API-Management-Tools.

+0

Danke für die Antwort. Das scheint das Problem tatsächlich zu lösen. Aber ich sehe nicht, wie es anders sein könnte, als wenn ich meine eigene "Middleware" implementiere. Also Frontend -> Meine Middleware -> Kafka -> Backend. Außerdem kann ich alle Technologien und Methoden verwenden, die ich bevorzuge, anstatt mich auf REST zu beschränken (falls ich mich entscheide, in Zukunft auf etwas anderes als REST zu wechseln). Bin ich auf dem richtigen Weg in meinen obigen Gedanken? – user3271166

+0

Wenn Sie etwas anderes als REST verwenden möchten, dann schauen Sie sich Kafka Connect an. Es gibt Anschlüsse für MQTT, AMQP, Websockets und viele weitere https://www.confluent.io/product/connectors/. Wenn Sie wirklich Ihre eigene Middleware erstellen wollen, können Sie aber die Schönheit von Kafka Connect, dass vieles schon geschrieben ist und alles Open Source ist, so dass Sie von etwas anfangen können, von dem Sie bereits wissen, dass es funktioniert. –

Verwandte Themen