发明内容
本发明要解决的问题是提供一种处理在线业务日志的计费服务器及方法,可减少对RADIUS服务器的访问,提高日志消息处理效率。
本发明提供一种处理在线业务日志的方法,包括:
计费服务器存储已处理用户的用户号,当所述计费服务器收到防火墙日志消息后查询该用户的用户号,根据所述用户号及防火墙日志消息生成话单消息。
进一步地,所述计费服务器记录已处理用户的用户号是指,所述计费服务器建立并存储用户IP与用户号的对应关系;
所述收到防火墙日志消息后查询该用户的用户号是指,计费服务器根据用户IP查询用户IP与用户号的对应关系获知所述用户的用户号。
进一步地,所述计费服务器为防火墙日志消息分配一话单标识,若查询用户号失败则存储解析的话单消息结构体,并向RADIUS服务器发送查询消息以查询用户号;所述查询消息中携带用户IP和所述话单标识。
进一步地,所述计费服务器收到RADIUS服务器返回的应答消息后,若查询成功则根据应答消息中的话单标识读取存储的话单消息结构体,并将响应消息中的用户号连同所述话单消息结构体一起生成话单消息;
若查询失败则根据应答消息中的话单标识读取存储的话单消息结构体,并将用户号置为0后连同所述话单消息结构体一起生成话单消息。
进一步地,所述计费服务器是在收到RADIUS服务器返回的查询成功的应答消息后建立并存储用户IP与用户号的对应关系的。
进一步地,所述计费服务器若收到RADIUS服务器发来的用户下线通知,根据该通知中的用户号查找IP-用户号对应关系并删除该对应关系,进而删除IP-处理单元号的对应关系。
进一步地,若所述计费服务器存储的IP-用户号对应关系超时则删除该超时的IP-用户号对应关系,进而删除IP-处理单元号的对应关系。
本发明还提供一种处理在线业务日志的计费服务器,包括消息接收模块、存储模块及话单消息处理模块;
所述存储模块,用于存储已处理用户的用户号;
所述消息接收模块,用于接收防火墙日志消息并发送至话单消息处理模块;
所述话单消息处理模块,用于收到防火墙日志消息后查询该用户的用户号,并根据所述用户号及防火墙日志消息生成话单消息。
进一步地,所述存储模块存储已处理用户的用户号是指,所述存储模块建立并存储用户IP与用户号的对应关系;
所述话单消息处理模块收到防火墙日志消息后查询该用户的用户号是指,消息接收模块根据用户IP查询存储模块中存储的用户IP与用户号的对应关系获知所述用户的用户号。
进一步地,所述话单消息处理模块包括一个或多个话单消息处理单元;
所述存储模块还用于存储用户IP与处理该用户消息的处理单元的对应关系;
所述消息接收模块还用于接收防火墙日志消息后,根据消息中的IP查找存储模块中是否存储有IP-处理单元的对应关系,是则将该防火墙日志消息存储至对应话单消息处理单元对应的缓存队列,没有则选择一个有空闲的话单消息处理单元处理该防火墙日志消息,并将该防火墙日志消息存储至选择的话单消息处理单元。
进一步地,所述话单消息处理单元,用于读取对应缓存队列中的防火墙日志消息,解析并校验该消息是否有效,无效则丢弃该消息,如果防火墙消息校验通过,则为消息分配一个唯一的话单标识,并将解析后得到的话单字段,话单标识以及时间戳的信息写入话单消息结构体;还用于根据解析的用户IP查询该话单消息处理单元是否存储有对应的IP-用户号对应关系,是则将查询到的用户号以及话单消息结构体中各字段拼接成一条话单消息,并将此话单消息发送给话单文件生成模块;若未存储IP-用户号对应关系则将解析的话单消息结构体存储至该话单消息处理单元对应的话单消息HASH表中,并将用户IP和话单标识发送给RADIUS服务器以查询用户号。
进一步地,所述消息接收模块收到RADIUS服务器返回的应答消息后,根据用户IP查询对应的话单消息处理单元,若查询成功则向对应的话单消息处理单元发送查询成功的响应,其中携带用户IP、话单标识及用户号,若查询失败则向对应的话单消息处理单元发送查询失败的响应,其中携带用户IP及话单标识;
所述话单消息处理单元收到查询成功的响应后,根据话单标识从话单消息HASH表中读取对应的话单消息结构体,并将用户号以及话单消息结构中各字段拼接成一条话单消息,之后将话单消息发送给话单文件生成模块;收到查询失败的响应后,根据话单标识从话单消息HASH表中读取对应的话单消息结构体,将用户号置为0与话单消息结构中各字段拼接成一条话单消息后发送给话单文件生成模块。
进一步地,所述存储模块是在收到RADIUS服务器返回的查询成功的应答消息后建立并存储用户IP与用户号的对应关系的。
综上所述,本发明提供一种处理在线业务日志的计费服务器及方法,采用本发明的技术方案,既可以减少对RADIUS服务器的访问频率,也可以提高话单生成的速度。
具体实施方式
为了解决上述技术问题,本发明通过以下技术方案实现:
本实施例提供一种处理基于WAP的socket在线业务日志计费服务器,如图1所示,包括消息接收模块、存储模块、话单消息处理模块及话单文件生成模块;
存储模块,用于存储已处理用户的用户号以及用户IP与处理该用户消息的处理单元的对应关系;存储模块是在收到RADIUS服务器返回的查询成功的应答消息后建立并存储用户IP与用户号的对应关系的。
此处,存储模块也可通过其他方式存储用户号,建立的对应关系也可以是用户号与除用户IP外的其他用户信息间的对应关系。
消息接收模块,用于接收WAP网关防火墙发来的防火墙日志消息,根据消息中的IP查找存储模块中是否存储有IP-处理单元的对应关系,是则将该防火墙日志消息存储至对应话单消息处理单元对应的缓存队列,没有则选择一个有空闲的话单消息处理单元处理该防火墙日志消息,并将该防火墙日志消息存储至选择的话单消息处理单元。
进一步地,IP-处理单元的对应关系记录处理用户防火墙日志消息的话单消息处理单元,该对应关系可以是IP-处理单元HASH表。
消息接收模块,还用于接收RADIUS服务器返回的应答消息,该应答消息包含用户IP、话单标识、用户号及表明查询是否成功的查询结果状态。若查询结果状态显示查询成功则根据用户IP查询IP-处理单元的对应关系获知对应的话单消息处理单元,之后向对应的话单消息处理单元发送查询成功的响应,其中携带用户IP、话单标识及用户号;若查询结果状态显示查询失败则向对应的话单消息处理单元发送查询失败的响应,其中携带用户IP及话单标识;
消息接收模块,还用于收到RADIUS服务器发来的用户下线通知后,根据该通知中的用户号查找IP-用户号对应关系并删除该对应关系;进而删除IP-处理单元号的对应关系(即IP-处理单元号的HASH表)。
话单消息处理模块包括一个或多个话单消息处理单元;
话单消息处理单元,用于读取对应缓存队列中的防火墙日志消息,解析并校验该消息是否有效,无效则丢弃该消息,如果防火墙消息校验通过,则为消息分配一个唯一的话单标识,并将解析后得到的话单字段,话单标识以及时间戳的信息写入话单消息结构体;还用于根据解析的用户IP查询该话单消息处理单元是否存储有对应的IP-用户号对应关系,是则将查询到的用户号以及话单消息结构体中各字段拼接成一条话单消息,并将此话单消息发送给话单文件生成模块;若未存储IP-用户号对应关系则将解析的话单消息结构体存储至该话单消息处理单元对应的话单消息HASH表中,并将用户IP和话单标识发送给RADIUS服务器以查询用户号。
话单消息处理单元还用于收到查询成功的响应后,根据话单标识从话单消息HASH表中读取对应的话单消息结构体,并将用户号以及话单消息结构中各字段拼接成一条话单消息,之后将话单消息发送给话单文件生成模块;以及收到查询失败的响应后,根据话单标识从话单消息HASH表中读取对应的话单消息结构体,将用户号置为0与话单消息结构中各字段拼接成一条话单消息后发送给话单文件生成模块。
话单消息处理单元还用于存储的IP-用户号对应关系超时则删除该超时的IP-用户号对应关系;进而删除IP-处理单元号的对应关系(即IP-处理单元号的HASH表)。
话单消息处理单元还用于存储的话单消息结构体超时,则取出超时话单消息结构体,将对应用户号置为0,并连同话单消息结构体形成话单消息后发送给话单文件生成模块。
话单文件生成模块,用于收到话单消息后检查话单消息缓存队列是否已满,已满则将缓存队列中的各话单消息写入话单文件,若未满则将接收的话单消息写入缓存队列。
本实施例中,对每个消息处理模块设置缓存队列,减少多个消息处理模块互斥共享同一个消息缓存带来的时间开销,同时提高了消息接收模块的分发防火墙日志消息的效率。
本实施例提供一种基于WAP的socket在线业务日志处理方法,如图2所示,包括以下处理过程:
步骤S1:计费服务器收到WAP网关防火墙发来的防火墙日志消息;
步骤S2:计费服务器解析并校验该防火墙日志消息,若校验无效则丢弃该消息,若校验通过,则为该消息分配一话单标识,并将解析后得到的话单字段,话单标识以及时间戳的信息写入话单消息结构体;
步骤S3:计费服务器根据解析出的用户IP查询本地是否存储有IP与用户号的对应关系,是则执行步骤S4,否则执行步骤S5;
步骤S4:计费服务器从IP与用户号的对应关系中获取该用户号,根据用户号连同话单消息结构体生成话单消息;
步骤S5:计费服务器存储该话单消息结构体,并向RADIUS服务器发送查询消息,其中携带用户IP和话单标识;
步骤S6:RADIUS服务器收到查询消息,根据用户IP查询其用户号,并向计费服务器返回应答消息,包含用户IP、话单标识、用户号及查询结果状态;查询结果状态表明用户号查询是否成功;
步骤S7:计费服务器收到RADIUS服务器返回的应答消息,若查询成功则执行步骤S8,否则执行步骤S9;
步骤S8:计费服务器在本地建立用户IP及用户号的对应关系,并根据话单标识读取存储的话单消息结构体,插入用户号生成话单消息;然后执行步骤S10;
用户IP及用户号的对应关系可以是用户IP-用户号的HASH表;
步骤S9:计费服务器根据话单标识读取存储的话单消息结构体,将对应用户号置为0并连同话单消息结构体形成话单消息;然后执行步骤S10;
步骤S10:计费服务器检查话单消息缓存是否已满,已满则将已缓存的话单消息写入话单文件,如果消息缓存有空闲,则将该生成的话单消息写入缓存。
上述步骤S2中,若计费服务器接收的防火墙日志消息较多而不能即时处理接收的防火墙日志消息,可以先缓存防火墙日志消息形成缓存队列,并按接收消息的先后顺序处理缓存队列中的防火墙日志消息;可以是在对缓存队列中的消息进行处理时才对消息进行解析及校验。
进一步地,计费服务器可设置多个消息处理单元同时处理防火墙日志消息。
进一步地,同一用户在线期间的所有防火墙日志消息由同一消息处理单元进行处理,计费服务器还记录用户IP与处理该用户消息的处理单元的对应关系,该对应关系可以但不限于是用户IP-处理单元号HASH表;计费服务器收到防火墙日志消息后,先根据用户IP查询该IP-处理单元号HASH表获知处理该用户防火墙日志消息的处理单元,并将防火墙日志消息存储至对应处理单元的缓存队列。每个消息处理单元对应一个缓存队列,用于保存分发给本处理单元的防火墙日志消息。
进一步地,若计费服务器根据IP未查询到该IP-处理单元号的HASH表,则选择一有空闲的处理单元处理该消息,较佳地,可按负载均衡的原则从缓存消息数最少的处理单元中选择一处理单元。
进一步地,每个消息处理单元对应一个话单消息HASH表,消息处理单元查询IP-用户号HASH表失败,则将话单消息暂时保存在单元号对应的话单消息HASH表。
进一步地,计费服务器在对用户计费的过程中,若收到RADIUS服务器发来的用户下线通知,根据该通知中的用户号查找IP-用户号对应关系并删除该对应关系;进而删除IP-处理单元号的对应关系(即IP-处理单元号的HASH表)。
进一步地,若计费服务器存储的IP-用户号对应关系超时则删除该超时的IP-用户号对应关系;进而删除IP-处理单元号的对应关系(即IP-处理单元号的HASH表)。
进一步地,若计费服务器存储的话单消息结构体超时,则取出超时话单消息结构体,将对应用户号置为0,并连同话单消息结构体形成话单消息。
本发明中,通过保存IP-处理模块号对应关系以及IP-用户号对应关系,用户第一次使用socket在线业务后在计费服务器的本地存储模块会保存用户信息以及分配的处理模块号,对同一用户的后续访问产生的防火墙消息,可以快速定位出上次处理该用户消息的模块号,分配消息到该模块对应的消息缓存,因此减少了同一个用户的访问对RADIUS服务器的重复查询。这种两级HASH查询机制既可以减少对RADIUS服务器的访问频率,也可以提高话单生成的速度。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上的描述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改,等同替换,改进等,均应包含在本发明的保护范围之内。