0

我正在尝试构建像Ably这样的 PaaS ,我在其中为用户提供易于使用的发布/订阅系统。问题是我打算使用 Kafka,但我不知道它是否适合这个。每个用户可以在 PaaS 中拥有任意数量的应用程序,每个应用程序都会收到不同的消息,我认为 PaaS 中的每个应用程序在 Kafka 中都会有一个主题,但如果我得到,应用程序的数量可能会增长到数百万甚至数十亿很多用户和 Kafka 不适合这么多主题。

我应该为此使用Kafka还是研究其他东西?也许还有其他方法可以在我不知道的应用程序之间分离消息。我不能将所有内容都放在一个主题中,因为那样我会在节点上收到数万亿条不必要的消息。

4

2 回答 2

0

对于您的卡夫卡问题部分:

2021 年 3 月更新:借助 Kafka 的新 KRaft 模式(“Kafka Raft 元数据模式”的缩写;在 Kafka v2.8 的早期访问中),它将 ZooKeeper 从 Kafka 的架构中完全移除,Kafka 集群可以处理数百万个主题/分区。有关详细信息,请参阅https://www.confluent.io/blog/kafka-without-zookeeper-a-sneak-peek/

由于上述功能尚未推荐用于生产使用的架构,当前限制是由 zookeeper 支持的 kafka 集群中的数千个主题/分区

如果您想为其他应用程序和客户提供一些服务,最好提供不同的主题,这样您就可以利用身份验证和授权机制来避免用户访问其他用户的数据。

于 2021-06-27T05:10:58.777 回答
0

免责声明:我工作干练,并领导了我们围绕 Kafka 的一些工作

首先是 Ably 不是使用 Kafka 构建的,Kafka 非常不适合像 Ably 这样的服务任务,就像 Ably不做 Kafka 所做的一样。Kafka 是一个非常强大的工具,具有丰富的生态系统,但弹性可扩展性并不是它的事。扩展主题/分区是一个缓慢的过程,将节点添加到正在运行的活动集群不是您可以“做”的事情。然而,他们确实合作得很好

有更适合这种情况的流解决方案,例如 Apache Pulsar 或 Redis (PubSub/Streams),但它再次回到权衡取舍。Pulsar 在推送订阅方面做得更好,具有功能并且可以做更多事情。Redis 集群可以弹性且快速地扩展。权衡是 Pulsar 的运行、​​管理和扩展非常复杂,而 Redis 默认情况下是短暂的。还有其他解决方案,例如 NATS

Ably 中有很多技术可以让各种集群扩展到数以千万计的连接和通道,同时保持强大的保证,而且没有一个开源供应商可以开箱即用。

如果你想使用Kafka, Redpanda可能是你应该开始的地方。当您尝试以相对简单的方式处理每条消息时,它们的内联 WASM 可能非常有用。或者你可以使用 Ably ;)

于 2021-06-28T16:40:47.593 回答