论文部分内容阅读
北京谱仪III(BESIII)高能物理实验每年产生PB量级的实验数据,实验人员需要对海量数据进行处理和分析。为此,BESIII实验于2011年开始联合多个合作单位构建统一的分布式计算平台,以应对大数据量对存储资源和计算资源提出的挑战。对于大规模的网格系统,需要有效的记录和分析资源的使用情况,提高资源使用效率。网格记账系统是记录网格环境下资源使用情况的系统,对于BESIII分布式计算平台记账系统来说,它的作用不仅仅是测量和记录网格环境中各种操作的资源消耗情况,还包括对这些信息进行有效的分析和使用。本文主要对BESIII分布式计算平台记账系统的设计和实现进行了研究。主要的研究内容如下:(1)对记账系统的功能模块设计进行研究。在信息收集模块的设计上,针对传统的日志解析框架带来的记账延迟问题,提出了一种及时记账框架,实现快速记账;在存储模块的设计上,以MongoDB为基础,反范式化数据建模,采用复合片键对数据进行分片,提高系统可扩展性,并通过副本集策略提高系统可用性。(2)对统计查询的实时响应问题进行研究。对用户查询请求进行了分析,提出了一种基于动态时间窗口的数据压缩算法。该算法可以根据数据存在时间的不同对数据进行不同程度的压缩预处理,在保留必要信息的基础上,极大地压缩了数据量并减小了计算量,使统计查询的效率大大提升。(3)对记账系统进行整体实现。搭建了MongoDB集群作为系统底层存储平台;基于matplotlib设计实现了绘图类,提高用户查询结果展示的丰富性。基于runit机制实现了服务的持久化,提升系统的健壮性。最后,对系统的性能进行了比较测试。