在无服务器架构/ Lambda上运行Kafka Producer/Listener的方法



我有一个完全围绕AWS Lambda构建的微服务架构,还包括一个生产者/侦听器,它通过SQS与业务Lambda函数松散耦合。它通过以下方法很好地工作:

  • lambda的并发数为1
  • 通过CloudWatch Events每1分钟触发一次:由于最大并发性为1,如果一个实例正在运行,如果已经提供了一个函数,则不会有并行调用
  • 如果函数接近15分钟的超时时间,它将优雅地关闭自己

我还没有遇到任何麻烦&该解决方案确实具有成本效益,但正如您可能已经注意到的,至少有一个主要缺点:消费者/生产者将"离线";最多等于1。每~15分钟(Lambda的最大执行时间)x分钟(下一次CloudWatch调用可能需要59秒+引导生产者/侦听器)。

我没有任何硬性的实时要求,但我确信有更好的方法或改进,而不需要切换到在ECS中运行容器,这是我真正想避免的。

我有什么选择?

我可以从你的SQS中推荐你可以订阅SNS主题,从你的SNS中你可以订阅你的lambdas,这是你可以利用SNS每秒30k事务的能力。

为什么要为SQS实现自己的消费者/侦听器?FaaS最好的部分之一是它与事件源(如SQS)的本地集成。所以只要把你的函数和SQS连接起来。

https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html events-sqs-eventsource

如果你想使用lambda来消费Kafka,集成也是可用的,https://aws.amazon.com/blogs/compute/using-self-hosted-apache-kafka-as-an-event-source-for-aws-lambda/.

最新更新