服务
关于
CloudProse博客

2016年3月7日星期一

当您重新评估解决问题的方式时,通常使用新技术会获得一些主要好处。 AWS 江苏体彩和事件驱动的计算也不例外。

我将向您介绍我们最近开始使用的一种更激动人心的方法,我们将其称为“扇出”模式。如果您熟悉递归,那么江苏体彩扇出的核心概念应该对您有些熟悉。

扇出模式如何工作

任何扇出操作的开始都是一个江苏体彩函数,它接收初始请求或事件。从那里,事件被触发到江苏体彩函数的其他实例。二级功能可以调用三级功能,依此类推。事件会传播(散开),直到在合理的时间或CPU限制下可以管理工作负载为止。在许多情况下,响应随后会冒泡返回至初始函数,然后将最终响应传递回初始请求者。

待办事项:添加ALT

需要考虑的重要一件事是,江苏体彩函数的每个实例都具有自己的网络,内存和CPU。这意味着在扇出过程中发生的每个其他江苏体彩调用都具有与其他所有调用一样多的资源。没有进程互相挨饿的风险,所以请开火!

有什么好处

如果您有潜在的批处理作业,或者您传统上会在后台执行或推送到队列/工作人员池,则可能值得考虑。

让我们考虑一下re:Invent讨论的适用于多个行业的常见用例。面临的挑战是将数十个或数百个图像调整为任意大小,然后尽快将其返回给客户端。通过正确编写和优化的基于扇出模式的请求/响应模型,您可以了解如何轻松地动态调整大批量图像的大小,同时保持亚秒级的响应时间。

待办事项:添加ALT

其他用例包括:

  • 批量处理CSV /其他数据文件
  • 提取转换负载(ETL)数据作业
  • 通知(例如:邮件列表)
  • 运行场景的多个模拟
  • 其他 尴尬地平行{:target =“ _ blank”}情况

要考虑的事情&值得优化

在考虑扇出模式时,请仔细评估拉动江苏体彩函数的新实例化(一个实例可以反复使用,但只能保持几分钟)的潜在性能成本,以及网络请求的开销。例如,在调整图像大小时,我们不会对单个图像调整大小使用江苏体彩扇出,因为潜在的性能成本非常高。对于10张或100张以上的图像,绝对值得散开。

如果您将AWS 江苏体彩专门用于NodeJS,则有一个NodeJS默认配置,该配置将打开的套接字限制为5个。采用扇出模式时,5个连接是微不足道的,并且很快会成为瓶颈。这是修复程序,作为AWS对象实例化的一部分:

var agent = new https.Agent();
agent.maxSockets = Infinity;

var AWS = require('aws-sdk');
AWS.config.httpOptions = { agent: agent }

为了使lambda容器保持温暖,您可以实现一个调度lambda,该lambda可以调用您需要温暖并准备就绪的任意数量的函数实例。只需在代码中提前退出即可,这样就不会增加AWS支出。

exports.handler = function(event, context) {
if (event.heartbeat) return context.done(null, "Heartbeat")
// the rest of your code here
}

现在出去那里扇出!

作者
贾里德·崔特(Jared Short Trek)
贾里德·肖特(Jared Short)