面试题答案
一键面试缓存架构设计
- 分布式架构:采用分布式缓存集群,如 Redis Cluster 。它将数据分布在多个节点上,通过哈希槽的方式进行数据分配,提升缓存的容量和并发处理能力。例如,大型电商网站,商品信息众多,使用分布式缓存可将不同商品信息分散存储,提高整体缓存性能。
- 分层缓存:构建多级缓存,如浏览器缓存、CDN 缓存、应用服务器本地缓存、分布式缓存。以新闻网站为例,新闻内容在浏览器端缓存供用户快速浏览,CDN 缓存加速内容分发,应用服务器本地缓存减少对分布式缓存的请求,分布式缓存存储最新最全内容,多级缓存减少数据获取延迟。
数据存储结构选择
- 键值存储:Redis 常用的字符串类型,适合简单的缓存场景,如缓存用户基本信息。如存储用户登录后的昵称、头像地址等,通过用户 ID 作为键快速获取对应值。
- 哈希存储:适合存储对象,例如商品详情,以商品 ID 为键,商品的各种属性(价格、库存、描述等)作为哈希的字段和值存储,方便对商品多个属性的整体读写。
- 有序集合:适用于排行榜场景,如游戏玩家的积分排行榜,以玩家 ID 为成员,积分作为分值,能方便实现按积分排序等操作。
网络优化
- 减少网络开销:采用高效的序列化协议,如 Protocol Buffers ,相比于 JSON 序列化,其序列化后数据体积更小,传输速度更快。在微服务架构中,各服务间缓存数据交互频繁,使用这种协议可降低网络带宽占用。
- 优化网络拓扑:合理布局缓存节点,减少网络跳数。例如在数据中心内部,将缓存节点与应用服务器部署在同一机架或同一子网内,降低网络延迟。
缓存一致性协议
- 写后失效:写操作完成后,使相关缓存数据失效。如电商修改商品价格,更新数据库后,删除对应商品价格的缓存,下次读取时重新从数据库加载并更新缓存。此方法简单,但可能存在短暂的数据不一致,适用于对一致性要求不是极高的场景,如商品浏览页价格展示。
- 读写锁:读操作时加读锁,写操作时加写锁。在金融交易系统中,对账户余额缓存的读写,使用读写锁保证在写操作时无读操作干扰,确保数据一致性。
不同业务场景下重点关注的调优方向
- 高并发读场景(如秒杀活动商品信息展示)
- 缓存架构:采用分布式缓存集群和分层缓存,利用 CDN 缓存静态商品信息,应用服务器本地缓存热门商品信息,减轻分布式缓存压力。
- 数据存储结构:选用键值存储快速获取商品信息。
- 网络优化:着重减少网络开销,优化网络拓扑确保快速响应。
- 缓存一致性:可采用写后失效,因秒杀场景对读性能要求极高,短暂的数据不一致可接受。
- 读写均衡场景(如社交平台用户动态)
- 缓存架构:分布式缓存确保数据分布均匀和高可用。
- 数据存储结构:哈希存储适合存储用户动态相关多个属性。
- 网络优化:优化网络拓扑和序列化协议提升性能。
- 缓存一致性:读写锁保证用户动态数据一致性,因为用户动态对数据准确性要求较高。