我是 Kafka 和数据流的新手,需要一些建议来满足以下要求,我们的系统预计每天有近 100 万条传入消息。该消息携带项目标识符。该消息应仅推送给该项目的用户。对于我们的案例,假设我们有项目 A、B 和 C。打开项目 A 的仪表板的用户只能看到/接收项目 A 的消息。
到目前为止,这是我对实现需求解决方案的想法,
消息应该在到达时被推送到 Kafka 主题,让我们将此主题称为根主题。消息一旦推送到根主题,可以由 Kafka 消费者/侦听器读取,并且基于消息中的项目标识符可以将该消息推送到项目特定主题。因此,任何消息都可以在主题 A 或 B 或 C 处结束。考虑使用 websockets 在消息到达项目用户的仪表板时对其进行更新。N 个项目主题将有 N 个消费者/听众。这些消费者会将项目特定的消息推送到项目特定的 websocket 端点。
请告知我是否可以对上述设计进行任何改进。
此处选择 Kafka 作为消息传递系统,因为它具有高度可扩展性和容错性。
在发送到客户端之前,没有复杂的转换或数据丰富。使用 Apache Flink 或 Hazelcast Jet 进行流式传输是否有意义,或者 Kafka 流式传输足以满足这个简单的要求。
另外,我什么时候应该考虑在我的项目中使用 Hazelcast Jet 或 Apache Flink。
当我必须在将消息发送给用户之前基于 Web 服务调用或数据库查找更新消息中的几个属性时,我应该使用 Flink 吗?
只有当我需要内存中的整个数据集来获得属性值时,我才应该使用 Hazelcast Jet吗?或者即使对于我上面指定的简单用例,使用 Jet 也会带来一些好处。请指教。