Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 集群环境下图像大小调整后的后处理_Amazon S3_Imageresizer - Fatal编程技术网

Amazon s3 集群环境下图像大小调整后的后处理

Amazon s3 集群环境下图像大小调整后的后处理,amazon-s3,imageresizer,Amazon S3,Imageresizer,我已经玩了一段时间ImageResizer,并试图做一些事情,但我很难理解如何去做 主要是我想坚持使用管道的想法,而不是试图欺骗它 所以。。。。比方说,我非常标准地使用ImageResizer进行如下操作: 巨人标志.jpg?w=280&h=100 文件名为giants_logo.jpg 处理请求是针对“w=280&h=100”的大小调整版本 在集群环境中,如果相同的请求由3台机器提供服务,将会发生什么情况。 这三个版本最终都会调整大小,然后将其缓存版本存储在光盘上的本地文件夹中。我可以利用共享

我已经玩了一段时间ImageResizer,并试图做一些事情,但我很难理解如何去做

主要是我想坚持使用管道的想法,而不是试图欺骗它

所以。。。。比方说,我非常标准地使用ImageResizer进行如下操作: 巨人标志.jpg?w=280&h=100 文件名为giants_logo.jpg 处理请求是针对“w=280&h=100”的大小调整版本

在集群环境中,如果相同的请求由3台机器提供服务,将会发生什么情况。 这三个版本最终都会调整大小,然后将其缓存版本存储在光盘上的本地文件夹中。我可以利用共享驱动器或其他东西,但这有其自身的局限性

我要做的是,获取处理过的文件,然后将其复制回提供主图像的DB或S3

我的想法是。。。。我可能不得不写一些类似DiscCache的东西,但是我的胆量完全不同,使用DB或S3作为后端,而不是文件系统

我意识到缓存的关键是速度,我的建议是否定这一点。。。。。但如果我们把东西分层,情况可能就不是这样了

无论如何,我关注的是如何跟踪生成的文件,以及避免在多个服务器上处理


关于实现这一目标的路线,我有什么想法吗?

TLDR当DiskCache实际上停止正常工作时(通常在100万到2000万个唯一映像之间),然后切换到CDN(除非太贵)或反向代理(除非您的数据集太大,无法被普通的基础架构绑定)

对于性能不佳的廉价PB数据集,这是一个不错的计划。但对大多数人来说,这还为时过早。即使是容量超过20TB(源映像)的用户也仍然使用DiskCache。真正地太字节驱动器很便宜


延迟是杀手。 要实现这一点,您需要一台中央Redis服务器。MSSQL不会削减它(至少在虚拟机或商品硬件上不会,我们已经尝试过)。给定一台Redis服务器,您可以跟踪所做和存储的内容(甚至可能跟踪正在进行的内容,以便像DiskCache一样实时消除重复工作)

如果可以跟踪它,就可以重用它,还可以删除它。重用会更慢,因为网络流量会翻倍,结果会移动两次。(但也会随着集群中用于获取源映像的服务器数量线性减少)

如果带宽饱和是您的瓶颈(非常常见),这可能会使性能更差。事实上,除非您的读/写比率是写的,并且CPU很重,否则您可能会看到在单个磁盘缓存下比重复的CPU工作更糟糕的性能

如果您有测试它的基础设施,请将DiskCache放在SAN或共享驱动器上;这将为您提供对预期性能的可靠估计(假设所述驱动器和blob存储系统具有相当的IO性能)

但是,这是一个相当大的工作量,实际上您复制了反向代理功能的一个子集(但性能较差,因为每个响应都必须通过不幸的群集服务器进行代理,而不是直接从磁盘进行假脱机)

CDN和用于救援的反向代理 Amazon CloudFront或Varnish可以很好地作为web场或集群的反向代理/缓存。现在,您对“垃圾收集”过程的控制将有所减少,但是。。。还需要维护的代码更少

也有,但我没听说过成功或失败的故事

但听起来很有趣! 给我发一个Github链接,我会帮你的


我很想得到一个Redis协调的、云不可知论的可怜人blob缓存系统。你带来了PB和基础设施,我将帮助你解决集成和麻烦。高效的HTTP代理可能是最难的部分;其余部分是状态管理和基本线程

您可能希望在以下位置查看修改后的AzureReader2插件:


此实现在初始请求时将转换后的映像存储回Azure blob容器,因此后续请求将重定向到该副本。

回答很好。我明白你的观点,你提到了我在“随机应变”过程中的一些担忧。我想我会先看看如何/如果我能利用cloudfront满足我的需求,如果不能,那么我们可以讨论更大的项目。。。。。可能发生:-)