云系统存储设计

时间:2015-08-07 06:59:09

标签: cloud distributed-computing

我正在开发一个需要某种图形操作的Web应用程序。因此,用户可以上传图片,并且可以在后端进行处理并反馈给用户。

现在,上传的图片存储在应用服务器的本地磁盘上,路径存储在mysql中。因为图像处理是使用imagemagick完成的,所以必须进行本地文件访问。这种方式工作正常,但显然违反了分配系统的原则。如果处理的节点与上传的节点不同,则无法找到实际的图像文件。

我不认为我应该将图像存储为mysql中的blob。什么是一个干净的处理方式?

2 个答案:

答案 0 :(得分:2)

云存储服务提供了一种解决方案。上传图片,例如某些Azure blob存储或Amazon Simple Storage Service。然后将图像处理请求发送到您的应用服务器,并将链接传递给云中的图像。如有必要,您的应用服务器也可以将图片从云存储下载到本地服务器存储。但是使用这种方法,您可能会运行多个服务实例(例如,多个服务器),并且每个实例都可能在云中找到图像并对数据进行操作。因此,您可以更好地扩展服务。

答案 1 :(得分:1)

ImageMagick完全能够访问非本地文件。

convert http://i.stack.imgur.com/6h1iJ.png -verbose info:

Image: http://i.stack.imgur.com/6h1iJ.png
  Format: PNG (Portable Network Graphics)
  Mime type: image/png
  Class: PseudoClass
  Geometry: 260x180+0+0
  Units: Undefined
  Type: Palette
  Endianess: Undefined
  Colorspace: sRGB
  Depth: 8/1-bit
  Channel depth:
    red: 1-bit
    green: 1-bit
    blue: 1-bit
  Channel statistics:
    Pixels: 46800
    Red:
      min: 0 (0)
      max: 255 (1)

或者,如果所有节点在同一网络上,则可以使用NFS服务器或NAS来存储文件,但所有节点都可以访问它们。