直接向 Kafka 代理生成的 Web 前端是一个可行的想法吗?

Is a web frontend producing directly to a Kafka broker a viable idea?

我刚开始学习Kafka。所以尝试构建一个社交媒体网络应用程序。我很清楚如何将 Kafka 用于我的后端(从后端到数据库和其他服务的通信)。

但是,我不确定前端应该如何与后端通信。我考虑的架构是:Frontend -> Kafka -> Backend.


前端充当生产者,后端充当消费者。在这种情况下,前端应该拥有发布到 Kafka 代理所需的所有资源(即使我在 Kafka 上实现了安全性)。现在,这种情况是否可能:

假设我模拟前端并向我的 Kafka 代理发送 absurd/invalid 消息。现在我可以在这些消息到达我的后端时对其进行处理和过滤。但是我知道 Kafka 暂时存储这些消息。如果这样的 "fake" 消息被大量发布到它,我的 Kafka 服务器不会面临 DDOS 问题吗,因为它无论如何都会存储它们,因为它们不会被过滤掉,直到它们真正被后端消耗?

如果是这样,我该如何预防?

或者这不是一个好的选择?我也可以尝试使用 REST 进行 frontend/backend 通信,然后 Kafka 将从后端用于与数据库和其他东西通信。

或者我可以有一个中间件(同样是 REST)来检测并过滤掉此类消息。

最简单的方法是让前端生成 Kafka REST 代理

在此处查看详细信息https://docs.confluent.io/1.0/kafka-rest/docs/intro.html

这样您的前端就不需要 kafka 客户端代码,您可以将 HTTP(S) 与标准的现成负载均衡器和 API 管理工具一起使用。

你能不能考虑另一个方向,使用 Kafka 作为传输系统来更新前端可用的资产?这已被提议用于混合 React / NodeJS/Express 解决方案。