什么是图片服务器
图片服务器,顾名思义就是专门用于处理图片的服务器,向外提供图片的上传,下载,图片展示等服务
为什么我们要使用专门的服务器处理图片
- 图片的数据量比文字展示高得多,图片的上传下载展示一系列操作都是要加载的内存中去,图片还需要存储在硬盘中,如果怕不与主服务器分离,会给主服务器造成非常大内存压力和存储压力
- 图片服务是一种很常见的服务,许多模块的服务中都需要用到图片,将图片服务部署到单独的服务器上,可以让图片服务与某一个服务解耦,被所有我们开发的服务共享
- 图片服务器使用独立的域名,可以让CDN分流加速的效果更加显著,降低用户访问图片的延迟
常见的图片服务器
云服务厂商提供的图片服务器
阿里云oss、腾讯云cos、华为云obs,功能大同小异,我们以最完善,使用最多的阿里云oss为例
阿里云的oss对象存储
阿里云的OSS是目前使用广泛的一种服务,不仅可以用来存储图片,视频,音频,日志等都可以存储(半结构化和全结构化的数据)
特点
可靠性和可用性高
(几乎不会出现无法下载,无法上传,无法查看,文件损坏的问题)
数据迁移方便,api接口文档完善,方便二次开发存储类型多样化,生命周期管理机制优秀
自动删除无用的图片,或者自动转换为低成本的存储类型
支持分片上传等多种上传方式
剩下的还有包括冗余存储,跨区域传送文件,数据加密,历史版本控制(防止误删)等优良特点
可以这么说,阿里云OSS几乎是一个图片服务器的终极形态,满足了大部分图片服务器的需求
只有一个缺点:贵(按照流量计费,自动扣款)
开源的图片服务器
FastDFS
fastDFS的java客户端
分别有8.9k和1.6k的星星
我们可以看到,fastDFS为了极致的性能,基本使用C语言完成
中文简介:
FastDFS是一个开源的高性能分布式文件系统。它的主要 功能包括:文件存储、文件同步和文件访问(文件上传 和文件下载),它可以解决高容量和负载均衡问题 问题。FastDFS应满足其服务的网站的要求 在照片共享网站和视频共享网站等文件上。
FastDFS 有两个角色:跟踪器和存储。跟踪器负责 文件访问的计划和负载平衡。存储存储文件,它是 功能是文件管理,包括:文件存储、文件同步、提供文件 访问接口。它还管理元数据,这些元数据是表示的属性 作为文件的键值对。例如:width=1024,键为“width”且 值为“1024”。
跟踪器和存储包含一个或多个服务器。跟踪器中的服务器 或者,可以随时将存储集群添加到集群中或从集群中删除,而无需 影响在线服务。跟踪器群集中的服务器是点对点的。
按文件卷/组组织的存储服务器,以获得高容量。 存储系统包含一个或多个卷,其文件在 这些卷。整个存储系统的容量等于所有存储系统的总和 卷的容量。一个文件卷包含一个或多个存储服务器,其文件 在这些服务器中是相同的。文件卷中的服务器相互备份, 所有这些服务器都是负载平衡的。将存储服务器添加到 卷,此卷中已存在的文件将复制到此新服务器 自动,当此复制完成时,系统将切换此服务器 在线提供存储服务。
当整个存储容量不足时,可以添加一个或多个 卷以扩展存储容量。为此,您需要添加一个或 更多存储服务器。
文件的标识由两部分组成:卷名和 文件名。
客户端测试代码使用客户端库请参考目录:client/test。
更多FastDFS相关文章,请订阅微信/微信公众号 (中文):fastdfs
FastDFS是一种轻量级的对象存储解决方案。如果你需要一个普通的分布式 数据库、K8s和虚拟机(如KVM)的文件系统,你可以了解实现强数据一致性的FastCFS 和高性能。
图片服务器面临的三大问题:
大流量,高并发,海量存储
fastDFS是分布式系统,并且做了负载均衡,天然就可以解决这三大问题
不过fastDFS不会对文件进行分块处理,所以只适用于一些小型的文管理,比如图片,小音频和小视频
图片服务器的要求
功能要求:图片上传,图片下载,图片访问
速度要求:不能加载过慢,所以可以使用分片上传机制
安全要求:隐私图片传输过程加密,用户上传病毒文件校验等
并发和存储要求:图片不能太大,图片上传并发不能太高,否则会OOM(负载均衡等)