面试题答案
一键面试1. 基于热度统计的TTL调整
- 热度计数:维护一个热度计数器,每当一个视频被请求播放时,相应的热度计数加1。同时记录每个视频最近一次被请求的时间。
- 热度衰减:每隔一定时间间隔(如1小时),对所有视频的热度计数进行衰减。例如,按照一定比例(如10%)减少热度计数,以反映视频热度随时间的自然下降。
- TTL设定:对于热度高且持续有请求的视频,设置较长的TTL(如数小时甚至数天)。对于热度较低且长时间未被请求的视频,逐渐缩短TTL(如几分钟到几十分钟)。例如,热度计数大于100且最近1小时内有请求的视频,TTL设为3小时;热度计数小于10且最近2小时内无请求的视频,TTL设为10分钟。
2. 缓存空间与性能权衡
- 缓存空间监控:实时监控缓存服务器的内存占用情况。当内存占用接近阈值(如80%)时,启动回收机制。
- 基于LRU的淘汰:结合最近最少使用(LRU)算法,优先淘汰长时间未被访问且热度较低的视频缓存。在选择淘汰对象时,综合考虑热度和最后访问时间,对于热度低且长时间未访问的视频,即使其TTL未到,也可提前淘汰。
- 性能开销控制:热度统计和TTL调整的操作尽量在缓存系统的后台线程中进行,避免对正常的视频请求处理造成较大影响。对于热度计数和时间记录等操作,采用高效的数据结构(如哈希表和链表结合),以降低性能开销。
3. 预测机制
- 时间周期分析:分析历史数据,找出视频热度变化的时间周期规律。例如,某些类型的视频在工作日晚上或周末可能更热门。
- 预加载与TTL调整:根据预测结果,在热度可能上升的时间段前,预加载相关视频到缓存,并适当延长其TTL。如预测到周末某类体育视频热度会上升,周五提前加载并将其TTL设为48小时,而平时TTL为12小时。这样既能提高用户体验,又能在热度未上升时合理控制缓存空间。