【发布时间】:2019-11-17 11:24:34
【问题描述】:
有没有办法指定在 KSQL Server 上运行的 KSQL 查询应该消耗的线程数?换句话说就是查询的并行性。
在 KSQL Server 上可以运行的应用程序数量是否有限制?何时或如何决定向外扩展?
【问题讨论】:
标签: ksqldb
有没有办法指定在 KSQL Server 上运行的 KSQL 查询应该消耗的线程数?换句话说就是查询的并行性。
在 KSQL Server 上可以运行的应用程序数量是否有限制?何时或如何决定向外扩展?
【问题讨论】:
标签: ksqldb
是的,您可以指定ksql-streams-num-streams-threads 属性。你可以阅读更多关于它的信息here。
现在,这是针对特定 KSQL 实例进行流处理的 KSQL Streams 线程数。这对于垂直扩展很重要,因为您的机器中可能有足够的计算资源来处理更多线程,因此您可以在该特定机器上做更多的工作来处理您的流。
如果您有容量(即:CPU 核心),那么您应该有更多线程,以便可以在该实例上安排更多 Stream 任务,因此在您的 KSQL 实例或集群上具有额外的并行化容量(如果您有多个实例)。
对于 Kafka、Kafka Streams 和 KSQL,您必须了解的是水平扩展有两个主要概念:
与垂直扩展(即:向 KSQL 实例添加更多容量和线程)相比,水平扩展通过将相同的计算资源添加到不同机器上的应用程序的不同实例来实现相同的效果。您可以在此处了解 Kafka 流应用程序线程模型(具有一个或多个应用程序实例,在一台或多台机器上):
我试图简化它,但您可以在 KSQL Capacity Planning page 和 Confluent Kafka Streams Elastic Scale Blog Post 上阅读更多内容
Kafka Streams(和 KSQL)应用程序的扩展/缩减生命周期的重要方面可以更好地理解如下:
1.单个实例在 4 个不同的分区上工作
2。三个实例在 4 个不同的分区上工作(其中一个是 在 2 个不同的分区上工作)
3。一个实例刚刚离开组,现在两个实例正在处理 4 不同的分区,完美平衡(每个分区 2 个)
(Images 来自 confluent 博客)
【讨论】: