系统优化问题

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

用户画像如何存储
如何保证在线高并发、低延迟的访问
机器宕机、负载均衡问题
如果用户增长很快,在你的方案下,该如何扩容

解决方案:
一、建立用户关系表,用户id对应相应的偏好标签;用redis作为缓存数据库,对高并发能够起到比较好的缓冲效果,同时做redis集群配置,配置方式如下:
在当前路径如/usr/local/ 下新建cluster文件夹,并设置多个子文件夹(比如),命名为7031、7032 … 7036
在配置修改对应的conf文件
主要修改内容有
ip 服务器地址
port 端口
dir 数据存放路径
cluster-enable yes 设置集群启动方式
cluster-config-file 设置节点配置文件
cluster-node-timeout 节点超时时间
deaomonize yes 设置后台启动
appendonly yes 设置持久化方式默认的为rdb
集群启动方式可以通过shell脚本方式实现
为避免在机器宕机时发生数据丢失可以采用aof的持久化方式,将数据读写操作提取存入临时文件,同时相应的数据提取到后端DB中。
通过分布式集群方式减少单击流量,将用户分配在多个节点上。

二、通过nginx设置多个备用服务器节点,当服务器异常挂掉的时候,备用服务器可以顶上,用来解决负载均衡
nginx还可以实现反向代理(隐藏服务器)、正向代理(隐藏客户端)、负载均衡、静态资源服务器。

三、用户增长的快,可以通过增加服务器数量,扩大redis集群来解决,同时通过一致性哈希,确保新增节点和节点失效时候仍然能够对外提供良好的服务。

你可能感兴趣的:(java)