系统设计-请教一下在类似于新浪微博这样的系统中用户头像是如何存储的?

系统设计-请教一下在类似于新浪微博这样的系统中用户头像是如何存储的?

甜柠檬 发布于 2017-07-16 字数 121 浏览 1047 回复 3

比如这样的形式:
http://tp2.sinaimg.cn/1577826897/50/5609854904/1
请问有什么规律吗?为什么要这么存储呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

灵芸 2017-09-15 3 楼

普通的fs单目录下文件太多会影响系统查找文件效率,一般约定俗成divmod(userId,256/512/1024)
这个一般是为了避免单个目录下的文件太多而做的。
例如根据用户的编码 %10000 做目录名,就表示每个目录下可以存放10000个头像

想挽留 2017-08-25 2 楼

头像存储其实跟平常的照片存储差不多,当然像头像这样的也有多种方式,一是把用户上传的图片根据所需的大小裁剪成不同大小的图片,这样的图片属于静态资源,有利于CDN缓存,当然缺点是当更新头像时需要重新裁剪图片并更新CDN缓存。这样的静态资源存储就比较简单,只要保证文件唯一,每个目录存放文件的个数不要太多,至于实方式就有很多种方式了,比如按月,按天或者文件md5前几个字符作为文件夹等等!还有一种是只有一张图片,然后根据用户访问,实时生成不同尺寸的文件,这种方式节省存储空间,维护方便,缺点是不利于缓存,而且图片是实时生成,服务器压力大。可见新浪微博的头像存储显然属于前者,至于如何存储,哪种方式,要看业务需求和应用的规模等等!

灵芸 2017-08-06 1 楼

新浪应该是采用了分布式储存,而这个可能只是URL路由吧。
不太专业,勿喷。欢迎修改。