首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Storm bolt连接到数据库

Storm bolt连接到数据库
EN

Stack Overflow用户
提问于 2019-11-15 21:33:47
回答 1查看 44关注 0票数 0

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

另一个螺栓被分配了200个执行者和200个任务来处理请求。

我不能增加到数据库的连接。我看到所有的请求都是针对单个员工的。其他工作人员继续等待并打印"0发送消息“。

代码语言:javascript
复制
kafkaSpoutConfigList:
  - executorsCount: 30
    taskCount: 30
    spoutName: 'kafka_consumer_spout'
    topicName: 'request'

processingBoltConfigList:
  - executorsCount: 2
    taskCount: 2
    boltName: 'db_bolt'
    boltClassName: 'com.Bolt1Class'
    boltSourceList:
      - 'kafka_consumer_spout'
  - executorsCount: 200
    taskCount: 200
    boltName: 'bolt2'
    boltClassName: 'com.Bolt2Class'
    boltSourceList:
      - 'db_bolt::streamx'

kafkaBoltConfigList:
  - executorsCount: 15
    taskCount: 15
    boltName: 'kafka_producer_bolt'
    topicName: 'consumer_topic'
    boltSourceList:
      - 'bolt2::Stream1'
  - executorsCount: 15
    taskCount: 15
    boltName: 'kafka_producer_bolt'
    topicName: 'data_test'
    boltSourceList:
      - 'bolt2::Stream2'

我使用的是本地和分组混洗。

EN

回答 1

Stack Overflow用户

发布于 2019-11-15 23:40:52

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

如果目标螺栓在同一工作进程中有一个或多个任务,那么元组将被混洗到那些进程中的任务中。否则,这就像一个普通的随机分组。

假设你的工人看起来是这样的:

代码语言:javascript
复制
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。Worker 3和4将处于空闲状态。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58878143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档