到目前为止,我一直在使用Spring Boot应用程序(使用Spring Cloud Stream)和Kafka在没有任何支持基础架构(PaaS)的情况下运行。
由于我们的企业平台在Kubernetes上运行,我们需要将这些Spring Boot应用程序移动到K8以允许应用程序扩展等等。显然每个应用程序都会有多个实例,因此我们将为每个应用程序定义一个消费者组,以确保每条消息的唯一传递和处理。
Kafka将在Kubernetes外面跑。
现在我的疑问是:由于部署在k8s上的应用程序是通过抽象底层pod的k8s服务访问的,而且单个应用程序pod不能直接访问k8s群集之外,Kafka不会获胜知道如何调用消费者组的各个实例来传递消息,是吗?
如何让它们一起工作?
答案 0 :(得分:2)
Kafka经纪人不会将数据推送给客户。而是客户端poll()并从经纪人处提取数据。只要消费者可以连接到引导服务器并且您将Kafka代理设置为广告客户端可以连接到的IP和端口以及poll(),那么它将全部正常工作。
答案 1 :(得分:1)
Spring Cloud Data Flow能解决您控制部署的实例数量的需求吗?
并且,社区发布了针对OpenShift的Spring Cloud Data Flow服务器: https://github.com/donovanmuller/spring-cloud-dataflow-server-openshift