欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

大量图片存储方案选择

程序员文章站 2022-05-10 20:12:14
...
项目现在的架构是 LNMP ,主要的功能是用户上传大图( 5-30M )到服务器,服务器端再将大图切成几百个小图。前端访问后再加载小图。
没有使用 CDN 和 OSS 的经验,只了解类似同行业的公司都用的七牛的图片存储,前几天由于项目里面的某个作品微信转发很多,访问量比较大(当天 10W PV ),造成服务器带宽出现瓶颈,现在临时使用了阿里云的 cdn 加速静态图片,由于前期规划的时候没有考虑用独立的存储来处理图片,现在想把图片这块分离出来。

目前有 3 个瓶颈:
1 、 CPU :大图切成小图的时候, CPU 的使用率很高,如果同时超过 20 个用户在切图, CPU 基本跑到 80%了, CPU 目前是阿里云的 8 核心的,内存是 16G ,内存够用。按照我们目前的用户量,同时在线切图的用户不会超过 20 个。
2 、存储:由于用户可以无限制上传大图,图片存储在单机上也是问题,目前是一块 1T 的普通硬盘
3 、带宽:目前是固定带宽 10M ,流量正常的情况下足够,如果出现作品被用户发到微信朋友圈出现大量转发,高并发的情况下带宽就不行了。

解决方案:
1 、使用七牛的图片存储,用七牛唯一存在的麻烦的地方是图片的同步,用户上传的图片可能会出现修改和删除,需要即时同步到七牛,不知道会不会出现同步比较慢的情况还有一些其他未知的问题。

2 、使用阿里的 OSS+CDN ,由于服务器现在也是阿里的产品,图片同步可以通过内网,速度应该会好些吧。但是看到一些资料上说阿里的费用相对七牛会贵很多,没有对比过,不清楚差距有多大。

这两个方案哪个合理,还有什么更好的方案么?谢谢!

回复内容:

项目现在的架构是 LNMP ,主要的功能是用户上传大图( 5-30M )到服务器,服务器端再将大图切成几百个小图。前端访问后再加载小图。
没有使用 CDN 和 OSS 的经验,只了解类似同行业的公司都用的七牛的图片存储,前几天由于项目里面的某个作品微信转发很多,访问量比较大(当天 10W PV ),造成服务器带宽出现瓶颈,现在临时使用了阿里云的 cdn 加速静态图片,由于前期规划的时候没有考虑用独立的存储来处理图片,现在想把图片这块分离出来。

目前有 3 个瓶颈:
1 、 CPU :大图切成小图的时候, CPU 的使用率很高,如果同时超过 20 个用户在切图, CPU 基本跑到 80%了, CPU 目前是阿里云的 8 核心的,内存是 16G ,内存够用。按照我们目前的用户量,同时在线切图的用户不会超过 20 个。
2 、存储:由于用户可以无限制上传大图,图片存储在单机上也是问题,目前是一块 1T 的普通硬盘
3 、带宽:目前是固定带宽 10M ,流量正常的情况下足够,如果出现作品被用户发到微信朋友圈出现大量转发,高并发的情况下带宽就不行了。

解决方案:
1 、使用七牛的图片存储,用七牛唯一存在的麻烦的地方是图片的同步,用户上传的图片可能会出现修改和删除,需要即时同步到七牛,不知道会不会出现同步比较慢的情况还有一些其他未知的问题。

2 、使用阿里的 OSS+CDN ,由于服务器现在也是阿里的产品,图片同步可以通过内网,速度应该会好些吧。但是看到一些资料上说阿里的费用相对七牛会贵很多,没有对比过,不清楚差距有多大。

这两个方案哪个合理,还有什么更好的方案么?谢谢!

其实七牛会比较好,你担心的问题是可以解决的,很多时候问题的产生是因为设计者钻牛角尖。比如修改,图片要修改吗?删掉建新的就是了,名字都变了自然不会被缓存影响。
而你说的切图问题...为什么要在线切图呢?自己切好不行吗?一定要切原图吗?切30M的原图和切600K的缩略图占用的资源肯定不一样,难道30M的原图你是放大到100%的比例给用户切?

阿里的费用应该比七牛的便宜吧 阿里百川之前有免费100GB的存储空间使用

用户直接传到七牛 具体看官方文档 有demo