使用多个输入主题时,输入主题的不同消息速率是否会影响kafka流处理速度?
When using multiple input topics, does different message rate on input topics affect kafka streams processing speed?
我在我的 kafka 流应用程序中有 10 个输入主题(每个 mysql table 一个主题)。某些主题的消息率非常低,而其他主题的消息率略高。很少有几个主题会产生大量消息。想知道 kafka 流处理较快主题是否会因为较慢主题的消息率低而停滞?如果我应该在拓扑中创建单独的源节点以将较慢的主题与较快的主题隔离开来。
我的流应用程序从输入消息中提取信息,转到另一个服务以获取更多数据并将其写入输出 kafka 主题。
这取决于...
如果不同的主题由不同的子拓扑处理(参见 Topology#describe()
的输出),那么每个主题都会单独处理,如果不同的主题具有不同的数据速率,则不会产生影响。
如果您加入或合并多个主题(因此,它们由相同的子拓扑处理),那么主题的进展将比 "coupled"。这种耦合基于 事件时间戳 。因此,数据速率较高的主题很可能具有 "denser" 记录时间戳,因此比数据速率较低的主题处理的数据更多。例如:
// just showing timestamps
topic-1 (partition-0): 3 13 23 33 43 53 63 73 83 93 103 113...
topic-2 (partition-0): 5 55 105
processing order:
3 5 13 23 33 43 53 55 63 73 83 93 103 105 113
因此,对于topic-2的每条记录,将处理topic-1的5条记录。
我在我的 kafka 流应用程序中有 10 个输入主题(每个 mysql table 一个主题)。某些主题的消息率非常低,而其他主题的消息率略高。很少有几个主题会产生大量消息。想知道 kafka 流处理较快主题是否会因为较慢主题的消息率低而停滞?如果我应该在拓扑中创建单独的源节点以将较慢的主题与较快的主题隔离开来。
我的流应用程序从输入消息中提取信息,转到另一个服务以获取更多数据并将其写入输出 kafka 主题。
这取决于...
如果不同的主题由不同的子拓扑处理(参见 Topology#describe()
的输出),那么每个主题都会单独处理,如果不同的主题具有不同的数据速率,则不会产生影响。
如果您加入或合并多个主题(因此,它们由相同的子拓扑处理),那么主题的进展将比 "coupled"。这种耦合基于 事件时间戳 。因此,数据速率较高的主题很可能具有 "denser" 记录时间戳,因此比数据速率较低的主题处理的数据更多。例如:
// just showing timestamps
topic-1 (partition-0): 3 13 23 33 43 53 63 73 83 93 103 113...
topic-2 (partition-0): 5 55 105
processing order:
3 5 13 23 33 43 53 55 63 73 83 93 103 105 113
因此,对于topic-2的每条记录,将处理topic-1的5条记录。