电商总结(四)基于共享存储的图片服务器架构
2016-03-08 18:29
441 查看
在当前这个互联网的时代,不管何种网站,对图片的需求量越来越大,尤其在电商网站中,几乎都会面临到海量图片资源的存储、访问等相关技术问题。在对图片服务器的架构,扩展,升级的过程中,肯定也会碰到各种各样的问题,各种各样的需求。当然这并不代表,就必须得弄一个特别NB的图片服务架构,简单,高效,稳定就行。所以今天就来总结一个特别简单,高效的图片服务架构:通过共享存储的方式来实现图片服务架构。
然而,也有一些人问我,现在大型网站的图片服务器的架构已经完全不是这样的了,别人家的图片系统,比你这个牛逼多了,为啥不直接写那个呢? 事实是:第一,大型牛逼的系统我也不会,第二, 再牛逼的系统也是从小的架构演化过去的,没有一步到位的。这里介绍图片服务器架构虽然比较简单,但也是经过了单机时代的演化了,基本上可以满足中小型分布式网站的需求。这种架构的搭建和学习成本,都极低,符合目前“短平快”的开发模式。
通过共享目录的方式实现共享存储 ,在共享目录文件服务器上配置独立域名,这样将图片服务器和应用服务器进行分离,来实现独立图片服务器。
优点:1 将图片服务和应用服务分离,缓解应用服务器的I/O负载。
2. 通过共享目录的方式来进行读写操作,可以避免多服务器之间同步相关的问题。
3. 相对来讲很灵活,也支持扩容/扩展。支持配置成独立图片服务器和域名访问,方便日后的扩展和优化。
4. 相对于更加复杂的分布式的NFS 系统,这种方式是性价比高,符合目前互联网的“短平快”的开发模式。
缺点 :1. 共享目录配置有些繁琐,
2. 会造成一定的(读写和安全)性能损失。
3. 如果图片服务器出现问题,那所有的应用都会受到影响。同时也对存储服务器的性能要求特别高。
4. 图片上传操作,还是得经过Web服务器,这对Web服务器还是有巨大的压力。
其实架构也非常简单,基本架构如下图所示:
1. 在存储服务器上建立一个共享目录(具体方式,我就不去重复了,自己百度吧,注意共享目录的文件安全)。
2. 各个应用直接通过共享目录(\\192.168.1.200),将图片上传到存储服务器上。
3. 建立一个web站点(i1.abc.com)将该共享目录通过web站点发布出去。这样其他的应用就能访问到相关图片。
所以,各应用,将文件上传到共享目录
上传成功后,可直接通过web 的方式访问:
http://i1.abc.com/lib/2016/03/04/10/IMG/4ugvvt6m9gdu.jpg
然而,也有一些人问我,现在大型网站的图片服务器的架构已经完全不是这样的了,别人家的图片系统,比你这个牛逼多了,为啥不直接写那个呢? 事实是:第一,大型牛逼的系统我也不会,第二, 再牛逼的系统也是从小的架构演化过去的,没有一步到位的。这里介绍图片服务器架构虽然比较简单,但也是经过了单机时代的演化了,基本上可以满足中小型分布式网站的需求。这种架构的搭建和学习成本,都极低,符合目前“短平快”的开发模式。
通过共享目录的方式实现共享存储 ,在共享目录文件服务器上配置独立域名,这样将图片服务器和应用服务器进行分离,来实现独立图片服务器。
优点:1 将图片服务和应用服务分离,缓解应用服务器的I/O负载。
2. 通过共享目录的方式来进行读写操作,可以避免多服务器之间同步相关的问题。
3. 相对来讲很灵活,也支持扩容/扩展。支持配置成独立图片服务器和域名访问,方便日后的扩展和优化。
4. 相对于更加复杂的分布式的NFS 系统,这种方式是性价比高,符合目前互联网的“短平快”的开发模式。
缺点 :1. 共享目录配置有些繁琐,
2. 会造成一定的(读写和安全)性能损失。
3. 如果图片服务器出现问题,那所有的应用都会受到影响。同时也对存储服务器的性能要求特别高。
4. 图片上传操作,还是得经过Web服务器,这对Web服务器还是有巨大的压力。
其实架构也非常简单,基本架构如下图所示:
1. 在存储服务器上建立一个共享目录(具体方式,我就不去重复了,自己百度吧,注意共享目录的文件安全)。
2. 各个应用直接通过共享目录(\\192.168.1.200),将图片上传到存储服务器上。
3. 建立一个web站点(i1.abc.com)将该共享目录通过web站点发布出去。这样其他的应用就能访问到相关图片。
所以,各应用,将文件上传到共享目录
//保存原图 //完整的地址:\\192.168.1.200\lib\2016\03\04\10\IMG\4ugvvt6m9gdu.jpg relativePath = relativeDir + fileName + imageExtension; var absolutePath = ConfigHelper.SharePath + relativePath; fileData.SaveAs(absolutePath);
上传成功后,可直接通过web 的方式访问:
http://i1.abc.com/lib/2016/03/04/10/IMG/4ugvvt6m9gdu.jpg
相关文章推荐
- 使用jenkins配置.net mvc网站进行持续集成一
- 珍藏多年的素材,灵感搜寻网站(转载)
- [转载]微服务实践(五):微服务的事件驱动数据管理
- 理解RESTful架构
- 基于第三方统计工具做的网站访问次数统计。
- 网站自动跳转中英文页面的方法
- (四)Web应用开发---系统架构图
- php 获取客户端的真实ip地址 通过第三方网站
- 深度剖析Android MVPR架构模式(一)
- Android App的运行环境及Android系统架构概览
- 实战解析Android架构设计原则
- 有趣的网站
- 从网站解析JSON异步加载到ListView事例
- 浅谈iOS中MVVM的架构设计与团队协作
- 中国移动某接口泄漏可导致访问网站就获取用户手机号(已经发现网站利用案例)
- 秒杀系统架构分析与实战
- 《魔灵保卫者》服务端架构及实现
- Hive代码组织及架构简单介绍
- 大型网站架构系列:电商网站架构案例(3)
- 大型网站架构系列:电商网站架构案例(2)