Apache kafka 有多少连接/订阅可以处理Kafka KSQL?

Apache kafka 有多少连接/订阅可以处理Kafka KSQL?,apache-kafka,ksqldb,Apache Kafka,Ksqldb,我们正在尝试将Kafka KSQL迁移到我们的系统中,并希望与大家分享一些在此过程中无法解决的问题。 我们的群集中有3个Kafka节点,每个服务器都有: 8 CORE 50G+ RAM 100G ssd 在每台服务器上,我们都有zookeeper来管理集群。 所有操作系统限制都增加了,因此节点可以使用超出其需要的资源: Xmx: 10G Xms: 10G nofiles: 500000 目前,从producer到集群的通信量很小(每秒约10条消息)。目前我们只有一个制作人

我们正在尝试将Kafka KSQL迁移到我们的系统中,并希望与大家分享一些在此过程中无法解决的问题。 我们的群集中有3个Kafka节点,每个服务器都有:

8 CORE  
50G+ RAM  
100G ssd  
在每台服务器上,我们都有zookeeper来管理集群。 所有操作系统限制都增加了,因此节点可以使用超出其需要的资源:

Xmx: 10G  
Xms: 10G  
nofiles: 500000
目前,从producer到集群的通信量很小(每秒约10条消息)。目前我们只有一个制作人,消息格式为:

{"user_id": <id|INT>, "action_id": <id|INT>, "amount": <amount|FLOAT>}
我们只有一张桌子:

 Field   | Type                      
-------------------------------------
 ROWTIME   | BIGINT           (system) 
 ROWKEY    | VARCHAR(STRING)  (system) 
 ACTION_ID | INTEGER                   
 USER_ID   | INTEGER                   
 AMOUNT    | DOUBLE         
以下是创建表时使用的命令:

create table <some_table> (action_id INT, user_Id INT, amount DOUBLE) with (KAFKA_TOPIC='<some_topic>', VALUE_FORMAT='JSON', KEY = 'user_id');
如果我们只使用一个订阅,我们不会收到任何问题(在这种情况下一切正常)。
但我们总共需要超过200000的订阅。因此,当我们尝试获得100-200个并行订阅时,我们的客户端会出现“读取超时”。在服务器中,我们没有看到任何可能影响KSQL的异常负载。
我们假设这个问题只与KSQL有关,因为当我们尝试使用另一台KSQL服务器(在不同的机器中)时,同时我们可以看到第二台服务器工作正常,可以处理大约1-20个订阅

我在互联网上找不到任何与KSQL服务器连接的基准测试,在文档中,我也找不到任何关于KSQL使用案例的提及,可能它的设计只是为了服务少量具有海量数据的连接,或者可能我们的系统配置错误,因此我们应该修复它以使用该软件实现我们的目标。
任何建议都会有帮助。

提前感谢)

您在ksqlDB中遇到可伸缩性问题的原因是您使用推送查询的方式不是设计用来使用它们的。。。。然而

推送查询:

SELECT * FROM <some_table> WHERE USER_ID=<some_user_id>;
从USER_ID=”的位置选择*;
使用它来订阅特定用户的更新似乎是完全明智的做法

然而,在ksql版本中,您使用的是这样的推送查询,我们只打算让在CLI上执行命令的人使用。每个这样的查询将在内部消耗一大块服务器资源,并消耗源主题中的所有行

基本上,推送查询不可伸缩

ksqlDB团队正在积极致力于增强ksql,以支持这种风格的用例,因为我们认识到这是一件常见的事情。(见附件)


同时,实现这一点的方法是使用您自己的消费者直接使用来自Kafka的数据,并在本地进行过滤

您能否提供更多关于用例的上下文以及为什么需要有200000个查询。我将给出一个非常简单的案例,我们需要在我们的系统中实现,在高峰时间,我们的系统中可以有200000多个活动用户。因此,每个用户都应该订阅其余额更新。另外,我想指出,我们在云中使用autoscaler,一个实例(服务器)可以服务N个用户。因此,每个实例只需要获得其用户的余额更新,而不是所有用户的余额更新。因此,对于我们来说,一个用户,现在是一个查询(订阅)。我想补充一点,还有另一个服务将为所有用户填写(生成)卡夫卡的所有余额更新。因此,如果我可以通过一些过滤器从我的应用程序中订阅,那就太好了。我这里有一些简单的图表,这将有助于理解我们存在的问题:我也不确定,既然您的数据如此简单,为什么您会有200K个唯一查询。也许你的意思是,这个主题将有20万消费者?您使用KSQL来消费这些数据,而不是普通的Kafka消费库?
create table <some_table> (action_id INT, user_Id INT, amount DOUBLE) with (KAFKA_TOPIC='<some_topic>', VALUE_FORMAT='JSON', KEY = 'user_id');
SELECT * FROM <some_table> WHERE USER_ID=<some_user_id>;
Xmx: 10G  (we have tried till 50G)
Xms: 10G  (we have tried till 50G)
nofiles: 500000
SELECT * FROM <some_table> WHERE USER_ID=<some_user_id>;