先上图
总体来说CacheServer比较简单,框架,逻辑都很清晰。
1、网络框架用现成的,从CDN服务器搬过来,根据使用场景简单调整一下适配特性。例如:session超时时间,回收策略等
2、Res Map 一个地址影射结构,比如:/epgs/...... /live/..... 分别影射的目前服务器地址,及相关属性,例如生命周期等等。(加了子目录结构的细分识别)
3、Res Download 一个HTTP Client 负责接收来自Res Mgr发送过来的资源下载请求,然后下载数据,返回下载结果。
4、Res Mgr 整个服务器比较关键的模块,管理器本身管理几个数据结构。
5、其他的标准模块及内部管理模块
用户发送资源请求 -> 如果有数据,直接返回结果。
用户发送资源请求 -> 没有数据 -> 找Res Map 拿到最终地址 -> 交给Res Download负责下载 -> 下载成功或者失败,返回即可。
Res Mgr 定时检查自身管理的资源状态,例如:超时过期的丢弃、长时间没有被访问的存文件等。
服务器的Coding时间大概用了一周左右
目前服务器已经部署测试,总体效果不错,从性能及负载来讲一台顶原来十台。(应用服务器是JAVA的,这个C++写的)
终端响应速度提升,原来直接面对终端的后台服务器压力全面释放,并发数直线下降,后台管理也简化了。
2015-03-30
资源管理做了一些优化,并修复了几个BUG
资源根据数据特性分类:
1、快速型:生命周期短,更新时间快 -> 每次检查全部遍历,间隔时间较短,一直存放在内存中。
2、普通型:通用类型 -> 每次检查分组分批次遍历,间隔时间适中,满足条件以后存入懒惰型结构。
3、懒惰型:生命周期很长,近期又没有被访问,存储于文件中 -> 每次分状态遍历,间隔时间较长。
并发能力实际测试数据:15000 (没到极限)