一种业务异步处理方法、装置和系统的制作方法

文档序号:9217073阅读:409来源:国知局
一种业务异步处理方法、装置和系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种业务异步处理方法、装置和系统。
【背景技术】
[0002]在互联网时代服务器是任何产品必不可少的重要组成部分,面对海量用户如何设计高性能高并发的网络框架是一个经典问题。现有的技术方案大体设计如下:一个线程专门处理网络1 (Input/Output,输入输出),其余线程作为线程池来处理任务。现有技术方案中,并发完全依赖线程数量,严重加大系统开销,并且随着连接数的增多,现有方案系统开销线性增长。处理每个连接都要使用一个线程,而到一定的数量之后,效率随着线程数的增加而减少。

【发明内容】

[0003]本发明实施例所要解决的技术问题在于,提供一种业务异步处理方法、装置和系统,可实现异步的进行业务1处理和业务逻辑处理,从而解耦线程与业务并发量,能够实现使用最少的线程数充分利用系统处理资源。
[0004]为了解决上述技术问题,本发明实施例提供了一种业务异步处理方法,所述方法包括:
[0005]1服务获取应用程序提交的异步业务请求,所述异步业务请求包括业务1请求和回调函数;
[0006]所述1服务通知操作系统根据所述业务1请求进行异步的业务1处理,所述操作系统将所述业务1处理得到的业务数据放入业务事件队列中;
[0007]所述1服务从所述业务事件队列中取出所述业务数据,并执行所述回调函数对所述业务数据进行业务逻辑处理。
[0008]相应地,本发明实施例还提供了一种业务异步处理装置,所述业务异步处理装置包括:
[0009]业务请求获取模块,用于获取应用程序提交的异步业务请求,所述异步业务请求包括业务1请求和回调函数;
[0010]1处理触发模块,用于通知操作系统根据所述业务1请求进行异步的业务1处理,所述操作系统将所述业务1处理得到的业务数据放入业务事件队列中;
[0011]事件分离模块,用于从所述业务事件队列中取出所述业务数据,并执行所述回调函数对所述业务数据进行业务逻辑处理。
[0012]相应地,本发明实施例还提供了一种业务服务器,包括应用程序、操作系统、业务事件队列以及如前文实施例所述的业务异步处理装置,其中:
[0013]所述应用程序用于向所述业务异步处理装置提交异步业务请求,所述异步业务请求包括业务1请求和回调函数;
[0014]所述业务异步处理装置用于通知操作系统根据所述业务1请求进行异步的业务1处理;
[0015]所述操作系统用于根据所述业务1请求进行异步的业务1处理,并将所述业务1处理得到的业务数据放入业务事件队列中;
[0016]所述业务事件队列用于缓存所述操作系统进行业务1处理得到的业务数据;
[0017]所述业务异步处理装置还用于从所述业务事件队列中取出所述业务数据,并执行所述回调函数对所述业务数据进行业务逻辑处理。
[0018]本实施例通过异步的进行业务1处理和业务逻辑处理,从而解耦线程与业务并发量,能够实现使用最少的线程数充分利用系统处理资源。
【附图说明】
[0019]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0020]图1是本发明实施例中的一种业务异步处理方法的流程示意图;
[0021]图2是本发明另一实施例中的一种业务异步处理方法的流程示意图;
[0022]图3是本发明实施例中的一种业务异步处理装置的结构示意图;
[0023]图4是本发明实施例中的一种业务服务器的结构示意图。
【具体实施方式】
[0024]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0025]本发明实施例中的业务异步处理方法,可以实现在网络的业务服务器中,尤其适用于互联网后台需要高性能高并发处理业务的业务服务器,例如网络相册后台服务器、SNS(Social Networking Services,社会性网络服务)服务器等。
[0026]图1是本发明实施例中的一种业务异步处理方法的流程示意图,如图所示本实施例中的业务异步处理方法可以包括以下流程步骤:
[0027]S101, 1服务获取应用程序提交的异步业务请求,所述异步业务请求包括业务1请求和回调函数。
[0028]具体实现中,所述1服务即为本发明为实现业务异步处理逻辑而构造的类,例如可以为Boost::as1::1o_service,其内聚有多个成员函数,例如run循环成员函数、post成员函数、stop成员函数等。所述应用程序可以为接收用户客户端或其他服务器发来的业务请求,并对该业务请求进行业务处理的程序,例如通讯后台服务器中负责接收、发送以及转发通讯消息逻辑的通讯进程,或如网络相册服务器中负责接收用户上传数据以及根据用户浏览操作向用户发送浏览数据的业务服务程序。在可选实施例中,所述应用程序可以调用预设的10对象进行异步业务操作,所述10对象可以例如socket对象,以使所述10对象可以根据所述异步业务操作向所述10服务提交所述异步业务请求,所述异步业务请求包括业务1请求和回调函数,所述业务1请求可以为应用程序执行所述异步业务操作所需进行的1处理,例如可以包括业务使用的1接口、1协议等,所述回调函数可以为预先设定的以实现所述业务操作逻辑的函数。
[0029]S102,所述1服务通知操作系统根据所述业务1请求进行异步的业务1处理,所述操作系统将所述业务1处理得到的业务数据放入业务事件队列中。
[0030]具体实现中,所述1服务器可以通知操作系统根据所述业务1请求执行实际的业务1处理,所述操作系统在执行完毕所述业务1处理后或定时的将所述业务1处理得到的业务数据放入业务事件队列中,所述业务数据中可以携带业务标识或编号等信息以表明是与所述应用程序提交的异步业务请求对应的业务数据。这里若是同步1处理则1服务需要为每个业务分配一个对应的线程,并该占用的线程需要一直阻塞在等待操作系统为该业务进行的1处理结果,本发明由于采用异步进行1处理和业务逻辑处理,因此通知操作系统进行1处理后所述1服务可以继续接收应用程序提交的其他异步业务请求。
[0031]S103,所述1服务从所述业务事件队列中取出所述业务数据,并执行所述回调函数对所述业务数据进行业务逻辑处理。
[0032]具体实现中,所述1服务在接收到应用程序提交的异步业务请求后,可以一直检测所述业务事件队列中是否存在业务数据,直至检测到所述业务事件队列中有业务数据后,所述1服务从所述业务事件队列中取出所述业务数据,并执行所述业务数据对应的异步业务请求中的回调函数,以对所述业务数据进行业务逻辑处理。可选的,本发明实施例中可以由1服务如1_service中的run成员函数负责检测所述业务事件队列中是否存在业务数据,并且当所述run成员函数检测到所述业务事件队列中存在所述业务1请求对应业务数据后,仍由所述run成员函数从所述业务事件队列中取出所述业务数据,并执行所述异步业务请求中的回调函数对所述业务数据进行业务逻辑处理。由于本发明中采用了业务事件队列,因此1_service中的run成员函数只需检测该业务事件队列中是否有1处理完成的业务数据,若有业务数据则取出并执行对应的回调函数,若没有则返回轮询结果,不再需要对每一个业务1的处理结果进行轮询检测是否完成,因此极大的减少了运行1_service中的run成员函数的线程的工作量。
[0033]进而在可选实施例中,所述1服务可以包括多个线程分别用于执行所述run成员函数,如通过线程池来运行所述run成员函数,从而在某个线程在执行业务的回调函数时,别的线程可以检测业务事件队列中是否存在业务数据或执行别的业务的回调函数,进一步的提高业务处理效率。可选的检测业务事件队列中是否存在业务数据,以及当检测到业务事件队列中存在业务数据时从所述业务事件队列
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1