昵称和头像在列表的设计思路

    
idreamblue
18-05-17 1 130

在一些列表场景(帖子、回复、评论)往往会附带昵称、头像这样的属性。在模型上业务肯定和用户的这些属性分开存储的,所有要么join查询、要么冗余字段、要么从缓存里取。
第一种join在现代应用中是肯定不能忍受的,尤其是在高并发、大访问量的情况下;
第二种冗余字段会涉及到当昵称或者头像更新后,会大量更新业务表,搞不好会造成锁表
第三张从缓存里取,我理解最好从jvm里缓存热点用户的信息,如果没有再从共享缓存取,但是jvm的缓存是有大小限制的,会不会造成miss到共享缓存导致性能低下呢?
请@banq老师给分析下

banq
2018-05-18 18:51

主要依据数据量大小,如果数据量很大,可以参考Facebook之类社交网站的头像设计,也可以采用图库Neo4j。

使用缓存可以使用Redis,能够分片存储在多个服务器上。

总体设计参考CAP定理,使用BASE实现最终弱一致性,这样头像和主数据就会在加载上解耦,比如在前端通过异步方式加载等等。