文档章节

Nginx图片服务器的架构方案

mickelfeng
 mickelfeng
发布于 2013/02/26 00:25
字数 923
阅读 737
收藏 29

图片服务有两种问题,一是存储问题,二是访问量问题。
存储问题就是硬盘容量问题,花钱买硬盘就可以了,看似简单,但着实也是最苦的问题。按目前探索来看,最好的方式是:在任何时刻遇到硬盘空间不够时,买颗硬盘插上,最多改改配置,就能立刻利用;另外,硬盘要能充分利用,不然图片存储量大再加上备份,很恐怖,最好是每颗硬盘都用上100%的空间。
访问量也是个大问题,如果服务不允许防盗链,那么访问量会引起带宽、服务器压力等问题,有钱的话直接扔CDN,没钱或者有更多的钱,就自己做吧。根据垣古不变的真理“越老的图,访问量也相对较少”这一点,分成两大部分,一边处理最新的图片,一边处理老旧的图片。最新的图片访问量大,但存储量较少;老图片访问量低,但存储量大。
大概分析完了,开始制定方案。

一、拟定一个存储目录规则:
在现有的/a/b/abcde.jpg这样的hash方式下多加一个日期的目录变成:/200810/16/a/b/abcde.jpg或者/2008/10/16/a/b/abcde.jpg。按日期制定这个目录规则后,就可以按年月来拆机器了。

二、分机器,分硬盘
按之前的计划,分成两个组,一组服务器用lvs做负载均衡负责新图片;另一组服务器做旧图片访问和备份。新图机器找几台好点的服务器,SCSI硬盘;旧图机器没太大要求,PC机就行,找够硬盘就可以,现在IDE的1T硬盘也不太贵,最好再搭个raid就省事了,最主要是这些机器要多。

说明一下:
1、图片服务通过lvs作为入口,处理能力上还是有保障的。

2、利用nginx直接对外服务,不必用squid。

3、图中的红线是指主nginx会将/2006和/2007年的图片分别代理到两台存档服务器,如果发现主nginx的cpu占用比较大,那么可以考虑使用nginx的proxy_store将图片存到主服务器上,定期清理。

4、图中有一台存储分配服务器,作为图片服务更新图片的统一入口,有新图片或者修改图片的话,由这台服务器负责将图片放到正确的服务器上去。

5、旧图片服务器当前用年份来划分,每年增加两台服务器,亦可是加两块硬盘,注意,不要相信raid,一定要有两台机器,地理上分在两个城市则更好。

6、因为旧数据2006和2007年的数据基本上是没有变化的,所以假如硬盘够大,那么可以把两年的数据合并在一起。

7、如果细心定制,那么旧图片服务器的硬盘100%塞满是可以的,旧数据的容量基本上不会大幅增长,小小预留1-2G空间就可以了。
使用这个架构的话,把去年的数据想办法迁到旧图服务器上,硬盘不够的话,加硬盘就可以了。如果图片量实在太大,主服务器连一年的数据都装不下,那可以用启用月份来划分;如果一个月都装不下了,那也太夸张了,那就启用日期吧;如果一天的数据都装不下,那就……

本文转载自:http://www.linuxany.com/archives/1424.html

共有 人打赏支持
mickelfeng

mickelfeng

粉丝 229
博文 2669
码字总数 569153
作品 0
成都
高级程序员
私信 提问
一次架构失误的反思

我们公司的系统要做改造,以前是1台服务器,现在要换成4台服务器,我去的时候,运维已经把架构方案那些,都弄好了,都已经在测试了,大概架构如下: 请注意,这个和我们传统的架构是有区别的,...

zchd
2016/08/15
0
0
LAMP网站架构分析

转自:http://www.williamlong.info/archives/1908.html LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网 络服务器,MySQL数据库,P...

长征4号
2017/07/05
0
0
新型的大型bbs架构(squid+nginx)

这个架构基于squid、nginx和lvs等技术,从架构上对bbs进行全面优化和保护,有如下特点: 1、高性能:所有的点击基本上全部由前端缓存负责,提供最快速的处理。 2、高保障度:不需考虑应用程序...

鉴客
2010/09/13
15.6K
7
新型的大型bbs架构(squid+nginx

这个架构基于squid、nginx和lvs等技术,从架构上对bbs进行全面优化和保护,有如下特点: 1、高性能:所有的点击基本上全部由前端缓存负责,提供最快速的处理。 2、高保障度:不需考虑应用程序...

岭南六少
2011/09/12
0
0
大型站点高并发架构技术

大型站点高并发架构技术 高并发: 高并发主要是由于网站PV访问量大,单台服务器涌承载大量访问所带来的压力,所以会采用多台服务器进行分流,采用服务器集群技术,对于每个访问会被发送到哪台...

浮躁的码农
01/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

binlog2sql mysql数据库闪回工具

binlog2sql工具比mysqlbinlog+sed恢复更快捷。 1、安装: 从github上下载:https://github.com/danfengcao/binlog2sql shell> git clone https://github.com/danfengcao/binlog2sql.git && c......

mickelfeng
22分钟前
1
0
SpringCloud 复杂对象接收时候对象变成LinkeHashMap

如果定义feign接口为 @PostMapping("/user/queryUserByAccountStatus") BaseResult queryUserByAccountStatus(@RequestBody AccountsTenantIdStatusArg arg); 其中BaseResult的范性应该为Lis......

xiaomin0322
22分钟前
0
0
Android/Java 读、写MP3文件ID3V1信息

MP3的歌曲信息一般分两个大版本,分别是ID3V1和ID3V2,其中V2又分为好几个版本,具体百度一下,下方的代码仅仅是支持ID3V1。 需要用到的一个辅助工具(juniversalchardet)用于解决乱码问题,...

她叫我小渝
23分钟前
0
0
thymeleaf的onclick标签传参异常

异常 org.thymeleaf.exceptions.TemplateProcessingException: Only variable expressions returning numbers or booleans are allowed in this context, any other datatypes are not trust......

EasyProgramming
23分钟前
0
0
前端杂谈: CSS 权重 (Specificity)

前端杂谈: CSS 权重 (Specificity) css 权重想必大家都听说过, 一些简单的规则大部分人也都知道: 较长的 css selector 权重会大于较短的 css selector id selector 权重高于 class selector...

ssthouse_hust
31分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部