特约撰稿人 | 陈永华
运营商如果想实现计费的全国集中,首先需要解决的问题是实现计费数据的云存储和云计算。
目前,计费数据大多采用省集中存储、数据库表结构的存储模式,这种简单的表数据存储和存放方式给大用户量和大话单量数据的插入、查询和更新操作带来了巨大的系统开销,应用系统的性能瓶颈往往表现在数据库操作的性能瓶颈上。
根据当下电信业数据集中化的主流发展趋势,运营商如果想实现计费的全国集中,首先需要解决的问题是计费数据的云存储和云计算问题,否则的话,则只有具备一个巨型计算机才能完成如此庞大的数据存储和计算任务,换句话说,如果不解决计费数据的云存储问题,全国集中化就是不可实现的。
对于如何解决大量的计费数据集中存储问题?笔者认为,首先通过分布式云数据存储实现分布式计算,把负载分摊到有能力承载的主机上并进行分布式运算,实现数据云化,同时需要对计费数据进行多个维度的分类,实现数据分布式存储和计算。
笔者将通过四个部分来论述如何将计费数据进行分割实现云存储和云计算:第一,介绍计费数据分割的理论基础和基本原理;第二,如何部署分割后的计费数据;第三,讲述分布式数据对象的存取方法;第四,分布式数据如何实现集中式的统计查询。
计费系统从最初的本地网已经发展到了如今的省集中,并且还有了全国集中的发展趋势。但是,在绝大多数情况下,客户之间都是彼此独立且其关联度也很薄弱,客户之间的关联可以在独立客户基础之上进行组群关联。比如从早期的专业计费系统的竖井结构、烟囱式的建设模式看,各个专业计费系统之间都是独立的,并且业务间也存在独立性。
对此,我们将计费数据按照客户维度、时间维度和业务维度这三大维度进行分类,并根据数据的分类进行数据的分布和分割。
按客户维度分布
将计费数据根据客户地域进行分布式存储,客户组群可大可小且具有伸缩性,通过全局逻辑客户视图和实际客户库之间的映射关系,将全局逻辑客户分布到区域组群客户库中,实现系统处理上的全局统一客户视图——存储层实现分布式存储,运算层分布式运算。全局数据操作对象定位器实现分布式客户对象的注册、定位和存取功能。
按时间维度分布
区域内客户组群的计费数据还可以按照时间周期进行分布,可分为当前帐期、上一个帐期、3个月内帐期、半年内帐期、一年内帐期和一年外帐期等阶段。不同阶段的数据、计算的频率、访问的次数都不同,导致了存储方式和运算方式的不同,这其中“当前帐期”数据运算量最大,访问频率最高,因此需要在内存中进行运算,且还需要对数据近一步分开,以降低数据集中度。
按业务维度分布
单个客户对象数据还可以再分为主客户数据、支付数据、统计数据和业务数据,业务数据还可以根据业务种类分成客户业务1数据,直至客户业务N数据,这些数据都可以分布在不同的主机上分布计算。业务模版数据作为公共的基础数据可以单独主机进行参数配置和存储。
图1 全局数据操作对象定位器设计示意图
全局逻辑客户数据按照客户维度、时间维度和业务维度三大维度进行数据切割,并分布在不同的主机上,因此不同的主机存储和内存中分布着不同的数据对象。
通过设计全局数据操作对象定位器定位和查找分布在不同主机上的数据对象,可以形成一个全局的客户数据视图展现给上层应用程序,实现分布式云存储和统一的数据运算(全局数据操作对象定位器设计示意图如图1)。
以上设计的系统是针对单个客户的计算,如果遇到需要对数据进行统计查询的情况时,就将涉及到对所有客户的扫描工作。
这种运算在分布式数据情况下,需要对各个子数据块产生的统计结果进行三层累积,分别经过业务层次累积、时间层次累积和客户区域层次累积,以产生最终的统计结果(统计查询原理示意图如图2)。
综上所述,我们根据客户、时间和业务等类别进行三维数据分割,实现了数据分布式云存储和计算,以期降低硬件投资成本,提高计费运算的速度。需要说明的是,笔者所描述的是抽象的系统级概要设计视图,许多设计和技术实现细节还需要进一步完善和补充,希望通过本文与业界专业人士共同研究和探讨计费数据云存储方法,如有不妥之处,请望批评指证。
图2 统计查询原理示意图