图像存储技术

We have six appication server(under LVS) which send request randomly to all servers.

Around 8 years back we used to store images in databases.

Pros : Can be accessed from all the application server
Cons : Slow

Around 5 years back, we shifted images to store as a file on one of the six application server with the help of nginx rules that make sure all image read/write request go to single server.

Pros : Fast
Cons : All images read/write request go to single server.

Question: Is there any better images to solve the following issue:

1. Can be accessed from all application server.
2. Fast access

Note : we move images to common image server after some time. We don not move instantly as we dont want to reply on that server and also it will increase user upload time.

You can leverage the power of Content Delivery Networks (CDN) and storage buckets which is provided by services like AWS.

Upload all images to a single server say an AWS S3 bucket https://aws.amazon.com/s3/ which will help you to get all images from a central server and will be accessible from all application servers.

You can then link your S3 bucket with a CDN service like AWS's Cloudfront or some of the free services like Cloudflare. https://aws.amazon.com/cloudfront/

Read more about how to use S3 for PHP here:

https://devcenter.heroku.com/articles/s3

http://docs.aws.amazon.com/AmazonS3/latest/dev/RetrieveObjSingleOpPHP.html

Read more about linking an S3 bucket to cloudfront here:

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/MigrateS3ToCloudFront.html

So AWS's S3 will provide you globally accessible images and Cloudfront CSN will provide you amazing speeds.