Kubernetes部署的微服务的每个pod/进程如何配置不同的kafka主题?

问题描述 投票:0回答:1

在我们的应用程序中,有多个不同 kafka 主题的消费者,如 Cosumer C1、Cosumer C2、Cosumer C3、Cosumer C4、Cosumer C5 以及他们不同的 kafka 主题,如主题 1、主题 2、主题 3、主题 4 和主题 5。意味着他们是一对每个生产者和消费者。当我在单个微服务的 POD/Kubernetes 进程上运行这一切时,它们不是任何问题。

我的问题是,我想创建 5 个 PODS,每个 Pod 由 Cosumer - Producer 从他们的主题组成,如下所示:-
POD 1 :- 消费者 1 - 主题 1
POD 2 :- 消费者 2 - 主题 2
POD 3 :- 消费者 3 - 主题 3
POD 4 :- 消费者 4 - 主题 4
POD 5 :- 消费者 5 - 主题 5

意味着每个 POD/Process 只有一个主题,它们不应该相互依赖。

他们的配置需要这个吗,请帮我看看。谢谢

apache-kafka kafka-consumer-api
1个回答
0
投票

您可以在一个 pod 中运行 5 个容器,将每个主题名称作为环境变量传递给容器。

如果您希望所有容器都相同,除了主题名称,您可以编写一个 Helm 模板,在每个容器的主题上循环

例如,从这样的值文件开始

application:
  image: myapp
  tag: latest

topics: [1,2,3,4,5]

还有这样的东西

apiVersion: apps/v1
kind: Deployment
metadata:
  name: consumer-example
  labels:
    app: consumer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: consumer
  template:
    metadata:
      labels:
        app: consumer
    spec:
      containers:
{{ for i, t := range .Values.topics }}
      - name: consumer-{{ i }}
        image: {{ .Values.application.image }}:{{ .Values.application.tag }}
        env:
        - name: KAFKA_TOPIC
          value:  {{ t }} 
{{ end }} 

或者,您可以使用多线程简单地让一个应用程序订阅多个主题。

© www.soinside.com 2019 - 2024. All rights reserved.