论文部分内容阅读
随着彩铃业务的成熟和发展,如何有效地存储和管理大容量的铃音数据成为了一个重要的技术问题。本文提出新增铃音服务器网元作为集中式铃音数据存储方案,利用高效的磁盘缓存算法满足了系统设计容量的要求。该方案的重点是缓存算法的设计与实现。首先,在理想环境下建立了缓存分配的数学模型,用动态规划算法给出了理想模型的最优解;为了进一步提高速度和减少空间消耗,针对理想模型的特点用贪婪算法得到了模型的近似最优解。其次,通过分析现网中实际的彩铃铃音订阅数据,为铃音流行度建立了数学模型,证明了铃音播放流行度服从Zipf分布的结论,并利用该结论对经典缓存算法LRU(Least Recently Used)和LFU(Least Frequently Used)进行了分析和验证。针对经典算法的不足和铃音服务器应用的特点,本文创新性地提出了一种新的缓存替换算法LFU-EA(LFU with Exponential Aging),该算法采用指数平滑公式作为频率老化机制,使用灵活的手段来平衡资源访问模式中的频率特性和时间特性,能够很好地与缓存周期性替换模型结合起来,适宜应用在磁盘缓存系统中。实验结果表明LFU-EA算法比经典算法的缓存命中率提高了10%左右。为了有效地实现LFU-EA算法,我们引入了受限二叉堆数据结构用于快速过滤大量铃音文件,并实现了应用双散列技术的通用散列容器,该技术从理论上有效地保证了高负载下容器的性能不会退化,适宜应用在对实时性要求很高的场合。实验证明该容器比标准容器速度更快并且占用更少的内存空间。最后,详细介绍了具体实现中的负载均衡策略,给出了应用Reactor模式和Leader/Followers模式作为软件并发架构的理由,讨论了容错机制的设计等等问题。本文提出的流行度建模技术和缓存替换算法LFU-EA对于其它的磁盘缓存系统也有良好的借鉴意义。