论文部分内容阅读
摘 要:随着4G用户数的不断增长以及未来5G的普及,更丰富的业务服务、互联网及不限量套餐的推广,话单量呈现了爆炸式的增长,系统面临的挑战也越来越大,如不能及时解决,可能导致短信提醒不及时,用户欠费风险增高、进而影响客户感知。计费系统的能力提升刻不容缓。本文从DCC消息计费、多级缓存技术、布隆算法的应用、分布式内存数据库使用等几方面来阐述如何提升计费系统的处理能力。
关键词:消息计费;缓存;布隆算法;分布式
1 移动互联网时代
从23G时代到4G时代,移动互联网的逐渐普及丰富多样的互联网应用的发展,移动网络已经成为人们日常生活中不可或缺的组成部分,计费系统从传统的语音、短信计费发展到数据流量计费时代。爆炸式增长的移动数据业务,给我们的计费系统带了全新的挑战。计费系统影响这运营商的前途和命运,是运营商的核心竞争力之一,如何提升计费系统处理能力,已经成为了各家运营商的重中之重。
2 单机模式到分布式架构
为了适应移动互联网的冲击,运营商也在向移动互联网企业学习,吸收他们的先进技术和经验。联通计费系统从原有依赖小型机AIX单机系统到向提供多server集群服务结合ZooKeeper + Mesos + Marathon的方式进行转换。与传统的IT架构相比,X86云化计费系统采用了更多的X86服务器集群代替了原有单台高端小型机的功能,通过自主研发的计费框架对集群进行管理,使全系统具备高扩展和高稳定性。集群分为应用集群、iDMDB集群、SDFS集群、DSPE集群,账务库位oracle库,清单库采用ods的hbase。其中应用分为power集群和X86集群,power集群运行计费+短信模块,X86集群运行信控+smart模块。
应用和分布式内存库按8个域拆分,分布式文件系统不分域、全国共用一个集群,计费应用8个集群,分布式内存库8个集群,DSPE一个集群。SDFS分布式文件系统的应用,也解决了大数据量存储,大数据量高并发操作的问题。
3 多级缓存技术应用
海量话单量的增长,系统面临的挑战也越来越大,其中数据库和网络侧压力成为了制约性能提升的瓶颈。鉴于内存访问的热点数据集中性,可以在内存库与应用之间做一层临时的存储器作为高速缓存,这样可以减少应用访问内存数据库次数,缓解内存数据库及网络带宽压力。联调计费系统,采用多级缓存技术,用于话单分拣、批价模块的资料多级缓存,将程序效率提升30%以上,给系统计费能力带来很大提升。说到多级缓存,简单介绍下计费系统的存储体系:寄存器(register)
·在CPU内部,非常快速,昂贵、存储热点数据
·内存数据库(DMDB)
·非常快速,扩展性一般,网络占用大
·物理数据库(ORACLE、RDS)
·容量大,速度慢,种类多,不易失。
计费系统的多级缓存技术就是协调这些存储器的使用,管理存储器的部分程序称为存储管理器,主要负责记录存储使用状况、分配、回收存储资源、数据的装入与写回。
4 布隆算法应用
由于GGSN设备的原因,为了避免重复计费,计费系统需要对话单进行排重处理,每天几百亿话单量,而传统的记录文件排重已经成为了制约计费系统能力提升的一大瓶颈,而布隆算法的应用,极大提升了排重处理的效率。布隆过滤器(Bloom Filter)是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况。如需要判断一个元素是不是在一个集合中,我们通常做法是把所有元素保存下来,然后通过比较知道它是不是在集合内,链表、树都是基于这种思路,当集合内元素个数的变大,我们需要的空间和时间都线性变大,检索速度也越来越慢。Bloom filter 采用的是哈希函数的方法,将一个元素映射到一个 m 长度的阵列上的一个点,当这个点是 1 时,那么这个元素在集合内,反之则不在集合内。这个方法的缺点就是当检测的元素很多的时候可能有冲突,解决方法就是使用 k 个哈希 函数对应 k 个点,如果所有点都是 1 的话,那么元素在集合内,如果有 0 的话,元素则不在集合内。布隆算法+Redis+Hbase的组合使用解决了布隆算法不使用‘零错误’和计费系统必须‘零误差’的矛盾。
5 消息计费
当前数据业务后付费计费模式下,由于网元文件交互时间周期较长,在用户感知、系统运营等多个方面存在不足之处。话单计费、用户使用量提醒时延大:离线话单计费,计费周期15分钟左右;用户使用量提醒延迟大,客户体验差;信用控制不能发送实时控制消息,产品支撑服务能力降低;多系统运维复杂度高:产品、余额分别管理;双通道模式造成运营和保障技术难度大;两套不一致,造成投诉比较多。
在传统計费系统基础上,融合消息计费功能,同时支持消息计费和话单文件计费两种模式。通过消息计费,缩短计费周期,提高信控、短信提醒实时性。
实现消息计费,计费周期低于1分钟,实时对用户的使用量提醒,提升客户感知;实时进行信用控制,增强产品支撑服务能力。
在传统计费系统基础上,升级支撑数据业务消息计费功能:
1.直接使用消息作为最终计费依据;
2.采取总部与省分两级部署模式;
3.融合离线计费与在线计费能力;
MDS核心功能,提供“文件”操作接口,外部应用采取文件操作方式进行对数据的访问。屏蔽底层组件及数据异常造成的特殊处理。适用于文件操作类应用程序。
提供 “消息传递”操作接口,外部应用通过该API进行对“消息”的读/写。屏蔽底层组件及数据异常造成的特殊处理。适用于“消息传递”类WEB应用。
为了适配“文件”操作,提供基于命令行操作的工具给开发人员。便于对消息的查看、写入、删除等处理,提高开发的便捷性。
提供WEB端管理界面,实现对集群节点的管理。同时,支撑WEB端消息查看、写入、删除等操作。直观方便的效果,方便运维团队使用。
目前还提供多种辅助工具,例如Data archiving(数据归档),数据及时从消息平台归档到本地文件系统(分布式文件系统)便于稽核等。
底层采用Zookeeper+ Kafka+ Redis+ Json等开源组件。
6 结束语
本文介绍的计费系统能力提升策略,结合了当前表热门的互联网云化分布式架构、常用的开源组件KAFKA、REDIS、ZOOKEEPER等,实现了计费能力的提升,最大可支撑4亿出账用户。本文的多级缓存技术、分布式架构、布隆算法应用等也适用于其他大型数据处理系统。
参考文献
[1]冯登国, 张敏, 张妍, 等.云计算安全研究[J].软件学报, 2011, 22(1): 71-83.
[2]陈康,郑纬民.云计算: 系统实例与研究现状[J].软件学报, 2009, 20(5): 1337-1348.
关键词:消息计费;缓存;布隆算法;分布式
1 移动互联网时代
从23G时代到4G时代,移动互联网的逐渐普及丰富多样的互联网应用的发展,移动网络已经成为人们日常生活中不可或缺的组成部分,计费系统从传统的语音、短信计费发展到数据流量计费时代。爆炸式增长的移动数据业务,给我们的计费系统带了全新的挑战。计费系统影响这运营商的前途和命运,是运营商的核心竞争力之一,如何提升计费系统处理能力,已经成为了各家运营商的重中之重。
2 单机模式到分布式架构
为了适应移动互联网的冲击,运营商也在向移动互联网企业学习,吸收他们的先进技术和经验。联通计费系统从原有依赖小型机AIX单机系统到向提供多server集群服务结合ZooKeeper + Mesos + Marathon的方式进行转换。与传统的IT架构相比,X86云化计费系统采用了更多的X86服务器集群代替了原有单台高端小型机的功能,通过自主研发的计费框架对集群进行管理,使全系统具备高扩展和高稳定性。集群分为应用集群、iDMDB集群、SDFS集群、DSPE集群,账务库位oracle库,清单库采用ods的hbase。其中应用分为power集群和X86集群,power集群运行计费+短信模块,X86集群运行信控+smart模块。
应用和分布式内存库按8个域拆分,分布式文件系统不分域、全国共用一个集群,计费应用8个集群,分布式内存库8个集群,DSPE一个集群。SDFS分布式文件系统的应用,也解决了大数据量存储,大数据量高并发操作的问题。
3 多级缓存技术应用
海量话单量的增长,系统面临的挑战也越来越大,其中数据库和网络侧压力成为了制约性能提升的瓶颈。鉴于内存访问的热点数据集中性,可以在内存库与应用之间做一层临时的存储器作为高速缓存,这样可以减少应用访问内存数据库次数,缓解内存数据库及网络带宽压力。联调计费系统,采用多级缓存技术,用于话单分拣、批价模块的资料多级缓存,将程序效率提升30%以上,给系统计费能力带来很大提升。说到多级缓存,简单介绍下计费系统的存储体系:寄存器(register)
·在CPU内部,非常快速,昂贵、存储热点数据
·内存数据库(DMDB)
·非常快速,扩展性一般,网络占用大
·物理数据库(ORACLE、RDS)
·容量大,速度慢,种类多,不易失。
计费系统的多级缓存技术就是协调这些存储器的使用,管理存储器的部分程序称为存储管理器,主要负责记录存储使用状况、分配、回收存储资源、数据的装入与写回。
4 布隆算法应用
由于GGSN设备的原因,为了避免重复计费,计费系统需要对话单进行排重处理,每天几百亿话单量,而传统的记录文件排重已经成为了制约计费系统能力提升的一大瓶颈,而布隆算法的应用,极大提升了排重处理的效率。布隆过滤器(Bloom Filter)是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。如果检测结果为是,该元素不一定在集合中;但如果检测结果为否,该元素一定不在集合中。因此Bloom filter具有100%的召回率。这样每个检测请求返回有“在集合内(可能错误)”和“不在集合内(绝对不在集合内)”两种情况。如需要判断一个元素是不是在一个集合中,我们通常做法是把所有元素保存下来,然后通过比较知道它是不是在集合内,链表、树都是基于这种思路,当集合内元素个数的变大,我们需要的空间和时间都线性变大,检索速度也越来越慢。Bloom filter 采用的是哈希函数的方法,将一个元素映射到一个 m 长度的阵列上的一个点,当这个点是 1 时,那么这个元素在集合内,反之则不在集合内。这个方法的缺点就是当检测的元素很多的时候可能有冲突,解决方法就是使用 k 个哈希 函数对应 k 个点,如果所有点都是 1 的话,那么元素在集合内,如果有 0 的话,元素则不在集合内。布隆算法+Redis+Hbase的组合使用解决了布隆算法不使用‘零错误’和计费系统必须‘零误差’的矛盾。
5 消息计费
当前数据业务后付费计费模式下,由于网元文件交互时间周期较长,在用户感知、系统运营等多个方面存在不足之处。话单计费、用户使用量提醒时延大:离线话单计费,计费周期15分钟左右;用户使用量提醒延迟大,客户体验差;信用控制不能发送实时控制消息,产品支撑服务能力降低;多系统运维复杂度高:产品、余额分别管理;双通道模式造成运营和保障技术难度大;两套不一致,造成投诉比较多。
在传统計费系统基础上,融合消息计费功能,同时支持消息计费和话单文件计费两种模式。通过消息计费,缩短计费周期,提高信控、短信提醒实时性。
实现消息计费,计费周期低于1分钟,实时对用户的使用量提醒,提升客户感知;实时进行信用控制,增强产品支撑服务能力。
在传统计费系统基础上,升级支撑数据业务消息计费功能:
1.直接使用消息作为最终计费依据;
2.采取总部与省分两级部署模式;
3.融合离线计费与在线计费能力;
MDS核心功能,提供“文件”操作接口,外部应用采取文件操作方式进行对数据的访问。屏蔽底层组件及数据异常造成的特殊处理。适用于文件操作类应用程序。
提供 “消息传递”操作接口,外部应用通过该API进行对“消息”的读/写。屏蔽底层组件及数据异常造成的特殊处理。适用于“消息传递”类WEB应用。
为了适配“文件”操作,提供基于命令行操作的工具给开发人员。便于对消息的查看、写入、删除等处理,提高开发的便捷性。
提供WEB端管理界面,实现对集群节点的管理。同时,支撑WEB端消息查看、写入、删除等操作。直观方便的效果,方便运维团队使用。
目前还提供多种辅助工具,例如Data archiving(数据归档),数据及时从消息平台归档到本地文件系统(分布式文件系统)便于稽核等。
底层采用Zookeeper+ Kafka+ Redis+ Json等开源组件。
6 结束语
本文介绍的计费系统能力提升策略,结合了当前表热门的互联网云化分布式架构、常用的开源组件KAFKA、REDIS、ZOOKEEPER等,实现了计费能力的提升,最大可支撑4亿出账用户。本文的多级缓存技术、分布式架构、布隆算法应用等也适用于其他大型数据处理系统。
参考文献
[1]冯登国, 张敏, 张妍, 等.云计算安全研究[J].软件学报, 2011, 22(1): 71-83.
[2]陈康,郑纬民.云计算: 系统实例与研究现状[J].软件学报, 2009, 20(5): 1337-1348.