IM 即时通讯开发如何设计图片文件的服务端存储架构

本文探讨了IM系统中图片服务端存储架构的设计,从单机时代的集中式存储到集群时代的实时同步方案。文章指出,现代IM系统通常通过HTTP短连接从云端拉取图片,以适应移动网络环境。在单机架构中,图片存储直接在网站目录下,存在扩容和备份难题。而集群时代,使用虚拟目录和外部存储,但多服务器间文件同步成为挑战。Rsync等工具用于定时同步,但高并发场景下效率和实时性受影响。建议使用独立的图片服务器和域名以减轻Web服务器压力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个完善的 IM 系统中通常充斥着大量的图片内容,包括:用户头像、图片消息、相册、图片表情等等,那么在做服务端架构设计时该如何存储这些图片呢?

 

本文分享的是典型 Web 应用中大量图片的服务端存储加构的演进过程,但基本的技术原理和架构思路对于 IM 系统而言同样适用,所以在阅读时可以根据自已 IM 的实际架构情况,酌情吸取适合您的内容即可。文中部分观点可作抛砖引玉之用,可能并非最佳实践,请勿迷信之。

实际上:旧式的 PC 端 IM 中,诸如图片消息这种业务形态,可能是通过长连接直接推送过去(所谓的实时图片传输嘛),这种情况理论上是不需要服务端存储的。但现今的主流移动端 IM,基于移动网络抖动大、 不稳定的特性和随时随地社交分享的现实,已很少使用实时传输这种技术手段。现在主流 IM 都是本文所述的这种:通过 Http 短连接从云(也就是服务端)“拉取”,这种方式的好处是:随时随地分享、对网络稳定性要求低(只要上传者一次上传,服务端可长时间存储,下一个阅读者通过 URL 按需随读随取即可,再次分享时只要分享 URL 而无需再次完整传输整个图片)。

以此类推:IM 系统中,实际上还存在其它类似于图片的小文件存储需求,比如:语音留言消息中的 AMR 短音频文件(有些 IM 中为了音质可能使用的是 AAC 音频格式,比如易信)、短视频功能中的小视频文件等,这些文件的存储和使用跟图片文件基本类似,所以考虑到通用性,如果能把这些小文件存储也纳入到图片的存储架构中,对于整体系统架构来说(尤其存储部分)就显的更通用。所以本文中虽然以图片存储为切入点,但您实际上完全可以套用到基它小文件的存储上哦。

单机时代的图片服务器架构(集中式)

初创时期由于时间紧迫,开发人员水平很有限。

所以通常就直接在 website 文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值