CDR表的分库,分表机制

Ø  多话单库的支持

Ø  功能描述

话单库目前借用了BMP的用户库作为存储数据库。在大容量的情况下,简单分表的机制不能满足性能的要求,目前还需要支持多库的机制,保证话单导入和查询导出的性能要求。

目前数据库中保存的信息包括话单、失败日志、Portal接入日志等。这里按照话单的处理方式进行描述,涉及到其他日志的入库和查询,采用相同的机制。

Ø  实现方案

n  物理部署方式

在多库的情况下,话单库的部署方式如下:

 

 

其中:

1、  多套CDRDB分别独立部署;

2、  每套CDRDB中独立部署一个billload数据库入库工具;

3、  独立部署一套RBI,从SER模块中获取话单;

4、  RBI根据话单文件中的序列号根据数据库的数量进行文件数量的分割,每一部分分别发送到对应的billload模块中;

5、  BIllload模块根据用户NAI生成HASH,然后根据时间因素选择对应的数据库后入库处理。

6、  BUS模块通过SQL直接访问多个CDRDB,不同的原则选择不同的访问策略;

7、  Portal、BOSS等其他模块通过SOAP/HTTP接口和BUS交互访问话单库。

 

对于话单库的部署方式:存在如下几种场景:

1)如果只有单库,默认的部署方式下,只考虑RBI、BIllload、BIllconvert工具和BMP合设,工具都为单机部署方式;

2)在容量扩展时,根据实际配置的需要,独立部署RBI、Billload、BillConvert。工具都为单机部署方式

3)在一些定制局点,RBI、BIllConvert独立部署,BMP的userdb(话单库)独立部署。其中RBI是双机部署,BillConvert为单机方式;Billload和BMPDB合设,为单机部署方式。

 

n  RBI的话单分发机制

在存在多个billload入库工具的场景下,需要RBI能够保证每个工具的处理负荷基本均衡,需要要把从SER获取的话单文件记录能够实现基本的均分。

RBI在配置传送规则时,根据获取的文件数量以及存在的billload节点数分配。例如,对于3个节点的场景分为:目录output1、目录output2、目录output3。每一个目录对应一个billload节点。RBI获取到所有的话单文件后,依次平均分配文件到每一个目录中,保持每个目录下文件的基本均衡。

RBI把每个对应目录的文件传送到对应的billload中去处理入库。在任何条件下,都要求能够修改RBI中分发的目录数量,而不对当前的文件处理产生影响。

 

n  话单的入库

Billload支持多库能力,且Billload一般和CDRDB合设。在针对一个话单记录进行库的选择的策略如下:

1、  billload支持根据时间进行入库策略的选择;其中时间信息的来源为话单记录中的“EndTime”

2、  根据不同的时间段对应不同的策略,每一个具体的策略方式为:

根据“ DEKHASH(NAI) %N”的取值分别选择对应的CDRDB节点。其中“N”为当前CDR的节点数量。

3、  Billload需要支持多个规则的配置。

 

在扩容或者减容的情况下,需要设置对应当前节点数量的入库策略,以及其对应策略的生效时间。

一般来说,策略的生效时间为话单库的分月点,例如20130701000000。

 

n  话单的查询

多话单库的情况下,直接使用平台BMP的多库访问机制,不涉及BUS的额外开发能力。

BUS在查询话单时,不支持跨月查询的场景,只能支持单月纪录的查询。查询的前提:CDRinfo在BUS和billload中的配置顺序要相同。

1)根据用户名的查询方式

首先根据用户的查询时间月份从AAA_CDRDBRule查询生效的RuleID(可能存在多个,需要根据时间选择合适的那一个),然后使用“DEKHASH(NAI) %N”算法获得对应的CDRDB节点。

其中:

l  如果在AAA_CDRDBRule中没有记录,则节点的数量使用当前BMP用户库的数量。

l  如果获取的数据库数量等1,则使用基线版本的查询能力直接执行。

l  AAA_CDRDBRule不提供界面的维护手段,保持在系统库中作为全局参数后台配置。

 

2)根据IP地的查询方式

在多库的情况下,直接同时查询多个数据库,然后根据查询的获取的多份结果按照BeginTime进行的倒叙排序。为了提升查询效率,每个查询操作需要采用一个独立的线程处理。

 

3)根据时间段的查询

移动规范中的根据时间进行上报接入日志的记录特性,直接采用多个线程在多个数据同时执行。在执行后获得每个节点上的临时文件,然后把所有的临时文件合并后作为最终的结果文件上报到网管。

 

Ø  数据分布

AAA_CDRDBRule

话单库

Ø  DFX

性能要求:

一般用户的数据库中单表的数量为:

按照每天8千万CDR计算(从山东移动参考,大约4千万话单数据)那么每个月每张表有0.8亿*30天/ 10张话单表 = 2.4亿话单/每张表

1)查询性能

在单库单表查询的条件下,在3秒以内获得响应信息;

在跨库查询时,在5秒内获得响应信息;

在多库导出文件时,则在15秒中响应并完成数据导出为文件则满足要求。

2)billload入库

同基线版本,至少6000条CDR/秒以上的并发入库能力。

Ø  子系统分解

n  BUS

支持多库情况下的按照用户名、IP地址、时间段进行CDR信息的查询、失败日志查询、Portal接入日志查询。

n  SER

NA

n  Portal

NA

n  工具

RBI支持按照随机的方式分发CDR文件。

Billload支持根据CDR中的时间信息选择对应的数据库选择策略。

n  资料

完善话单入库的调测指南、多话单库的安装指南。

 

posted on 2014-05-22 13:58  zhourui151  阅读(266)  评论(0)    收藏  举报

导航