在我们的应用程序中,有多个不同 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 只有一个主题,它们不应该相互依赖。
他们的配置需要这个吗,请帮我看看。谢谢
您可以在一个 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 }}
或者,您可以使用多线程简单地让一个应用程序订阅多个主题。