首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

vAgent开发-图片服务器的分开

2012-11-09 
vAgent开发---图片服务器的分离vAgent的共有2000条左右的宾馆数据,每个宾馆有5到8张图片;1600条旅游路线数

vAgent开发---图片服务器的分离
vAgent的共有2000条左右的宾馆数据,每个宾馆有5到8张图片;1600条旅游路线数据,每个旅游路线有一张图片。
起初图片和web程序是在同一台机器上的,并且是存在文件系统中的。在CakePHP框架下目录存放结构如下:

CakePHP使用下面的方式输出图片:



由于预期图片访问会使运行vAgent的web服务器压力过大,希望能将hotels,tours的图片数据从web服务器分离。当前系统的 html和图片结构如下:


希望分离后结果如下:


基本能想到的是使用分布式文件存储系统;另一种是简单的图片目的地重新指向的重构方式。为了应急,我们首先采用的是后面的方案.

1. 架设两台图片服务器上,一台给宾馆数据用,一台给旅行路线用。服务器域名分别为image1.vagent, image2.vagent.

2.把web服务器上的files/hotels目录移动到image1.vagent服务器的http目录下,采用同样的目录结构
  把web服务器上的files/tours目录移动到image2.vagent服务器的http目录下,采用同样的目录结构

3. 然后重构所有的图片访问代码如下:
define('HOTEL_DIR','http://image1.vagent/');define('TOUR_DIR','http://image2.vagent/');


从而实现图片和web程序的分离。


一般来说站点的图片可分为两类:一个是美工装饰用;一个是产品图片,是数据。对于vAgent,hotels和tours的图片就是产品图片,也是着力分离的。对于网站本身用的按钮,徽标等依然和web程序放在一起。这里要注意一下。

而且关于性能在图片服务器分离方面的优化还涉及到图片本身存储设计的问题上。系统的优化是逐步提高的,在现在优化的基础上,接下来还要进行分布式存储的优化。希望最初设计得缺失不要影响接下来的系统优化。关于分布式文件系统存储稍后要单独篇幅介绍了,不知道这篇算不算通俗易懂,希望大家能够有所收获,也接受板砖。


1 楼 mysoko 2009-01-16   朋友,按照你得说法,我在java上面,上传得时候怎么处理。
我之前项目都是没有大量图片问题,最近这项目需要有类似产品得图片,而且很多,我放到工程目录下,一会就大起来了,快满了。

现在想按照你得方案,另开一个图片服务器得话,我上传得时候怎么办?列出方法?

我现在有的方式:用webservice。不知道你是怎么实现? 2 楼 koda 2009-01-16   你用webservice做什么?能用来存储图片,也能用来下载图片?

如果webservice能用来存储图片数据,那用户提交图片数据时,你的后台程序(web程序)接收后,调用webservice把上传数据在存储到到图片服务器不就可以了吗?

如果你的webservice不能存储图片,你就写一个(当然你可以选择webservice,可以选择一般的http service,甚至是一个普通的socket程序).

3 楼 mysoko 2009-01-16   我现在是用webservice上传,
其实我想找另一种方法,刚才在je转了下,看到有几个帖子谈到了这话题,
http://www.iteye.com/topic/27013
http://www.iteye.com/topic/166353?page=1

我得机器是win 2003的,现在把图片放到单独一个磁盘上得,之前没考虑那么多,现在这个磁盘快满了,我得代码上传图片保存得位置都是这个盘,我看了下,大家都用单独得图片服务器来解决,我现在也想这么搞,不知道如何实施?

不过我现在机器上还有个盘是空得,怎么才能利用起来?
4 楼 koda 2009-01-16   mysoko 写道
我现在是用webservice上传,其实我想找另一种方法,刚才在je转了下,看到有几个帖子谈到了这话题,http://www.iteye.com/topic/27013http://www.iteye.com/topic/166353?page=1我得机器是win 2003的,现在把图片放到单独一个磁盘上得,之前没考虑那么多,现在这个磁盘快满了,我得代码上传图片保存得位置都是这个盘,我看了下,大家都用单独得图片服务器来解决,我现在也想这么搞,不知道如何实施?不过我现在机器上还有个盘是空得,怎么才能利用起来?


加一块硬盘!

Linux 机器: Mount一块硬盘后,用LVM扩大你的分区尺寸。
Window机器: Mount一块硬盘后,用PartitionMagic扩大分区尺寸

5 楼 mysoko 2009-01-16   谢谢,知道怎么做了。!

热点排行