在 Google Cloud Run 上运行 Kafka 消费者

3

我有一个很大的应用程序,有许多微服务通过Kafka通信。现在它正在GKE上运行。

我们将Kafka迁移到confluent.io,并计划将一些微服务迁移到Google Cloud Run(完全托管)。

但是,...看来Google Cloud Run(完全托管)不支持监听kafka事件,对吗?是否有计划支持它?有没有解决办法?

编辑:

这篇由 andres-s 分享的文章显示您可以实现自己的云运行并将其连接到Anthos中的confluent kafka。

在完全托管的Google Cloud Run服务中拥有此选项将是很好的。

但与此同时,问题是:是否可能在常规GKE集群(非Anthos)中实施它?


据我所知,Cloud Run完全托管符合Knative服务API标准,但不符合事件标准。因此,您无法在没有包装器/翻译器的情况下链接两个世界。 - guillaume blaquiere
抱歉,我的错...你是对的,它是使用Knative serving API构建的。我混淆了,我以为它是使用Knative eventing API。我会更新问题。 - csalazar
Anthos 适合你!Anthos 的意思是“在一个地方管理多个集群(GKE、EKS、AKS、本地等)”。如果您只使用 GKE,则 Anthos 贴纸只是营销! - guillaume blaquiere
3个回答

3
Google Cloud 通过 SaaS 合作伙伴 Confluent 提供全面托管的 Kafka 解决方案,并使用 Cloud Run for Anthos (with GKE)。Google Pub/Sub 是 GCP 上的 Kafka 替代品,但是通过 Confluent 您可以在 GCP 上使用 Kafka。

我计划将Kafka从我的GKE集群迁移到Confluent,但这并不能解决我的问题。我想使用完全托管的Google Cloud Run服务来运行我的微服务。无论如何,感谢您分享这篇文章。您知道它是否适用于常规的GKE集群(而非Anthos)吗? - csalazar
没有 Anthos 直接参与,它不会起作用,也许 Jason Jay Smith 建议的解决方法可以帮助。 - Andres S

3

Cloud Run就是Knative SERVING。它是无状态的,当接收到事件时会启动。因此,它无法订阅主题并拉取事件。

Knative Eventing的本质更具有状态,处理拉取并随后触发运行Knative Serving的Pod。理想情况下,它们应该一起使用,为您提供完整的无服务器体验。

好消息是,有一个“技巧”。您可以进行“Kafka到PubSub”的转换,然后将其发布到Cloud Run。如果您喜欢冒险且不介意开源软件,那么在serverlesseventing.com上有许多Knative Eventing教程。


谢谢你的回答。我理解了从Kafka到Pub/Sub的代理部分,并且我知道Pub/Sub可以通过调用微服务公开的HTTP端点来触发我的微服务。但是...问题是,现在我的微服务没有公开HTTP端点,而是监听Kafka主题。为了实现您提出的解决方案,我需要修改我的微服务以公开HTTP端点,而不是监听Kafka主题。我是对的吗?还是应该让它们直接监听PubSub? - csalazar
您需要将其暴露给HTTP,但不一定要将其暴露给全世界,或者可以通过需要身份验证来保护它。但是,目前Cloud Run确实需要HTTP / S曝光。 - Jay Smith
好的,谢谢你的澄清 :) ... 另外,我注意到你是这篇文章 https://cloud.google.com/community/tutorials/cloud-run-eventing-kafka 的作者... 这就是我要尝试的方法。谢谢! - csalazar

1

Google Cloud Run支持Kafka消费者,但您需要在Cloud Run服务上启用标志“--no-cpu-throttling”(这将增加成本)。此外,您需要在Kafka和服务之间创建VPC连接器,并通过“--vpc-connector”在服务中通知连接器名称。

我的kafka在VM中,我的服务在cloudrun中,它能够完美地工作!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接