【问题标题】:Kafka + AWS lambda卡夫卡 + AWS 拉姆达
【发布时间】:2017-08-28 08:33:49
【问题描述】:

是否可以将 AWS Lambda 与 Apache Kafka 集成? 我想将消费者放入 lambda 函数中。当消费者收到消息时,lambda 函数就会执行。

【问题讨论】:

  • 您真的应该考虑 AWS Kinesis,它与 Kafka 相当,并与 Lambda 原生集成。

标签: amazon-web-services apache-kafka aws-lambda


【解决方案1】:

继续阿拉法特的观点。我们已经成功地构建了一个使用 AWS Lambdas 从 Kafka 消费的基础设施。以下是一些陷阱:

  • 确保在使用时一致地批处理和提交。
  • 如果您将批次存储到 s3,请确保清理文件描述符。
  • 如果您要将批次转发到另一个服务,请确保清除变量。 AWS Lambda 中的变量缓存可能会导致内存溢出。
  • 一个好主意是检查您在 Lambda 中的 context 对象中还剩下多少时间,并给自己一些回旋余地来处理您在消费者中填充的缓冲区,该缓冲区可能不会被读取到文件中除非你打电话给close()

我们正在使用 Apache Airflow 进行调度。我听说 cloudwatch 也可以。

【讨论】:

  • 已确认,cloudwatch 可用于触发作为消费者运行的 lambda。我们的 lambda 使用 confluent kafka for Python
【解决方案2】:

这里是 AWS article on scheduled lambdas

鉴于您的 Kafka 安装将在 VPC 中运行,最佳实践是将您的 Lambda 配置为也在 VPC 中运行 - 这将简化运行 Kafka 的 EC2 实例的安全组配置。

Here 是关于配置 Lambda 以在 VPC 中运行的 AWS 博客文章。

【讨论】:

    【解决方案3】:

    是的,AWS Lambda 函数中很有可能有一个 Kafka 消费者。

    但是请注意,您将无法使用某种通知来调用 lambda。您将不得不轮询 Kafka 主题。最简单的方法是使用Scheduled Lambda

    【讨论】:

    • 您对如何使用 Lambda 投票主题有什么建议吗?我部署了一个消费者,它正在阅读 Kafka 主题,但我不确定如何设计最佳的轮询方法,同时牢记 lambda 的时间限制。
    【解决方案4】:

    如果您在 AWS (MSK) 中使用托管 apache kafka:

    自 2020 年 8 月起,您可以连接 AWS Managed Streaming for Kafka (MSK) 作为事件源。不是您自己安装的 kafka 集群,但如果您已经使用 AWS 托管的 kafka,这可能会很有用。

    更多内容见公告https://aws.amazon.com/about-aws/whats-new/2020/08/aws-lambda-now-supports-amazon-managed-streaming-for-apache-kafka-as-an-event-source/

    AWS 控制台的屏幕截图:

    【讨论】:

      【解决方案5】:

      有一个社区提供的Kafka Connector for AWS Lambda。此解决方案需要您在 EC2 或 ECS 等某个地方运行连接器。

      【讨论】:

        【解决方案6】:

        AWS 现在支持“将自托管 Apache Kafka 作为 AWS Lambda 的事件源”

        当您创建新的 Lambda 时,在“配置”选项卡中,单击“添加触发器”,您现在可以选择并配置您的自托管 Apache Kafka。

        欢迎在这里阅读更多内容:

        https://aws.amazon.com/blogs/compute/using-self-hosted-apache-kafka-as-an-event-source-for-aws-lambda/

        https://docs.aws.amazon.com/lambda/latest/dg/kafka-smaa.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-13
          • 1970-01-01
          • 1970-01-01
          • 2017-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多