KSQL查询线程数

KSQL Query number of Thread

有没有办法指定 KSQL 服务器上的 运行ning 查询应该消耗的线程数?换句话说就是查询的并行度。

在 KSQL Server 上 运行 的应用程序数量是否有限制?何时或如何决定横向扩展?

是的,您可以指定 ksql-streams-num-streams-threads 属性。您可以阅读更多相关信息 here.

现在,这是针对特定 KSQL 实例进行流处理的 KSQL Streams 线程数。这对于垂直缩放很重要,因为您的机器中可能有足够的计算资源来处理更多线程,因此您可以在该特定机器上做更多的流处理工作。

如果您有容量(即:CPU 个核心),那么您应该有更多线程,以便可以在该实例上安排更多流任务,从而在您的 KSQL 实例或集群上具有额外的并行化容量(如果您有多个实例)。

对于 Kafka、Kafka Streams 和 KSQL,您必须了解的是水平扩展的发生有两个主要概念:

  1. Kafka Streams 应用程序(例如 KSQL)可以并行化基于 关于kafka主题分区的数量。如果你有 3 个分区 并且您启动了 4 个 KSQL 实例(即:在不同的服务器上),那么其中一个将不会在您在该主题之上创建的 Stream 上工作。如果你有 同一个主题有 3 个分区,而你只有 1 个 KSQL Server,他会 完成 3 个分区的所有工作。
  2. 当您添加应用程序 Kafka Stream Application 的新实例(在您的情况下为 KSQL)并加入您的集群处理您的 KSQL 流和表时,该特定实例将加入消费组 这些主题并立即开始与其他人分担负载 实例,只要有其他实例可以卸载的可用分区(触发消费者组重新平衡)。如果您关闭一个实例,也会发生同样的情况……其他实例将收拾残局并开始处理退休实例正在处理的分区。

与垂直扩展(即:向 KSQL 实例添加更多容量和线程)相比,水平扩展通过将相同的计算资源添加到不同机器上的不同应用程序实例来实现相同的效果。您可以在此处了解 Kafka Stream 应用程序线程模型(具有一个或多个应用程序实例,在一台或多台机器上):

我试图简化它,但您可以在 KSQL Capacity Planning page and Confluent Kafka Streams Elastic Scale Blog Post

上阅读更多内容

Kafka Streams(和 KSQL)应用程序 scale-out / scale-in 生命周期的重要方面可以这样更好地理解:

1.一个实例处理 4 个不同的分区

2。三个实例在 4 个不同的分区上工作(其中一个是 在 2 个不同的分区上工作)

3。一个实例刚刚离开组,现在两个实例正在处理 4 不同分区,完美平衡(每个分区2个)

Images 来自 confluent 博客)