【问题标题】:Setup a high performing dynamic banner image generator on EC2在 EC2 上设置高性能动态横幅图像生成器
【发布时间】:2018-03-06 23:16:09
【问题描述】:

我目前有一个在一些专用服务器上运行的 rails 应用程序,我需要通过从 s3 获取产品图像来动态(根据请求)生成一些横幅图像,并在每个图像之上生成一些自定义格式(结合徽标,产品价格,一些文本等)。生成图像后,可以将图像缓存在 CDN 中。

有很多很多的产品图片,需要进入每张图片的数据/文本/价格经常变化,因此我不想依赖预先生成所有图片组合并将它们存储在 S3 中。在我目前的设置中,我在后台使用 imagemagick 生成图像,请求大约需要 750 毫秒,其中 2/3 是在 ruby​​/imagemagick 中花费的时间,1/3 是网络。

我正在考虑将生成实际横幅图像的工作转移到 Amazon(可能是 EC2)上。通过这种方式,我可以缩短 s3 的网络,并且随着请求的进入,我可以更好地扩大和缩小规模。然后,我可以从我当前的应用程序中通过 API 获取生成每个图像所需的数据/文本。但是我不确定是否有适合实际图像生成的确切任务的库,什么是高性能的?还有比生成一些 EC2 服务器(例如 lambda)更好的方法吗?

【问题讨论】:

  • 我用primarily opinion-based 标记它,因为有许多 许多 方法可以实现高性能应用程序。我建议使用 ImageMagick-7Q8(没有 HDRI)、Magick++ 和 AWS SDK for C++ 来创建订阅 SQS 的守护进程。

标签: ruby-on-rails amazon-web-services image-processing amazon-ec2 imagemagick


【解决方案1】:

您可以查看ruby-vips。它通常是3x to 4x faster than imagemagick,并且需要的内存要少得多。如果您打开issue on the ruby-vips github repo,我可以帮助您设置基准。

它是part of rails6,因此根据您使用的导轨,试验起来可能很简单。

【讨论】:

    【解决方案2】:

    您可以将您的应用程序部署到 ElasticBeanStalk,然后让 Amazon 在您看到高负载时处理扩展所需的基础设施。

    http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/Welcome.html

    或者正如您所指出的,您可以使用 Lambda 实现无服务器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-27
      • 2011-02-19
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多