发明内容
本发明所要解决的技术问题是,提供一种缓解DSMP的业务压力、稳定性高的消息类应用网关对包月SP业务的鉴权方法及其系统。
本发明解决其技术问题所采用的技术方案是:提供了一种消息类应用网关对包月SP业务的鉴权方法,包括以下步骤:消息类应用网关提供本地包月信息数据库,所述本地包月信息数据库记录了SP与移动用户之间的包月签约信息;所述消息类应用网关接收来自SP的消息发送请求后,通过所述本地包月信息数据库中的包月签约信息对所述消息发送请求进行鉴权查询,并根据对应的查询结果响应所述消息发送请求。
所述消息类应用网关通过所述本地包月信息数据库中的包月签约信息对所述消息发送请求进行鉴权查询,并根据对应的查询结果响应所述消息发送请求的具体方式为:如果所述消息发送请求与所述本地包月信息数据库中的包月业务信息相符,则得到鉴权成功的查询结果,否则得到鉴权失败的查询结果,所述消息类应用网关根据所述鉴权成功或鉴权失败的查询结果分别进行相应的计费处理。
进一步地,所述本地包月信息数据库包括相互交互的物理数据库和内存数据库。
一种优选的实施方式中,所述内存数据库记录当月的包月签约信息,所述物理数据库记录当月以及相邻数月的包月签约信息,所述消息类应用网关通过所述本地包月信息数据库中的包月签约信息对所述消息发送请求进行鉴权查询的具体方式为:首先判断所述消息发送请求所对应的月份是否为当月,是,则在所述内存数据库中进行鉴权查询,否则在所述物理数据库中进行鉴权查询。
所述物理数据库通过包月信息表的形式保存每个月的包月签约信息,并通过对包月信息表的编号进行取余的方式更新所述包月签约信息。
进一步地,还包括以下在本地数据库中新增包月签约信息的过程:所述消息类应用网关接收新增包月签约信息的请求后,首先在所述内存数据库中加入新增的包月签约信息,再将所述内存数据库中新增的包月签约信息导入所述物理数据库中。
所述消息类应用网关将所述内存数据库中新增的包月签约信息导入所述物理数据库中的具体方式为:所述消息类应用网关定期将所述新增的包月签约信息同步至所述物理数据库中。
一种消息类应用网关对包月SP业务的鉴权系统,包括:鉴权控制模块、包月信息存储模块、鉴权查询模块以及鉴权响应模块;包月信息存储模块用于提供本地包月信息数据库,所述本地包月信息数据库记录了SP与移动用户之间的包月签约信息;鉴权控制模块用于接收来自SP的消息发送请求,并通知所述鉴权查询模块对所述消息发送请求进行鉴权查询;鉴权查询模块用于通过所述本地包月信息数据库中的包月签约信息对所述消息发送请求进行鉴权查询,并得到对应的查询结果;所述鉴权响应模块用于根据所述鉴权查询模块得到的查询结果响应所述消息发送请求。
所述包月信息存储模块包括内存数据库存储模块和物理数据库存储模块,所述内存数据库存储模块和物理数据库存储模块分别用于提供相互交互的内存数据库和物理数据库。
还包括新增信息处理模块,所述新增信息处理模块用于接收新增包月签约信息的请求,并将新增的包月签约信息加入所述内存数据库,最后将所述内存数据库中新增的包月签约信息导入所述物理数据库。
本发明的有益效果是,本发明通过在消息类应用网关实现了对SP业务的本地鉴权,DSMP只需对非包月SP业务进行计费处理,因此从一定程度上缓解了DSMP的业务压力,保证了包月鉴权的稳定性,从而提高了消息类增值业务的服务质量。
一种具体实施方式中,本地包月信息数据库包括相互交互的物理数据库和内存数据库,消息类应用网关优先在内存数据库中进行鉴权查询以提高查询速度,而物理数据库起备份作用,避免了内存数据库中的信息由于系统断电或其他故障而造成数据丢失,因此提高了系统的安全性。
一种优选的实施方式中,内存数据库只包含当月的包月签约信息,物理数据库记录包含当月以及相邻数月的包月签约信息,进行鉴权查询时,由于来自SP的消息发送请求携带时间信息,首先判断该消息发送请求所对应的月份是否为当月,是,则在内存数据库中进行鉴权查询,否则在物理数据库中进行鉴权查询,因此显著提高了查询效率。
进一步地,消息类应用网关可在本地包月信息数据库中插入新增的包月签约信息,消息类应用网关根据新增包月签约信息的请求,首先在内存数据库中插入新的包月信息表,在规定的时间存数据库再将新增的包月签约信息导入物理数据库中,这样能够保证对与SP最新建立包月签约关系的移动用户实现准确、及时地鉴权和收费,并且避免了直接向物理数据库导入数据而导致效率底下的问题。
具体实施方式
以下结合附图对本发明的具体实施方式进行说明,然而并不限于以下具体实施方式:
本发明通过在MMSG、SMGW、行业网关等消息类应用网关建立本地包月信息数据库的方式实现了对SP业务的本地鉴权,本地包月信息数据库记录了SP与移动用户之间的包月签约信息,当消息类应用网关接收来自SP针对某一移动用户的消息发送请求时,首先在本地包月信息数据库中进行鉴权查询,并根据对应的查询结果响应消息发送请求。本发明在消息类应用网关实现本地鉴权的功能后,DSMP只需对非包月SP业务进行计费处理,因此从一定程度上缓解了DSMP的业务压力,保证了包月鉴权的稳定性,从而提高了消息类增值业务的服务质量。
如图1为本发明的消息类应用网关对包月SP业务的鉴权方法第一种具体实施方式流程图,包括以下步骤:
步骤S100:消息类应用网关接收来自SP的消息发送请求,准备处理SP业务,例如消息类应用网关接收SP向某一移动用户发送彩信的请求。消息发送请求通常具有一定的格式,其中携带了SP的企业代码、业务代码、计费类型、时间信息(通常至少包括月份)、目的用户的手机号码等信息,还可进一步附加标识号对每个消息发送请求进行编号。
步骤S101:消息类应用网关首先判断是否需要对消息发送请求进行本地鉴权?是,则进入步骤S103,否则进入步骤S104。本步骤的一种具体实施方式为:配置台预先在消息类应用网关中配置了SP业务的各种计费类型,其中包括按条计费、包月计费等,如果步骤S100中SP提供的消息发送请求的计费类型为包月计费,则表明需要对该SP业务进行本地鉴权,否则表明该SP业务不需要进行本地鉴权。
步骤S102:仍然通过现有的DSMP对消息发送请求进行处理,消息类应用网关可将该消息发送请求发送至DSMP进行鉴权和计费处理。
步骤S103:消息类应用网关通过本地包月信息数据库中的包月签约信息对消息发送请求进行鉴权查询。本地包月信息数据库预先记录了SP与移动用户之间的一个月或多个月的包月签约信息,为了方便查询,这些信息以月份为单位进行集中存放,例如某移动用户向某个SP定制本年度三月份实行包月计费的服务后,则该移动用户与SP之间的包月签约信息存放在三月份的包月信息文件中,每个包月信息文件中存放了多张包月信息表,每个包月信息表中的包月签约信息包括SP的企业代码、服务代码、业务代码以及该移动用户(作为目的用户)的手机号码等信息。
一种具体实施方式中,本地包月信息数据库包括相互交互的物理数据库和内存数据库,消息类应用网关优先在内存数据库中进行鉴权查询以提高查询速度,而物理数据库起备份作用,避免了内存数据库中的信息由于系统断电或其他故障而造成的数据丢失,因此提高了系统的安全性。内存数据库和物理数据库中存储的包月签约信息可完全一致,例如都存储包括当月在内的数月的包月签约信息,每次系统启动时,物理数据库中的包月签约信息加载至内存数据库中以供查询。由于大多数消息发送请求对应的月份都为当月,只有在两月交替的时候才需要查询其他月份的包月鉴权信息,一种优选的实施方式中,内存数据库只包含当月的包月签约信息,物理数据库记录当月以及相邻数月的包月签约信息,进行鉴权查询时,由于来自SP的消息发送请求携带时间信息,首先判断该消息发送请求所对应的月份是否为当月,是,则在内存数据库中进行鉴权查询,否则在物理数据库中进行鉴权查询,显著提高了查询效率。
步骤S104:通过鉴权查询得到对应的查询结果。如果消息发送请求与内存数据库中的包月业务信息相符,表明该SP业务与目的用户之间在该月份具有包月签约关系,得到鉴权成功的查询结果;否则得到鉴权失败的查询结果。例如彩信网关收到SP的彩信发送请求时,如果该请求对应的月份为当月,彩信网关在内存数据库中查询到与发送请求完全相符的包月业务信息,则表明移动用户向SP定制了当月包月计费的服务,得到鉴权成功的查询结果后,彩信网关可以免费向发送该条彩信。
步骤S105:消息类应用网关响应消息发送请求,即根据鉴权成功或鉴权失败的查询结果分别进行相应的计费处理,如果鉴权成功则表明已经扣取包月费用,因此,消息类应用网关免费发送消息并不需要另外出具话单;否则需要另外出具话单。
本发明在消息类应用网关对包月SP业务实现了本地鉴权,因此缓解了现有DSMP鉴权的业务压力,避免了较多数量的SP业务在DSMP进行鉴权而造成的不稳定状况,因此相应地提高了消息类增值业务的服务质量。
图2为本发明的消息类应用网关对包月SP业务的鉴权方法第二种具体实施方式流程图,本实施方式在消息类应用网关的业务前台增加本地包月信息数据库,包括相互交互的物理数据库和内存数据库,物理数据库可通过包月信息表的形式对每个月的包月签约信息进行保存,包月信息表的份数能够整除12,每张包月信息表的月份与份数取余得到该包月信息表对应的编号,物理数据库通过对包月信息表的编号进行取余的方式更新包月签约信息,即每张包月信息表的月份与份数取余后加1得到新的包月信息表的编号。本实施方式的内存数据库记录了当月的包月签约信息,即只包含1张包月信息表,物理数据库记录了当月、当月以前两个月以及当月以后一个月的包月签约信息,即包含4张包月信息表,还可分别设置每张表的编号分别为M0、M1、M2、M3。包月信息表的编号与月份的对应关系为:月份与4进行取余得到包月信息表对应的编号,物理数据库每月定期(例如20号)对包月信息表进行整理以剔除过期数据并加入新的数据,整理时首先将月份与4取余,取得包月信息表的编号后加1(到3转为0)得到新的包月信息表的编号,一种优选的实施方式中,采用truncate方式清理,这种方式不会对表结构造成影响。
本实施方式在消息类应用网关的业务前台增加一个鉴权查询进程(例如DBPRO进程),该鉴权查询进程用于根据消息类应用网关的主业务程序的指令,通过本地包月信息数据库中的包月签约信息对消息发送请求进行鉴权查询,并将查询结果返回主业务程序进行处理。DBPRO进程可设置在本地包月信息数据库所在的服务器中,并单独分配独立的节点号,考虑到成本问题,也可以与本地包月信息数据库一起部署于消息类应用网关的操作维护服务器。每次DBPRO进程启动时,物理数据库首先将当月的包月信息表加载至内存数据库,加载数据之前先读取系统中的月份,使之与包月信息表的个数进行取余后获取需要加载的当前月的包月信息表编号,数据加载期间,可选择保护模式:即包月信息表加载过程中,如果主业务程序要求进行本地鉴权,则返回鉴权成功的信息至主业务程序避免对移动用户造成损失。每月月初的凌晨,DBPRO进程还可自动将内存表中的数据全部清空并重新从物理数据库中进行加载,清空期间仍可选择保护模式。
本实施方式包括以下步骤:
步骤S200:SP提交消息发送请求给消息类应用网关。
步骤S201:主业务程序判断是否需要本地鉴权,是则进入步骤S203,否则进入步骤S202。
步骤S202:按照现有的方式通过DSMP进行计费处理。
步骤S203:主业务程序通知DBPRO进程进行鉴权查询。
步骤S204:DBPRO进程从来自SP的消息发送请求携带的时间信息得到消息发送请求所对应的月份。
步骤S205:判断消息发送请求对应的月份是否为当月?是,则进入步骤S206,否则进入步骤S207。如果消息发送请求对应的月份与内存数据库中包月信息表的月份一致则表明消息发送请求对应的月份是当月,否则不是当月(这种情况通常发生在两月交替的时间)。
步骤S206:查询物理数据库,由于物理数据库中存储有多张包月信息表,首先将消息发送请求对应的月份与包月信息表的个数进行取余后获取对应月份的编号,再对包月签约信息进行查询。如果来自SP的消息发送请求与内存数据库中的包月业务信息相符,表明该SP业务与目的用户之间在该月份具有包月签约关系,移动用户在该月份对该条消息有权享受免费服务,DBPRO进程返回鉴权成功的查询结果,否则DBPRO进程返回鉴权失败的查询结果。
步骤S207:查询内存数据库,例如可通过Ostool程序对内存数据库的包月信息表进行查询,如果来自SP的消息发送请求与内存数据库中的包月业务信息相符,表明该SP业务与目的用户之间在当月具有包月签约关系,移动用户在当月对该条消息有权享受免费服务,DBPRO进程得到鉴权成功的查询结果,否则DBPRO进程返回鉴权失败的查询结果。
步骤S208:DBPRO进程将对应的查询结果返回主业务程序。
步骤S209:主业务程序根据得到的查询结果进行相应的计费处理,如果鉴权成功则表明已经扣取包月费用,因此,消息类应用网关免费发送消息并不需要另外出具话单;否则需要另外出具话单。
本实施方式还可实现对新增包月签约信息的处理,如果一个新的移动用户与SP签订了包月计费关系,则消息类应用网关可接受新增包月签约信息的请求后,将新增的包月签约信息添加至本地包月信息数据库中。一种实施方式中,消息类应用网关首先在内存数据库中加入新增的包月签约信息(即插入新的包月信息表),最后在规定的时间内存数据库再将新增的包月签约信息导入物理数据库中,这样能够保证对与SP最新建立包月签约关系的移动用户实现准确、及时地鉴权和收费,并且避免了直接向物理数据库导入数据而造成的效率低下的问题。
主业务程序可根据SP或者用户的请求将新增的包月签约信息添加至本地包月信息数据库中,或者主业务程序在处理某一鉴权失败的SP业务后,如果收到用户确定签约的响应,则主动通知DBPRO进程将新增的包月签约信息添加至本地包月信息数据库中,包括以下步骤:
步骤S210:判断是否根据用户响应提出新增包月签约信息的请求?是则进入步骤S212,否则进入步骤S211。
步骤S211:结束程序。
步骤S212:一般用户或者SP都会提出新增包月签约信息的请求时,对应的月份都为当月,因此本步骤将记录了新增的包月签约信息的包月信息表插入内存数据库。
步骤S213:将新增的包月签约信息导入物理数据库进行储存,该步骤具有多种实施方式,例如可在每次在内存数据库插入包月信息表时将其直接导入物理数据库,然而为了不对物理数据库的I/O造成负担,消息类应用网关可定期(例如每天的某一固定时刻)通过同步文件的形式将内存数据库中新增的包月签约信息同步至物理数据库,例如可通过Unix的crontab定时启动相应的同步脚本完成该功能。
图3为本发明的消息类应用网关对包月SP业务的鉴权系统第一种具体实施方式示意图,包括鉴权控制模块10、鉴权查询模块20、鉴权响应模块30和包月信息存储模块40。
其中,包月信息存储模块40用于提供本地包月信息数据库,该本地包月信息数据库记录了SP与移动用户之间的包月签约信息。一种具体实施方式中,包月信息存储模块40包括内存数据库存储模块41和物理数据库存储模块42,内存数据库存储模块41和物理数据库存储模块42分别用于提供相互交互的内存数据库和物理数据库,内存数据库只记录当月的包月签约信息,物理数据库记录包含当月以及相邻数月的包月签约信息,。进行鉴权查询时,如果来自SP的消息发送请求所对应的月份为当月,则在内存数据库中进行快速的鉴权查询,否则在物理数据库中进行鉴权查询,因此物理数据库起备份作用,避免了内存数据库中的数据由于断电、系统故障等问题而丢失。物理数据库存储模块42的数据库软件可使用oralce和sybase,鉴于软件价格、维护性能等因素,优先使用sybase。考虑到现网的消息类应用网关有多个业务处理机,且通常使用相同的数据库,为了不对这些数据库的性能造成影响,物理数据库在硬件上可独立于所有的业务处理机,且使用磁阵,光纤接口,以保证更快的访问和查询速度,从节约成本的角度出发,该物理数据库存储模块42还可与操作维护台的数据库共用。
鉴权控制模块10用于接收来自SP的消息发送请求,并通知鉴权查询模块20对消息发送请求进行鉴权查询,该鉴权控制模块10可用于执行消息类应用网关的主业务程序。
鉴权查询模块20用于通过包月信息存储模块40中本地包月信息数据库中的包月签约信息对消息发送请求进行鉴权查询,并得到对应的查询结果,该鉴权查询模块20可用于执行DBPRO进程。
鉴权向应模块30用于根据对应的查询结果响应消息发送请求,即根据鉴权成功或鉴权失败的查询结果分别进行相应的计费处理。为了进一步简化程序,提高执行效率,鉴权响应模块30可与鉴权控制模块10都在主业务程序中执行,如果鉴权成功则表明已经扣取包月费用,因此,主业务程序免费发送消息并不需要另外出具话单;否则主业务程序需要另外出具话单
另外,本实施方式还可包括新增信息处理模块50,用于接收新增包月签约信息的请求,并将新增的包月签约信息加入内存数据库,最后再将内存数据库中新增的包月签约信息导入物理数据库进行保存。新增信息处理模块50也可在主业务程序中执行。
图4为本发明的消息类应用网关对包月SP业务的鉴权系统第二种具体实施方式示意图。
鉴权控制模块10中的主业务程序接收来自SP的消息发送请求时,如果该消息发送请求对应的月份为当月,则与内存数据库411进行数据交互,即主业务程序通知DBPRO进程在内存数据库411中进行鉴权查询并得到查询结果;如果该消息发送请求对应的月份不是当月,则与物理数据库412进行数据交互,即主业务程序通知DBPRO进程在物理数据库412中进行鉴权查询并得到查询结果。
DBPRO进程每次启动时物理数据库412将当月的包月签约信息加载至内存数据库411中。
本实施方式的新增信息处理模块50设置在鉴权控制模块10中,当主业务程序得到新增包月签约信息的请求时,通过DBPRO进程在内存数据库411中通过插入包月信息表的方式加入新增的包月签约信息,内存数据库411定时生成同步文件,并将新增的包月签约信息导入物理数据库412中。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。