【问题标题】:Kafka-stream Deployment strategyKafka-stream 部署策略
【发布时间】:2018-05-24 08:16:13
【问题描述】:

团队, Kafka-streams 应用部署应该遵循什么策略?

我们有一个应用服务器集群,根据部署策略,我们使用 Jenkins CI/CD 进行 jar 部署。 这里出现了重新平衡问题。部署应用程序后, 在 3-5 分钟内,所有服务启动,组进入重新平衡状态。

分配分区和消费者的部署快照之前。

TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID                                       HOST                           CLIENT-ID
METRICS                        62         70306073        70307980        1907       METRICS-0d65d2ba-06ce-4488-bd4b-7509391d6f08-StreamThread-5-consumer-540b76ab-8374-4e99-8507-c3003488c61b/172.24.xx.xx                  METRICS-0d65d2ba-06ce-4488-bd4b-7509391d6f08-StreamThread-5-consumer
METRICS                        30         73200612        73202022        1410       METRICS-ef9ac162-5e7f-4695-88c4-0660485a3f29-StreamThread-2-consumer-20919608-c5e9-4263-852b-04ae7f16bcf9/172.24.xy.xy                  METRICS-ef9ac162-5e7f-4695-88c4-0660485a3f29-StreamThread-2-consumer
METRICS                        31         75197907        75199506        1599       METRICS-784f2d93-9cee-445f-ae19-1eea98a2dd11-StreamThread-3-consumer-6211abf7-47b6-443d-8047-301fbd6a0ebf/172.24.xz.xz                  METRICS-784f2d93-9cee-445f-ae19-1eea98a2dd11-StreamThread-3-consumer

在部署/重启后,分区与不同的消费者对齐:

TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID                                       HOST                           CLIENT-ID

METRICS                        62         72423124        72424080        956        METRICS-7617b646-a9f8-4cee-ad40-3ace6e1cca1e-StreamThread-4-consumer-687ac6fb-5915-478a-87f6-25204f8261dc/172.24.3x.xx                  METRICS-7617b646-a9f8-4cee-ad40-3ace6e1cca1e-StreamThread-4-consumer

METRICS                        30         74813289        74814057        768        METRICS-2535d442-1f58-4c1a-bbd5-c0ef46a074d7-StreamThread-3-consumer-0496332f-4a60-42d3-98e9-d1ef9ef7e26a/172.24.3x.xx                  METRICS-2535d442-1f58-4c1a-bbd5-c0ef46a074d7-StreamThread-3-consumer

为了克服这种情况,我们尝试了 set kafka-consumer timeout 策略来避免同样的情况,但它似乎对我不起作用。

/XXX/kafka-1.0.0/bin/kafka-consumer-groups.sh --bootstrap-server 172.29.XX.XXX:9092 --describe --group GROUPNAME --timeout 300000

TOPIC                          PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG        CONSUMER-ID                                       HOST                           CLIENT-ID
GROUPNAME                        69         73592702        73593636        934        METRICS-0ae9cabe-4879-4400-b111-84580ea3118b-StreamThread-2-consumer-021397b6-87b3-49fb-ae01-b0acbc54cfc5/172.24.xx.xx                  METRICS-0ae9cabe-4879-4400-b111-84580ea3118b-StreamThread-2-consumer

因此,如果有人帮助我们在部署更改后获得分区的粘性分配(分区应分配到与部署前相同的节点),那将是很好的。 提前致谢!

【问题讨论】:

    标签: apache-kafka kafka-consumer-api apache-kafka-streams


    【解决方案1】:

    如果您停止并重新启动 Kafka Streams 应用程序,默认情况下它将生成新 ID。但这并不意味着分区被重新分配给不同的主机。

    您还可以通过 StreamsConfig.CLIENT_ID_CONFIG 为每个主机分配固定的 clientId,您可以将其传递到您的 Kafka Streams 配置中。

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 2021-06-19
      • 2020-09-21
      相关资源
      最近更新 更多