aws-lambda - 用于低吞吐量事件驱动架构的 Databricks 或 AWS Lambda
问题描述
我希望设置一个事件驱动的架构来处理来自 SQS 的消息并加载到 AWS S3 中。这些事件的数量很少,我正在考虑使用 Databricks 或 AWS lambda 来处理这些消息,因为这是我们已经采购的 2 个工具。
我想了解哪一个最适合使用,因为我正在努力区分它们来完成这项任务,因为吞吐量每天最多只有 1000 条消息,而且目前不太可能更高,所以两者都有能力。
我只是想看看其他人会考虑什么,并将其视为这两种产品之间的差异化因素,以便我可以尽我所能确保这是面向未来的?
我们在我工作的地方更多地使用了 lambda,它可能有助于保持它的一致性,因为我们在内部拥有更多的 AWS 技能,但我们正在寻求构建 databricks 功能,我个人确实觉得它更易于使用。
如果是大数据,那么我会更容易做出决定。
谢谢
解决方案
在这种情况下,AWS Lambda 似乎是一个更好的选择。以下是与 DataBricks 相比,使用 Lambda 可以获得的一些好处。
优点:
免费:AWS Lambda 对每月 100 万次请求和每月 400,000 GB-秒的计算时间是免费的,这意味着您每天 1000 次的请求率很容易被覆盖。更多细节在这里。
非常简单的设置:Lambda 函数实现将非常简单。使用 AWS 控制台或 AWS cli 将 SQS 队列与您的 Lambda 函数连接。更多细节在这里。Lambda 函数代码只有几行。它从 SQS 队列接收消息并写入 S3。
记录和监控:您不需要任何单独的设置来跟踪性能指标 - Lambda 处理了多少消息,有多少成功,花费了多少时间。所有这些指标均由 AWS CloudWatch 自动生成。您还可以获得内置的重试机制,只需指定重试策略,AWS Lambda 将负责其余的工作。
缺点:
- 这种方法的一个缺点是每次调用 Lambda 都会写入 S3 中的单独文件,因为 S3 不提供 API 来附加到现有文件。因此,您每天将在 S3 中获得 1000 个文件。也许你对此很好(取决于你想在 S3 中对这些数据做什么)。如果没有,您将需要一个单独的作业来定期加入所有文件,或者从 S3 下载现有文件,附加到它并上传回来,这会使您的 Lambda 有点复杂。
另一方面,DataBricks 是为不同类型的用例而构建的——从 Amazon S3 加载大型数据集并执行分析、类似 SQL 的查询、构建 ML 模型等。它不适合这种用例。
推荐阅读
- android - 如何在我的主题中更改材质按钮禁用状态背景颜色?
- java - Spring - 将@Bean添加到没有名称属性的字符串
- yaml - 尝试运行 traefik-deeployment.yml 时服务“traefik-ingress-service”无效
- java - 如何在 IDEA IntelliJ 的调试模式下发送输入?
- javascript - 为什么我看不到 HTML
- java - 如何在我的代码中添加一个称为类别的新数组并将其与已保存到数组的文本文件中的代码一起打印出来
- javascript - 如何更改反应原生地图中的标记位置?
- c# - 如何在大表中选择某行中包含空数据的列并在列中使用不同的列
- sql - 在scala中如何将sql查询行中的结果转换为double
- sql - 如何调用上一个日期记录?