图片和其他静态文件通常存储在服务器的硬盘或 SSD 上,可能直接存储在本地,或通过网络文件系统(如 NFS)访问,也可能存储在专门的静态内容服务器或 CDN(内容分发网络)上。
图片服务器
那么这种专门用于存储和提供图片及其他多媒体内容的服务器叫做图片服务器,而这些服务器通常配置有用于快速读取的优化技术,如高速缓存和特定的文件访问策略。CDN 是提高全球访问速度的一种常用方法。
处理其故障
- 使用 CDN: CDN 可以缓存全球多个位置的内容,如果原服务器挂掉,请求可以被重新定向到最近的缓存节点。
- 服务器冗余: 大型服务通常会部署多台服务器,或使用云服务来提高可靠性,确保至少有一台服务器能处理请求。
- 自动故障转移: 在多服务器配置中,可以配置负载均衡器自动检测服务器故障,并将流量转移到正常服务器。
存储设备
- 硬盘驱动器(HDD) : 传统的硬盘驱动器因其较高的容量和较低的成本而被广泛使用,适合存储大量的图片文件。
- 固态驱动器(SSD) : SSDs 提供更快的数据访问速度,对于需要频繁读取的图片,如网站的图标和常用图像,使用 SSD 可以提高访问速度。
- 网络附加存储(NAS) : 对于大规模的应用,可能会使用 NAS 设备来集中管理图片文件,便于维护和扩展存储容量。
- 对象存储: 大型应用,尤其是在云环境中,常使用对象存储(如 Amazon S3, Google Cloud Storage)来存储图片。对象存储提供了可扩展、耐用和高度可用的存储解决方案
在这里详细讲下对象存储,因为我之前做项目时有用到过这个。
对象存储是一种以非结构化格式(称为对象)存储和管理数据的技术。现代组织需要创建和分析大量非结构化数据,例如照片、视频、电子邮件、网页、传感器数据和音频文件。云对象存储系统将这些数据分布在多个物理设备上,但允许用户从单个虚拟存储库有效地访问内容。对象存储解决方案非常适合用于构建需要扩展和灵活性的云原生应用程序;您还可以使用这些解决方案导入现有数据存储以进行分析、备份或存档。
这是AWS上对于对象存储的解释,那么我们可以从这提取到几个特点,它的可拓展性较好,因为存储的对象是非结构化格式。它也没有传统的目录结构,都是通过一个urlId进行访问的,同时它会把数据复制到多个存储设备上,保证其可用性和持久性。
数据访问
- 直接文件访问: 在小型或低负载的应用中,直接从文件系统访问图片通常是可行的。
- CDN(内容分发网络) : 对于访问量大的应用,使用 CDN 可以将图片缓存于全球多个节点,用户可以从最近的节点加载图片,大幅提高速度。
- 缓存机制: 在服务器端或应用层面实施缓存策略,如使用 Redis 或 Memcached 来缓存热点图片,可以减少对存储设备的访问次数,提高响应速度。