字节跳动笔试:设计题

连接:https://www.nowcoder.com/questionTerminal/3714988e1aa84fe1897dde526100a989
来源:牛客网web

【设计题】今日头条会根据用户的浏览行为、内容偏好等信息,为每一个用户抽象出一个标签化的用户画像,用于内容推荐。用户画像的存储、高并发访问,是推荐系统的重要环节之一。如今请你给出一个用户画像存储、访问方案,设计的时候请考虑一下几个方面:后端

  1. 用户画像如何存储缓存

  2. 如何保证在线高并发、低延迟地访问服务器

  3. 机器宕机、负载均衡问题并发

  4. 若是用户增加很快,在你的方案下,该如何作扩容负载均衡

(1)将存储用户画像的数据通过哈希函数运算后获得一个key值,而后用key%服务器机器数,获得的就是该用户画像数据归属的服务器,对该数据增添,查询删除都在此机器上进行. 若是服务器变多变少时,用一致性哈希则能够解决这种问题。
负载不均衡的问题:能够引入虚拟节点技术解决,即同一机器通过不一样的哈希函数计算出多个哈希值分布在环上,节点数变多了。平衡性天然会好。分布式

1。创建用户关系映射表,用户和标签为常量,关系为映射。保存用户画像最好使用缓存,好比ememcached,同时后端要落地到DB;
2。有了内存缓存的话,访问速度天然会有提高,除此以外,还要提升缓存利用率,这样请求不会到DB去请求。
3。同时还要减小单机查询流量,将不一样用户分配到不一样的机器上,能够采用分布式,好比按照用户的地区,ID的号段进行分开,这样每一个机器的请求都是独立的,能够命中缓存,提升系统的性能。
4。**一致性哈希,**保证结点变化后用户访问的机器不变,好比以前在一号机器访问的用户仍是到一号机器。svg