有没有一种方法可以指定在KSQL Server上运行的KSQL查询应该消耗的线程数?换句话说就是查询的并行性。
可以在KSQL Server上运行的应用程序数量是否有限制?什么时候或如何决定横向扩展?
答案 0 :(得分:1)
是的,您可以指定ksql-streams-num-streams-threads
属性。您可以详细了解here。
现在,这是对该特定KSQL实例进行流处理的KSQL Streams线程数。这对于垂直扩展很重要,因为您的计算机中可能有足够的计算资源来处理更多的线程,因此您可以在该特定计算机上处理流的工作更多。
如果您有能力(例如:CPU核心),那么您应该有更多的线程,以便可以在该实例上调度更多的Stream任务,从而在您的KSQL实例或群集上具有更多的并行化能力(如果您有多个)实例)。
您必须对Kafka,Kafka Streams和KSQL有所了解的是,水平缩放具有两个主要概念:
与垂直扩展相比(即,向KSQL实例添加更多的容量和线程),水平扩展通过将相同的计算资源添加到不同机器上的应用程序的不同实例来实现相同的目的。您可以在此处了解Kafka Stream应用程序线程模型(在一台或多台计算机上具有一个或多个应用程序实例):
我试图简化它,但是您可以在KSQL Capacity Planning page和Confluent Kafka Streams Elastic Scale Blog Post
上阅读更多内容。可以更好地理解Kafka Streams(和KSQL)应用程序的横向扩展/纵向扩展生命周期的重要方面:
1。一个实例可在4个不同的分区上工作
2。三个实例在4个不同的分区上工作(其中一个是 在2个不同的分区上工作)
3。一个实例刚离开组,现在有两个实例正在处理4 不同的分区,完美平衡(每个分区2个)
(来自融合博客的Images)