我目前有一个在 AWS Lambda 上运行的 API 服务,但由于 AWS 成本高昂,它变得越来越昂贵。我的目标是用一组服务器取代 95% 的使用量,同时仍然使用 Lambda 处理峰值。因此,我需要一个混合设置,当集群无法处理请求时,负载均衡器会将请求发送到 Lambda。
我对这种设置没有太多经验,所以我想征求建议。我想到的是负载均衡器 + Kubernetes + Lambda,但我不确定这是否可行。
这就是你发挥作用的地方。你能建议一些可以实现这一点的方法吗?正如所说,目标是降低成本,所以我会尽可能使用免费软件(并支付硬件费用,即服务器)。
谢谢。
答案1
我认为您不能轻松地将 K8s 和 Lambda 后端混合搭配用于同一项服务,并且当 K8s 过载时,Lambda 会出现一些智能溢出。
它可能有可能自定义逻辑- 例如,为 K8s 后端配备一个 ALB,为 Lambda 后端配备一个 ALB。在它们前面都配置一组 Nginx 服务器,配置方式是它们会优先使用 K8s ALB。只有在开始超时或开始抛出错误后,它才会将流量引导到 Lambda ALB。它甚至可能需要一个自定义 Nginx 模块来实现这一点,不确定。不过,这很可能不是你在 AWS 上可以开箱即用的事情。
顺便问一下,这是什么样的 API?如果它主要是只读(即向消费者报告一些值),如果它不一定是实时的,你可以使用以下方法节省大量对 Lambda 的调用缓存。由于您关心的是 Lambda 成本,我假设您每秒会收到大量调用。也许您不必通过 Lambda 来处理每个调用,而是将响应缓存在 CloudFront 上一秒钟、五秒钟或一分钟,然后让 CloudFront 提供缓存的内容。这比每次调用 Lambda 更便宜。
希望有帮助:)