- 注册时间
- 2008-5-19
- 最后登录
- 2012-5-3
- 在线时间
- 1762 小时
- 阅读权限
- 200
- 积分
- 14979
- 帖子
- 2524
- 主题
- 1200
- 精华
- 25
- UID
- 1
  
 - 签到
- 81
- 注册时间
- 2008-5-19
- 最后登录
- 2012-5-3
- 在线时间
- 1762 小时
- 阅读权限
- 200
- 积分
- 14979
- 帖子
- 2524
- 主题
- 1200
- 精华
- 25
- UID
- 1
|
发表于 2009-4-20 09:12:02
|显示全部楼层
从 出家如初,成佛有余 作者:chuanliang 通过 高春辉 的加星标项目
各个web项目要共享各种图片素材、手机软件,同时也需要处理用户自助上传的图片、软件在各个项目间的共享。采用了独立的图片服务器来集中存储各种图片资源,其他应用服务器通过NFS方式存取图片资源(在linux下使用nfs及软链接解决图片文件共享问题)。起初觉得这种模式相对简单且容易实现,也不是很在意图片服务器的容灾问题,最近在部署应用时候没有按照步骤操作,直接把通过NFS方式共享的目录删除了(由于要在应用上传图片时候实时同步到图片服务器上,因此NFS目录是read、write的),这才意识到容灾的问题。
在当前的经济形势下,遵循“少花钱、多办事”的原则,采用纯Open Source的方案,不增加硬件及软件投入。简单整理了一下图片服务器的实现时候需要考虑的几个地方:
1、操作文件系统的选择: 非分布式文件系统方案:ReiserFS4、Ext3、JFS
分布式文件系统方案:Redhat GFS、Lustre、ZFS、NFS
2、数据同步 采用操作系统层分布式文件系统本身的同步功能
采用应用层分布式文件系统同步方案:FastDFS、MogileFS、Hadoop HDFS
采用应用层第三方软件同步方案:csync2+inotify、rsync、unison、DRBD、tsync
3、Web服务器的选择: 采用轻量级的Lighttpd、Nginx,不采用apache4、Cache及反向代理:
Squid Lighttpd+mod_mem_cache
5、单独多个图片服务器、单独的图片服务器域名6、数据压缩: HTTP HEADER的Accept-Encoding
7、客户端缓存: HTTP HEADER的Expires、Cache-Control、Etag、Last-Modified参数设置
8、应用层优化: 图片按需生成、图片预先生成、根据应用场景降低图片分辨率
采用ReiserFS4+csync2+inotify方案来满足当前需要,后续有空再测试一下FastDFS、MogileFS、Hadoop HDFS 的方案。
Technorati 标签: 图片服务器,高性能服务器,csync2,inotify,lighttpd,hadoop,分布式文件系统,选型 |
|