APP下载

基于分布式内存的话单预处理设计与实现

2022-11-25李建林武小波

现代计算机 2022年17期
关键词:预处理进程内存

李建林,武小波

(1.山西应用科技学院信息工程学院,太原 030006;2.中国电信山西分公司,太原 030006)

0 引言

运营商系统中,话单是用户移动终端的使用记录,通过对话单的处理,实现最终的收费。当前电信业务主要包括语音、短信、数据、增值等,各类话单的处理均是通过一系列的预处理程序将格式不同的话单文件,转换成统一的标准话单格式后,传给相应的模块进行后续的计费处理。随着电信业务的不断增加和用户数量越来越大,各种电信业务话单也越来越多。目前大多数话单处理基于读取物理库的表数据,将读出的数据放在缓存中,利用对缓存的高效交互实现预处理,如图1所示。但是,物理数据库使用磁盘进行数据存储,数据读写缓慢,即使通过缓存进行交互,效率依然不足,已经难以满足运营商系统对话单处理的及时性要求。

本文提供了一种快速进行话单预处理的方法,通过使用PC服务器,搭建服务器集群环境,在集群的内存上部署分布式关系型数据库[1],将预处理的信息存放在分布式内存数据库中,应用程序直接读取内存库数据,取消传统物理库加缓存机制,达到高效进行话单预处理的能力。

1 分布式内存数据库

1.1 传统数据库

话单预处理时,需要根据配置信息逐一进行话单字段的解析。传统运营商处理话单的信息存放在集中搭建的物理数据库上,由数据库主机和磁盘阵列组成,数据库主机安装数据库管理软件[2],数据信息统一存放在磁盘阵列上,数据库主机通过内部网络访问磁盘阵列数据。尽管当前已经出现了高性能的固态硬盘硬件,但是因为数据通过网络传输,导致存在海量数据读写性能瓶颈、数据灾备恢复时间长等问题,特别是数据量达到TB之后,磁盘读写的频率加快,造成网络I/O吞吐性能下降,严重影响处理效率。

随着运营商对外服务质量要求的提升,集中式磁阵数据库向分布式内存数据库发展成为趋势。采用分布式内存数据库架构,可以满足时间短、多进程、高并发的话单处理要求,相较在物理库进行数据交互处理的传统方法[3],可以大幅缩短话单处理时间。

1.2 分布式内存数据库

内存数据库是利用内存将使用的数据信息持久化,抛弃了传统数据库将索引信息、管理信息放在磁盘的方式,是在内存中建立数据存储方式,将内存视为一个数据存放的资源,根据一定的规则在内存中搭建关系型数据结构,其索引结构、数据架构重新设计,特点是存取快,无I/O读写瓶颈。分布式内存数据库是基于内存数据库技术,基于一定的存储规则,将数据放在多个集群或结点进行存取的分布式关系型数据库系统[4]。

通常分布式数据库系统将同一应用和所需数据存放在一个集群中,应用直接读取服务器内存中的数据,取消了传统通过网络读取磁盘阵列数据的方式,访问性能得到倍数提高。

2 分布式内存话单处理设计

根据运营商业务的特点,将不同业务话单的处理程序分布式部署,所用的预处理数据进行分布式内存存储,加载的数据量不受限制,虽强部署在网络的多个节点上,但是对外依然提供统一的访问接口。改变传统将预处理信息置于物理库,处理时存放缓存读取的过程,直接将预处理的解析信息置于分布式内存数据库,利用分布式内存数据库处理速度快、并行处理的优势,直接读取内存数据,提升数据处理速度[5]。

2.1 架构设计

业务使用后的话单按照一定的格式生成相关的文件,运营商的业务处理系统按照一定的逻辑,将话单文件采集到对应服务器的预处理入口[6]。预处理程序根据规则进行话单处理,处理规则为:S={D,H,A},其中D是业务类型,话单分配到相关目录后,预处理程序根据业务类型,读取内存中业务的相关配置,对话单进行逐条解析,解析后将话单文件预分配到不同处理目录;H是号码的归属,预处理程序再对目录话单中的号码进行解析,根据号码的前7位数字,直接读取内存中号码的归属地,根据归属地进行话单文件的预分配,将完成解析的数据挪到相应的处理目录中;A是后续流程的处理目录,预处理程序将话单全部处理完成后,读取内存中的信息表,将话单文件根据规则进行分割,传输到后续流程的处理目录。至此整个话单的预处理过程结束,话单数据的处理只在服务器的内存和文件目录中流转。

2.2 架构优点

分布式内存数据库利用可靠网络传输技术,将分散部署在计算机网络各个结点的内存库数据,逻辑上组合成属于同一个系统的数据集合,整个架构剔除了传统数据库从物理磁盘到缓存的转化过程,直接访问内存中的关系型数据库,利用内存进行快速的交互,避免了峰值情况下磁盘I/O读写的瓶颈[7]。同时,集群化的部署,一份数据多个副本,保护了数据的安全,避免数据异常情况下无法使用。

利用分布式内存数据库技术,优化预处理程序处理不同业务话单解析逻辑,此方法已经充分考虑多类型、多数量同时间段处理的请求,在分布式内存库处理时,支持多业务的并发处理,处理进程可以根据资源的使用情况动态调整,也可以动态进行处理节点的调整[8]。实际处理过程中,单个分布式节点集群预先的处理进程为10个,统一的调度程序会实时判断话单量和进程处理队列,如果话单量超过日常的两倍或者进程队列等待数量超过20,调度程序会自动增加预处理进程,通过和内存的快速交互对增加的话单进行高效处理。如果话单量恢复到日常水平或者进程队列等待数量低于20,调度程序会将后台处理进程缩减到预设的10,这样可以释放服务器资源。

3 实验分析

以某运营商一个数据业务话单处理为例,数据业务的话单记录在四个网元产生。在分布式内存库架构未部署时,数据业务话单文件是10分钟产生一个,一个文件中的话单记录条数在15万条左右,使用两台HP小型机进行处理。两台小型机分别对应采集两个网元的话单,一个文件分配在一个固定的预处理进程处理,因为配置文件存放在物理数据库,每次进行话单文件处理时,均需要从物理库缓存配置信息,一个话单文件处理的时间平均5分钟,且无法根据话单数量和业务增长情况动态调整处理进程,只能通过短信提醒等方式进行监控,如果未及时发现话单处理积压,将严重影响后续流程的处理,会导致用户使用记录查询的不及时。

采用分布式内存数据库部署后,在预处理程序中首先根据话单文件头的业务类型小类进行一次处理分配,分配到不同的分布式节点,各个节点读取到话单文件后,直接分配到对应处理进程的队列,处理队列直接读取内存库配置,对话单进行规整。经过分析,同样15万条记录的一个话单文件的处理时间缩短到了1分钟内,达到了秒级的处理能力。同时,因为分布式处理效率的提升,在业务网元新增的情况下,预处理程序根据采集到的话单数量,动态调整处理进程,网元生成话单的时间缩短到2分钟生成一个15万条记录的话单文件,预处理程序依然能在1分钟内完成处理,整个处理效率提升了5倍。

4 结语

本文探索了如何充分利用费用低廉的PC硬件,解决运营商业务支撑系统预处理批量话单效率低的问题。利用分布式内存库快速部署、快速计算的特性,根据运营商通信业务的特点,使用一定的处理规则,将预处理的配置信息直接存放在内存中,提高了预处理解析批量话单的效率,提升了运营商对外服务的感知。

当然此设计也存在风险,如分布内存数据在硬件资源故障时数据会丢失,但是分布式内存数据库处理技术的继续优化,增加并行处理模块,增加数据异地备份等方式,终会让系统更高效、方便、安全地运行。

猜你喜欢

预处理进程内存
KR预处理工艺参数对脱硫剂分散行为的影响
求解奇异线性系统的右预处理MINRES 方法
粉末预处理对钨坩埚应用性能的影响
污泥预处理及其在硅酸盐制品中的运用
债券市场对外开放的进程与展望
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
快速杀掉顽固进程
中外民主法制进程专题复习
内存搭配DDR4、DDR3L还是DDR3?