`
- 浏览:
1180908 次
-
其实我没有专业做过图片的服务器, 只做过通用的对象存储. 简单说一下个人理解吧.做为使用最广泛, 最最基础的图床服务, 业界几乎每家大点的公司可能都有自己的解决方案.具体到某一家厂商, 对于图片存储的需求的层次 决定 图片服务系统设计的结构, 简要的分几个层次吧:初级: 还有些人在乎的中小网站.图片偏多, 需要简单的组织和管理.一般可能还是把图片存储到文件系统里面 按照目录+ 文件的组织形式. 本地 或者 NFS 的文件系统里面, 这里是我理解的一些小点:
- 不要使用中文, 空格, 特殊字符...之类的做文件名!!!
- 对于UGC网站, 不拿用户上传的图片文件名做为文件名直接存储.
- 用户的文件名会各种不规范, 容易有冲突, 另外存起来.
- 按 时间 / 用户 等业务逻辑做目录的划分.
- 更利于组织和管理, 避免冲突文件名导致覆盖(用户头像存储等Case).
- 也避免一个目录下文件过多, 导致查询性能
- 必要时可能要多级的目录.
- 避免过长的文件名.
- 避免修改文件内容
- 修改后的图片存为另一个图片
- 为缩略图做预处理
- 最好是就只用特定的几个尺寸.
- 不能满足需求的话, 可以预存大, 中, 小, 原图等几个级, 其他尺寸由邻近级去实时转换.
- 不同尺寸的文件, 而且大小之间可以相互换算.
- Eg: 图片大小命名的目录.
- 不要用连续递增的数字做文件id
- 避免图片被直接遍历爬走了
- logo 等常用图片独立存储.
- 避免文件路径的变更.
- 各处本地缓存, 引用 都会失效...
中级: 适合较大型的网站普通的文件系统已经不能很好满足需求了:
- 运维管理的考虑
- 超过单机的容易, 多机来存储导致各种图片的增减, 管理成本非常的大
- 性能的考虑
- 文件系统的开销过大
- 多次的IO和网络交互
- 成本的考虑
- 容灾的考虑
这个一般使用 通用的对象存储, 类似S3的服务, 会增加一些CDN之类的.在组织管理这一块, 虽然不再是本地的文件系统, 但是原理和想法 和 前面基本一样.高级: 适合大型的网站相对于更强调通用性和业务灵活性的S3存储服务, 图片服务的文件名一般都是专有的规则, 因为就这个单一的服务就已经足够的大, 值得去做一些专门的定制和优化.比如说:
- 存储信息直接Encode进文件名, 省去文件名到存储路径的查询.
- 更好的缓存支持, CDN的调度
- 极端热点的处理
- 冷数据的淘汰和Archive
- 专门的硬件支持 (针对图片访问特别的机器定制.)
- ...
国内做得比较好的分享应该是 章文嵩 博士的. 详见:揭秘淘宝286亿海量图片存储与处理架构-IT168 存储专区和淘宝图片存储与CDN系统国外的如Facebook的Haystack的设计.http://www.stanford.edu/class/cs240/readings/haystack.pdf和https://www.facebook.com/note.php?note_id=76191543919
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
图片服务器设计流程,借助ftp服务器实现批量图片的存取,也可以用于文件的分布式读写
图片服务器详细设计,图片服务器详细设计,图片服务器详细设计
高性能服务系统构建与实战源码一书的源码,图片服务器的源码,和原书本配置一样的代码,只为了提供更多的下载源。springboot。
本文讲述了大型网站高并发情况下图片服务器分离的分析与解决方案,并给出了各种图片服务器架构方案及他们的优缺点
对于Web服务器来说,不管是Apache、IIS还是其他容器,图片是最消耗资源的,于是我们有必要将图片与页面进行分离,这是基本上大型网站都会采用的策略,他们都有独立的图片服务器,甚至很多台图片服务器。这样的架构...
图片资源引入,三种方式,一键批量抓取,一键批量导入,一键批量下载 图片资源管理,自定义图片分类,自定义图片名称,搜索,转出 图片资源分享, 上传至服务器支持无限的自定义分类突出您的专业并与众多的设计师分享...
本系统使用FastDFS分布式文件系统作为本系统的图片服务器,需自行安装虚拟机进行配置。 一个本科毕业设计项目,基于springboot的论坛管理系统,前后端,源码+数据库 技术栈: SpringBoot+SpringSecurity+Maven+...
交图系统服务器端安装程序-图片加密,给客户看图的时候比较方便,不用担心客户收图不给钱
数掘VPS服务器广告图片设计1200x200pxPSD源码
一、课程设计内容 1 二、课程设计目的 1 三、课程设计环境 1 四、测试计划书 2 4.1 分组任务计划 2 4.2 测试计划表 2 ...5.4.1 使用UFT-15进行图片服务器黑盒测试 12 六、课设心得 21 七、课设结果报告 21
本设计源码提供了一个基于C++的多语言WEB服务器。项目包含1084个文件,主要使用C++编程语言,并包含了C、JavaScript、Java、CSS、Python、HTML和Shell。文件类型包括242个头文件、153个JavaScript脚本文件、153个GIF...
ASP.NET服务器控件高级编程 ASP.NET 服务器控件 自定义控件
C++开发基于linux的多线程个人图片浏览HTTP服务器源码+超详细注释.zipC++开发基于linux的多线程个人图片浏览HTTP服务器源码+超详细注释.zipC++开发基于linux的多线程个人图片浏览HTTP服务器源码+超详细注释.zipC++...
Linux下基于C++的轻量级Web服务器; (1)使用 线程池 + 非阻塞socket + ...(3)访问服务器数据库实现web端用户注册、登录功能,可以请求播放服务器图片和视频文件; (4)实现同步/异步日志系统,记录服务器运行状态
本系统主要从现代社会电脑化观念出发,通过对现有资料的分析、研究和整理,确定了在基于现存的WEB2.0模式下开发图片共享系统的可行性、紧迫性和必要性。在现阶段,国内基于WEB2.0的图片共享系统才刚起步,该市场还有很...
同过一个简单的小例子,演示了图片分布式存储在C# net MVC 中的使用
对于图片服务器来说IO无疑是消耗资源最为严重的,对于web应用来说需要将图片服务器做一定的分离,否则很可能因为图片服务器的IO负载导致应用崩溃。因此尤其对于大型网站和应用来说,非常有必要将图片服务器和应用...
基于Android的图片产品设计与实现
这是为餐厅点餐和酒店点餐开发的一款点餐系统,我学习过程中写的一个...3、获取网络图片设置为image预览图片 4、点餐提交,生成订单,并且可以查询到详细内容 5、实现加单换桌效果; 6、监听checkbox点击并绑定事件;
# 基于多存储平台的图片文件服务器 ## 1. 目的 面向Web的应用程序离不开各种图片文件的展示,该项目致力于解决Web程序图片存储,展示问题。 ## 2. 技术 + SpringBoot(Sping MVC + Spring Core + Spring JDBC) + ...