通过 pp.sohu.com,淘宝,拍拍网的域名分析:
1871.img.pp.sohu.com.cn ,1872.img.pp.sohu.com.cn,1873.img.pp.sohu.com.cn ...
大致分析,是通过squid 集群的方式实现:
大致的结构图如下:

分析的理由如下:
(一 )
一般 Squid Server 集群 简单的运作模式是:
1. 当 Squid Server (parent) 没有资料时,会先向 Sibling 的 Squid Server 要资料。
2. 如果都拿不到资料,才向用户端回报拿不到资料。 
(二)
从pp.sohu.com网站上网页相关返回头信息分析:

X-Cache
MISS from 12237950.14924987.21130635.sohu.com, HIT from 14087629.19002952.22596629.sohu.comAge32282

Via1.1 12237950.14924987.21130635.sohu.com:80 (squid), 1.0 14087629.19002952.22596629.sohu.com:80 (squid)

说明,它确实是squid集群,第一个squid中没有找到,跑到相邻的squid server 去查找资料。
具体的集群方式,到底是 Sibling 在前,还是parent在前,不太清楚,或者没有parent,全都是由sibling组成。都有可能。
但是 有时候可以看到:
X-Cache
HIT from 10011260.10470073.18905479.sohu.com,
HIT from 14087629.19002952.22596629.sohu.com
所以设想,他可能有一个 parent squid server。
从 14087629.19002952.22596629 估计,他们是三个squid 一小组之类的。

图有可能是如下所示:

s

(三)
有一遍关于 paipai网的图片架构,由于他们是网上c@c 类型的网站,商品的图片数量肯定是巨大的,他们的解决方案是:
试用了squid 磁盘cache集群技术。
以下是他们们对squid cache集群的配置方面的一些阶段性的经验:
    A、 需要ulimit增加打开文件句柄的数量,以满足大并发访问的要求。
    B、 编译的时候需要加入epoll支持。
    C、 编译时打开cachemgr管理功能,以便运营时的监控数据获取。
    D、 编译时加入GDSF淘汰策略。淘汰策略对CPU消耗和命中率有明显影响。
    相关文献(John Dilley的Enhancement and Validation of Squid’s Cache Replacement Policy)中也有这方面的数据:

E、 编译是加入异步IO支持参数。
    F、 根据cache对象的大小设定cache的介质是内存还是磁盘。
    由于squid可控内存有限,我们设置大量小文件(小于25K的图片)cache在内存中,设置大文件(大于25K的图片)cache在磁盘。
 G、 磁盘cache不是越大越好。根据现在的访问情况看,如果目前一个省的用户的访问行为足够代表性。对于拍拍图片的访问命中率大概是:5G可以达到 54%;20G可以达到 80%(以上磁盘cache容量是单机设置,测试时用了2台服务器做集群,所以总容量是上述的1倍)。
H、 做磁盘cache的分区的文件系统最好使用reiserfs。
I、 不要记录cache_access_log和cache_store_log,这些log会严重影响磁盘IO性能。
J、 使用ICP协议作为集群服务器间的通信协议,虽然比较老,但比较稳定。
K、 对于32位的suse系统,内存cache大小不能超过1.8G

参考网址:
一下这篇文章,和我们的问题,非常相似。
(拍拍网的图片架构)
http://blog.csdn.net/sutine/archive/2009/09/28/4606490.aspx

(四)
再到拍拍网和淘宝的网站查看网页头部返回的信息:
他们相似的地方,都是利用 图片服务器多域名这样的方式,实现的集群,
不同的是拍拍网使用的是nginx在最前端,淘宝好像是squid直接定在前面,没仔细看。

由于感觉squid直接在前,还是比较危险,而且,squid集群维护比较麻烦,抗压能力也不怎么强,所以,
根据推测,自己设计了一个图片服务器搭建的方案:

解释如下:
(1)
假设现在有 十个域名:
Img01.xxx.com 到img10.xxx.com   每个域名后面都带有一一台或者几台nginx。利用nginx抗压力和利用它的url_hash. 然后在后方再带上一组squid集群。
(2)
Squid 集群,使用memDisk 和harddiskCache 同时使用。 针对不同的机器,加以调整,好机器内存大一点的话,多放点内存,比如5G内存cache,20G diskCache。由于我们现在的机器比较少,所以每台物理机器上安装2-3台squid。由于它消耗的主要是内存和磁盘,对cpu影响,不是非常的明 显,应该可以扛得住。
10台机器*2 *20 +10*5*2 = 500G ,至少可以cache将近 我们 1/8的数据。

(3)
同时,如果其中的一台squid死掉的话,还可以使用后被的nginx和squid顶上去,不会出现访问不到的情况。
(4)
单独拿出一台 nginx 当做 perge Server。在内网使用,外网发来的perge指令,全部拦截。Real Server 使用lighthpppd  等对图片处理比较强的server来承担。

(5)
前端机器上传图片的时候,将现有的这10个域名(可以随时添加),均匀的按照照片名称分散,保存到数据库里。

(6) 这样做的好处是:
如果我添加一组 图片服务器域名,以前所有图片的cache不会失效。
如果有一个盘柜的磁盘 满了的话,我可以添加一组 图片服务器域名 ,将以前的 域名从上传前端去除,这样,就可以实现 只读不写的功能,而且不用带来迁移的问题。

同时,由于上传的用户,大部分肯定是活跃用户,所以,我们可以将现在上传使用的 这组 图片服务器域名对应的机器以及它的cache集群,使用性能比较好的机器来顶,这样,就解决了最活跃的用户,让他的访问速度,比不活跃用户访问速度要快。
然后按照时间,一年或者半年一次轮询切换最新使用的图片上传域名,也不会出现图片迁移的问题。

以上纯属 自己的看法,如有错误,请留言指教。http://blog.csdn.net/iinel/article/details/4669448

转载于:https://www.cnblogs.com/seanxyh/archive/2013/04/16/3023452.html

T级图片数据Cache思路以及图片服务器搭建方法相关推荐

  1. base64格式的图片数据如何转成图片

    base64格式的图片数据如何转成图片 一.总结 一句话总结:不仅要去掉前面的格式串,还需要base64_decode()解码才行. 1 // $base_img是获取到前端传递的值 2 $base_ ...

  2. vue删除图片同时删除本地文件_删除图片数据时同时删除图片文件夹里面的相应图片文件的方法...

    作者:Mr.XQIJIANG 本文版权归[Mr.XQIJIANG]所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利. /// /// 删除图 ...

  3. python 获取二进制图片数据及判断得到图片类型

    获取二进制图片信息 img_url = 'http://xxxxxxxxxxxxxxxxxxxxxxx' data = requests.get( img_url , headers=headers) ...

  4. 温度传感器温度数据LED屏幕展示--物联网服务器搭建

    物联网服务器搭建 第一次接触物联网服务,所以也百度了一下. 常见的物联网服务器 1.Eclipse Mosquitto 国外的 下载地址:Eclipse Mosquitto 该服务百度资料比较多,但是 ...

  5. python导入图片数据_Python中读取图片的6种方式

    Python进行图片处理,第一步就是读取图片,这里给大家整理了6种图片的读取方式,并将读取的图片装换成numpy.ndarray()格式.首先需要准备一张照片,假如你有女朋友的话,可以用女朋友的,没有 ...

  6. 图片存到服务器php,PHP肿么把图片数据保存为jpg图片到服务器目录

    第一步:通过$_FILES获取文件信息. 第二步:指定新文件名称以及路径,并赋值给一个变量. 第三步:通过move_uploaded_file上传文件. 第四步:上传成功后,将数值存入数据库服务器目录 ...

  7. 关于亿级账户数据迁移,你应该试试这种方法...

    背景 在阿里巴巴内部"大中台,小前台"的组织和业务体制,使前线业务更加敏捷,赋能业务积极迎接未来挑战和机遇,在阿里大中台能力建设过程中,同质化中台服务将会合并,小前台需要迁移原来依 ...

  8. 二值化图片数据解码显示(Grayscale8、Grayscale16、RGB888)————附带Qt版完整代码

    文章目录 1 效果 2 思路 3 实现代码 4 扩展 4.1 RGB888 4.2 Grayscale16 5 实验数据 1 效果 显示效果: 二值化后的图片数据: 原始数据信息: \x00\x1F\ ...

  9. unet图片数据增强_kaggle气胸疾病图像分割top5解决方案

    比赛背景 突然喘气,无缘无故地无助地呼吸,这会是肺衰竭吗?气胸可由胸部钝伤.肺部疾病的损害引起,有时候甚至无法探寻诱因.在某些情况下,肺萎陷可能会危及生命.气胸通常由胸部X射线放射科医生诊断,但有时很 ...

最新文章

  1. 雷林鹏分享:Lua 数据库访问
  2. windows安装jenkins及ant/maven/jdk配置
  3. JS 获取指定时间的时间戳(兼容各个浏览器)
  4. 惠普大佬:未来30年四大趋势将推动科技产业发展
  5. Java中类变量(静态变量)和实例变量区别
  6. openssl req
  7. vs在release下调试时局部变量值错位修复
  8. IE下 jqModal的问题
  9. linux7.4邮件服务器,Centos7.4搭建邮件收发服务器(部署篇)
  10. 微信H5 分享(自定义标题、图片、链接) 与 禁止分享(微信隐藏功能按钮) 功能的写法
  11. 小米手机测试代码电池测试代码
  12. 日常中的迅捷PDF转换器
  13. xp系统扫描仪服务器,xp系统扫描仪添加步骤全程的图文教程
  14. Linux用户和权限管理看了你就会用啦
  15. 我的世界电脑服务器怎么显示键盘,我的世界电脑版操作按键
  16. iOS 消息转发(Message Forwarding)
  17. Python之pip:pip包管理工具的简介、安装、使用方法之详细攻略
  18. 灰度图转bmp文件 C++
  19. 网络驱动器和网络位置
  20. 决策树桩(Decision Stump)

热门文章

  1. 【不屈】生如蝼蚁,当立鸿鹄之志
  2. wps 模拟分析 规划求解_【网友来稿】利用Excel求解线性规划问题
  3. 推理计算过程_初中物理电学计算题第六讲:极值问题推理和限制条件
  4. C语言写300k文件大概多少行,为什么 DELPHI 编译出的程序一般的来说至少都有300k呢?...
  5. mysql upgrade 失败_`mysql_upgrade`失败,没有给出真正的理由
  6. python逻辑运算符or的短路求值特性_[Python]计算闰年时候出现的and和or优先级的问题以及短路逻辑...
  7. python和stata_从Python运行Stata do文件
  8. php后端如何搭建socket服务,从php做一个简单的socket服务器流程
  9. Oracle如何手工执行job,求助高手,JOB执行和手工执行执行结果不同,JOB执行不出来,手工却没问题...
  10. centos图形化桌面的文件在哪_Windows 远程连接 CentOS 7 图形化桌面