KSQL查询线程数

时间:2019-07-07 22:23:28

标签: ksql

有没有一种方法可以指定在KSQL Server上运行的KSQL查询应该消耗的线程数?换句话说就是查询的并行性。

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

1 个答案:

答案 0 :(得分:1)

是的,您可以指定ksql-streams-num-streams-threads属性。您可以详细了解here

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

如果您有能力(例如:CPU核心),那么您应该有更多的线程,以便可以在该实例上调度更多的Stream任务,从而在您的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 Streams和Tables的集群时,此特定实例将加入消耗 这些主题,并立即开始与其他人分担负担 实例,只要有其他实例可以卸载的可用分区(触发使用者组重新平衡)即可。如果您删除一个实例,也会发生同样的情况...其他实例将恢复正常状态并开始处理退休实例正在处理的分区。

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

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

上阅读更多内容。

可以更好地理解Kafka Streams(和KSQL)应用程序的横向扩展/纵向扩展生命周期的重要方面:

1。一个实例可在4个不同的分区上工作

A single instance working on 4 different partitions

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

Three instances working on 4 different partitions (one of them is working on 2 different partitions)

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

An instances just left the group, now two instances are working on 4 different partitions, perfectly balanced (2 partitions for each)

(来自融合博客的Images