Kubernetes 上的 Apache Kafka 消费者组和微服务 运行,它们兼容吗?
Apache Kafka consumer groups and microservices running on Kubernetes, are they compatible?
到目前为止,我一直在使用 Spring 引导应用程序(使用 Spring Cloud Stream)和 Kafka 运行,但没有任何支持基础设施 (PaaS)。
由于我们的公司平台是 运行 在 Kubernetes 上,我们需要将那些 Spring 引导应用程序移动到 K8s 中以允许应用程序扩展等等。显然,每个应用程序都会有多个实例,因此我们将为每个应用程序定义一个消费者组,以确保每条消息的唯一传递和处理。
Kafka 将 运行 在 Kubernetes 之外。
现在我的疑问是:由于部署在k8s上的应用程序是通过抽象底层pods的k8s服务访问的,而单个应用程序pods不能直接在k8s之外访问集群,Kafka 不知道如何调用消费者组的各个实例来传递消息,对吗?
如何让它们协同工作?
Spring Cloud Data Flow 能否解决您控制部署实例数量的需求?
并且,社区发布了 Spring OpenShift 云数据流服务器:
https://github.com/donovanmuller/spring-cloud-dataflow-server-openshift
Kafka 代理不向客户端推送数据。而是客户端 poll() 并从代理中提取数据。只要消费者可以连接到 bootstrap 服务器,并且您设置 Kafka 代理来宣传客户端可以连接到的 IP 和端口以及 poll(),那么一切都会正常工作。
到目前为止,我一直在使用 Spring 引导应用程序(使用 Spring Cloud Stream)和 Kafka 运行,但没有任何支持基础设施 (PaaS)。
由于我们的公司平台是 运行 在 Kubernetes 上,我们需要将那些 Spring 引导应用程序移动到 K8s 中以允许应用程序扩展等等。显然,每个应用程序都会有多个实例,因此我们将为每个应用程序定义一个消费者组,以确保每条消息的唯一传递和处理。
Kafka 将 运行 在 Kubernetes 之外。
现在我的疑问是:由于部署在k8s上的应用程序是通过抽象底层pods的k8s服务访问的,而单个应用程序pods不能直接在k8s之外访问集群,Kafka 不知道如何调用消费者组的各个实例来传递消息,对吗?
如何让它们协同工作?
Spring Cloud Data Flow 能否解决您控制部署实例数量的需求?
并且,社区发布了 Spring OpenShift 云数据流服务器: https://github.com/donovanmuller/spring-cloud-dataflow-server-openshift
Kafka 代理不向客户端推送数据。而是客户端 poll() 并从代理中提取数据。只要消费者可以连接到 bootstrap 服务器,并且您设置 Kafka 代理来宣传客户端可以连接到的 IP 和端口以及 poll(),那么一切都会正常工作。