一种消息处理方法及服务器的制造方法_3

文档序号:9330366阅读:来源:国知局
网元操作请求的优先级,并根据所述网元操作请求的优先级,将所述获取到的网元操作请求缓存到相应的队列。具体根据以下内容之一或组合,确定获取到的网元操作请求的优先级:获取到的网元操作请求发生的时间、获取到的网元操作请求所来源的客户端、获取到的网元操作请求所指示的对被操作网元进行操作的类型、获取到的网元操作请求所指示的对被操作网元进行操作的目标参数。
[0091]根据设定网元操作请求的优先级,首先判断队列中网元操作请求的优先级,队列中优先级高的网元操作请求优先执行,使得处理过程更加合理和有效。
[0092]在实施例中,各个缓存队列也可以预设优先级,作为队列的属性。当服务器的负荷达到设定值的阈值后,根据队列的优先级,优先执行优先级高的队列。
[0093]较佳地,一个网元对应设置有一个队列;或者,一个网元对应设置有第一队列和第二队列,所述第一队列用于缓存除查询请求以外的网元操作请求,所述第二队列用于缓存查询请求。若一个网元对应设置有第一队列和第二队列,智能处理模块302根据所述获取到的网元操作请求所指示的被操作网元以及针对被操作网元的操作类型,从用于缓存针对所述被操作网元的网元操作请求的第一队列和第二队列中选择一个队列,并将所述获取到的网元操作请求缓存到所述选择出的队列。
[0094]在实施例中,当查询操作的目标参数和其他网元操作请求的目标参数不一致时,可将查询操作缓存在第二队列中执行,减少了同一个队列的负载和等待时间。
[0095]较佳地,请求获取模块301获取客户端发送的N个网元操作请求,所述N个网元操作请求来源于一个或多个客户端,N为大于或等于I的整数。结果返回模块302,在获得所述N个网元操作请求的执行结果后,根据所述N个网元操作请求所来源的客户端,将来自于同一个客户端的网元操作请求的执行结果携带于一个响应消息返回给对应的客户端。
[0096]为了更清楚地说明本发明的上述实施例,下面结合图4对本上述发明实施例的具体实现过程进行详细描述。
[0097]如图4所示,本发明实施例提供的一种消息处理系统示意图。
[0098]本实施例中,服务器的结构可与图3所示的结构相同。进一步地,请求接收模块可包括一个缓存单元和监控单元;智能处理模块中每个队列通过一个线程执行队列内的网元操作请求;结果返回单元中可包括结果列表和判断结果返回单元。
[0099]首先服务器中的请求获取模块通过EJB批量调用N个客户端的网元操作请求,EJB调用是远程同步调用,只要在超时时间内没有处理结果返回,此调用线程一直处于等待状态。此外,请求获取模块中的监控单元定时监控缓存单元中的网元操作请求。
[0100]当达到设定时间或者监控单元监控到缓存单元中缓存的网元操作请求的达到设定的存储量时,智能预处理模块根据获取到的网元操作请求的操作网元确定缓存队列,并将同一个网元的网元操作请求缓存在同一个队列中,若获取到新的操作网元的网元操作请求,则新增相应队列。
[0101]在每个队列中,根据网元操作请求发生的时间、来源的客户端、操作的类型及操作的目标参数等确定网元操作请求的优先级,优先级高的网元操作请求排在队列的前面,优先执行。此外,各个队列也可以预设优先级,作为队列的属性。当服务器的负荷达到设定值的阈值后,根据队列的优先级,优先执行优先级高的队列。比如,在同一个队列I中,缓存有来自客户端1、客户端2、客户端3的N个网元操作请求。根据客户需求,来源于客户端I的网元操作请求被判定为紧急事件,来源于客户端2的网元操作请求被判定为一般事件,来源于客户端3的网元操作请求被判定为无关紧要事件。服务器根据优先级的设定,优先执行客户端I的网元操作请求。
[0102]此外,当队列中已经缓存了具有相同操作信息的网元操作请求时,则不需要将获取到的相同操作信息的网元操作请求缓存到该队列中,即只执行已经缓存在队列中的该网元操作请求,并将执行后的结果共享给各个具有相同操作信息的网元操作请求的客户端。比如,队列中已经缓存了将网元I中的A属性的值从valuel修改为value2的操作请求,当判断出获取到的网元操作请求中也有将网元I中的A属性的值从valuel修改为value2的一个或多个操作请求,则获取到的相同操作信息的网元操作请求不需要再缓存到该队列中,即只执行已经缓存在队列中的该网元操作请求,并将执行结果返回给所有具有相同操作信息的网元操作请求结果的各个相应的客户端。
[0103]一般地,一个网元对应设置有一个队列,保证同一个网元的不同操作串行执行,不同网元的操作并行执行。例如:正在执行一个网元的网元操作请求时,请求获取单元又获取到该网元的其他操作请求,这时智能预处理单元需要保证当前未执行完的网元操作请求执行完,然后再开始执行后一网元操作请求。
[0104]但当队列中网元操作请求时为查询操作的特定情况下,一个网元可以对应设置有第一队列和第二队列,第一队列用于缓存除查询请求以外的网元操作请求,第二队列用于缓存查询请求。比如,当获取到修改I网元的B属性值和查询I网元的B属性值的网元操作请求时,将两个请求串行缓存在第一队列中;当获取到修改网元I的B属性值和查询网元I的C属性值的网元操作请求时,将两个请求并行缓存在第一队列和第二队列中。因此,当查询操作的目标参数和其他网元操作请求的目标参数不一致时,可以将查询操作缓存在第二队列中执行,减少了同一个队列的负载和等待时间。
[0105]服务器从线程池中获取线程,执行队列中的网元操作请求。线程以队列为单位进行分配,每个队列分配一个线程,这样使得同一个网元的网元操作请求由同一个线程执行,保证了网元操作请求的顺序性。随着队列个数的变化,线程池中当前的处理线程也随之变化。
[0106]当线程中的网元操作请求执行完之后,将执行的结果实时更新的到结果列表,结果返回模块实时监控着结果列表,如果一个客户端的所有网元操作请求均执行完成后,则将结果打包返回给该客户端,并对结果列表进行删除操作。若队列中获取到具有相同操作信息的网元操作请求,由于不同的客户端的相同网元操作请求只执行一次,因此需要判断结果列表中的结果是否还会被其他客户端使用,如果没有则删除列表中的执行结果。
[0107]从上述内容可以看出:本发明实施例提供一种消息处理方法及服务器。本发明实施例中,服务器获取客户端发送的网元操作请求;根据获取到的网元操作请求所指示的被操作网元,将获取到的网元操作请求缓存到相应的队列;其中,一个队列用于缓存针对同一个网元的网元操作请求,一个队列中缓存的网元操作请求被串行执行,不同队列中缓存的网元操作请求被并行执行;将获取到的网元操作请求的执行结果返回给客户端。使得同一个网元的网元操作请求串行执行,不同网元的网元操作请求并行执行,且同步返回各个客户端的网元操作请求的执行结果,提高了服务器处理效率。
[0108]本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0109]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1