Apache storm 连接到数据库的风暴螺栓

Apache storm 连接到数据库的风暴螺栓,apache-storm,Apache Storm,我有一个喷口,从一个40K qps的源读取。 我有两个螺栓,第一个螺栓从源代码读取数据并进行数据库连接以构建缓存,缓存每小时刷新一次。数据库为一个用户打开了2个连接,所以我对这个螺栓的执行器计数是2 其他螺栓被分配200个执行器和200个任务来处理请求 我无法增加到db的连接。我看到所有的要求都是单身工人。其他工作人员继续等待并打印“0发送消息” 我正在使用localandgroupshuffling 使用localorshufflegroup时,会发生以下情况: 如果目标bolt在同一个工作进

我有一个喷口,从一个40K qps的源读取。 我有两个螺栓,第一个螺栓从源代码读取数据并进行数据库连接以构建缓存,缓存每小时刷新一次。数据库为一个用户打开了2个连接,所以我对这个螺栓的执行器计数是2

其他螺栓被分配200个执行器和200个任务来处理请求

我无法增加到db的连接。我看到所有的要求都是单身工人。其他工作人员继续等待并打印“0发送消息”


我正在使用localandgroupshuffling

使用localorshufflegroup时,会发生以下情况:

如果目标bolt在同一个工作进程中有一个或多个任务,则元组将被洗牌为只处理那些进程内任务。否则,这就像一个普通的随机分组

让我们假设你的员工看起来像这样:

worker1: {"bolt1 task 1", "bolt2 task 0-50"}
worker2: { "bolt1 task 2", "bolt2 task 50-100"}
worker3: { "bolt2 task 100-150"}
worker4: { "bolt2 task 150-200"}
在这种情况下,因为您告诉Storm在从bolt1发送到bolt2时使用本地分组,所以所有元组都将发送到worker 1和worker 2。工人3和4将处于空闲状态

如果您还想将元组发送给worker 3和worker 4,则需要切换到随机分组

worker1: {"bolt1 task 1", "bolt2 task 0-50"}
worker2: { "bolt1 task 2", "bolt2 task 50-100"}
worker3: { "bolt2 task 100-150"}
worker4: { "bolt2 task 150-200"}