0

我正在设计一个系统,它就像从一个系统到另一个系统的消息转发器。我有几个选择,但我想应用提供更少资源消耗(cpu、ram)和延迟的最佳选项。因此,我需要您的建议和对此的看法。我们假设消息将从 Kafka 中的主题流式传输到我们的系统。我们需要将主题中的所有消息转发到另一台主机。为此目的可以有不同的策略。

  1. 收集一定数量的消息,比如说 100 条消息(批处理)并在单个 HTTP 消息中一次发送它们。
  2. 当收到一条消息时,系统会将此消息作为 http POST 请求发送到目标主机。
  3. 在我们的系统和目标主机之间打开 webSocket 并发送消息。
  4. 表现得像 Kafka 生产者并向主题发送消息。

他们每个人都可能有优点和缺点。我担心系统可能无法处理大量消息。除了这4个项目,你还有其他选择吗?就什么而言,您认为哪个是最佳选择?

4

2 回答 2

0

您的延迟要求有多重要?与基于 UDP 的消息传递系统相比,HTTP 相当慢,但也许您不需要如此定制的延迟。如您所知,批处理消息会增加延迟。

但这很令人不安,因为这个页面的标题是“休息-转发”=)。它必须是 REST(所以 HTTP)吗?因为您似乎也可以设想像 kafka 生产者一样行事,如果是这样,那不是 REST。

Kafka 的内存占用可能有点高(Java lib),但没有那么多。您是否在嵌入式系统上工作(愿意减少内存占用?)

出于 CPU 的目的.. 这取决于我们比较 Kafka 的内容,但我仍然认为 Kafka 在要求性能时非常优化。

认为我们缺乏有关此“另一台主机”的更多信息,您能否提供有关其用途的更多详细信息?

雅尼克

于 2019-07-04T19:43:49.137 回答
0

我认为您在这种情况下正在寻找 Kafka Streaming。虽然从效率的角度来看,一些 hadoop 堆栈实现(Flume)或Spark可能会消耗更少,但不确定,这取决于数据量、网络跳转、使用的磁盘、内存量。

如果您有大量消息,那么这些分布式解决方案应该是您的正确方法,而不是自定义 REST 客户端。

于 2021-08-21T09:28:30.723 回答