基于服务器的事件处理方法、装置、设备及介质制造方法及图纸

技术编号:20074699 阅读:28 留言:0更新日期:2019-01-15 00:32
本发明专利技术公开了一种基于服务器的事件处理方法、装置、设备及存储介质。所述方法包括:通过主线程监听并接受至少一个客户端发送的事件处理请求,发送同意应答信息给对应的客户端;将所述客户端根据所述同意应答信息返回的事件数据添加至缓冲队列;将所述缓冲队列中的事件数据分发给空闲的工作线程;通过所述工作线程对所述事件数据进行处理;其中,所述主线程为同步处理线程,所述工作线程为异步处理线程。通过本发明专利技术的技术方案,能够在保证服务器应用扩展性的同时,有效降低开发难度,降低维护成本,并提高服务器的兼容性。

Server-based event handling methods, devices, devices and media

The invention discloses a server-based event processing method, device, device and storage medium. The method includes: sending the consent response information to the corresponding client through the main thread to listen to and accept the event processing request sent by at least one client; adding the event data returned by the client according to the consent response information to the buffer queue; distributing the event data in the buffer queue to the idle worker thread; and applying the worker thread to the said buffer queue. The event data is processed, in which the main thread is a synchronous processing thread and the working thread is an asynchronous processing thread. The technical scheme of the invention can effectively reduce the development difficulty, reduce the maintenance cost and improve the compatibility of the server while guaranteeing the scalability of the server application.

【技术实现步骤摘要】
基于服务器的事件处理方法、装置、设备及介质
本专利技术实施例涉及计算机技术,尤其涉及一种基于服务器的事件处理方法、装置、设备及介质。
技术介绍
随着金融行业的不断发展,对行业的服务能力提出了更高的要求。银行为了扩展自己的业务范围,在多种范围内进行了有效的尝试。从安全等各方面考虑,银行目前的数据服务大多还是基于集中式数据服务的方式,通过布设多种服务器应用来满足大量业务的处理需求。为满足这样的需求,具有高性能的服务器事件处理程序就必不可少。针对这些能处理大量业务请求的服务器事件处理程序,结合不同项目的情况,各厂商都会进行针对性地开发。目前,针对服务器程序的开发,常见的有两种方式,一种是采用开源的框架产品,一种是自开发。开源的框架产品,例如ACE(ADAPTIVECommunicationEnvironment,自适配通信环境)等,代码量大,接口复杂,而且版本的迭代不受控制,对应用开发厂商而言,容易受到各种制肘。而且,这些框架应用,是为满足通用的通信程序的需要,对具体厂商而言,可能大多数接口、代码都属于冗余的,但这样的版本维护,却不能因为使用部分少而减小相关工作。自开发的服务器程序,对于许多非专业厂商来说,从开发效率的角度出发,多数会选择比较简单的开发模式,以满足项目开发的需要。在实现并发处理多事件的应用程序方面,有如下两种常见的编程模型:多进程或多线程的池处理模型和事件驱动的单线程模型。在多进程或多线程的池处理模型中,由于池里面的对象在使用时,新的请求将不能被受理。所以这种模型的应用扩展性差,如果应用程序只需处理少量的并发请求,系统还能正常运行;但如果应用程序需要处理大量的请求,为每个连接分配一个处理进程或线程的方式是不现实的。在事件驱动的单线程模型中,由于该模型会把导致阻塞的操作转化为一个异步操作,因此相较于多进程或多线程的池处理模型而言,其扩展性高,性能也比较好,但这种模型要把所有会导致阻塞的操作转化为异步操作,而异步操作需要由开发者来编写和管理,会提高开发难度,提高维护成本;另一方面,目前很多广泛使用的函数库都很难转为用异步操作来实现,导致兼容性较差。
技术实现思路
本专利技术提供一种基于服务器的事件处理方法、装置、设备及介质,以实现在保证服务器应用扩展性的同时,有效降低开发难度,降低维护成本,并提高服务器的兼容性。第一方面,本专利技术提供了一种基于服务器的事件处理方法,包括:通过主线程监听并接受至少一个客户端发送的事件处理请求,发送同意应答信息给对应的客户端;将所述客户端根据所述同意应答信息返回的事件数据添加至缓冲队列;将所述缓冲队列中的事件数据分发给空闲的工作线程;通过所述工作线程对所述事件数据进行处理;其中,所述主线程为同步处理线程,所述工作线程为异步处理线程。第二方面,本专利技术还提供了一种基于服务器的事件处理装置,该装置包括:事件监听模块,用于通过主线程监听并接受至少一个客户端发送的事件处理请求,发送同意应答信息给对应的客户端;队列添加模块,用于将所述客户端根据所述同意应答信息返回的事件数据添加至缓冲队列;数据分发模块,用于将所述缓冲队列中的事件数据分发给空闲的工作线程;数据处理模块,用于通过所述工作线程对所述事件数据进行处理;其中,所述主线程为同步处理线程,所述工作线程为异步处理线程。第三方面,本专利技术还提供了一种计算机设备,该设备包括:一个或多个处理器;存储器,用于存储一个或多个程序;当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本专利技术实施例中任一所述的基于服务器的事件处理方法。第四方面,本专利技术还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本专利技术实施例中任一所述的基于服务器的事件处理方法。本专利技术实施例通过作为同步处理线程的主线程监听并接受至少一个客户端发送的事件处理请求,并发送同意应答信息给对应的客户端后,将客户端返回的事件数据添加至缓冲队列,进而将该缓冲队列中的事件数据分发给空闲的工作线程,通过该工作线程按照异步方式对事件数据进行处理,利用了半同步半异步的优点,并使用缓冲队列来协调同步与异步之间的通信,解决了现有技术中服务器应用扩展性差、开发难度高、维护成本高的问题,实现了在保证服务器应用扩展性的同时,有效降低开发难度,降低维护成本,并提高服务器的兼容性的效果。附图说明图1是本专利技术实施例一提供的一种基于服务器的事件处理方法的流程示意图;图2是本专利技术实施例二提供的一种基于服务器的事件处理装置的结构示意图;图3是本专利技术实施例三提供的一种计算机设备的结构示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。实施例一图1为本专利技术实施例一提供的一种基于服务器的事件处理方法的流程示意图。该方法可适用于服务器对客户端发送的事件进行处理的情况,该方法可以由基于服务器的事件处理装置来执行,该装置可由硬件和/或软件组成,并一般可集成在服务器以及所有包含事件处理功能的计算机设备中。具体包括如下:S110、通过主线程监听并接受至少一个客户端发送的事件处理请求,发送同意应答信息给对应的客户端。本实施例中,主线程可以是同步处理线程。示例性的,可在服务器中使用一个主线程,按照同步的方式监听客户端发送的事件处理请求,并在事件处理请求验证通过后接受该请求,发送同意应答信息给发送该事件处理请求的客户端。从内核层面来描述,事件处理请求可以是套接字socket请求,也即当主线程监听到socket请求时,同意该请求,并通知相应的客户端该请求的处理结果,以使客户端继续向服务器发送连接socket。相较于现有技术中采用多线程监听请求并处理事件的方式,本实施例通过一个主线程专门用于监听事件处理请求的好处在于,可以节约内存资源。可选的,通过主线程监听并接受至少一个客户端发送的事件处理请求,发送同意应答信息给对应的客户端,包括:通过主线程监听事件通知接口上绑定的文件描述字的状态;若文件描述字的状态变为目标状态,则通过主线程从文件描述字对应的读写对象中读取至少一个客户端发送的事件处理请求;接受事件处理请求并发送同意应答信息给对应的客户端。其中,文件描述字为一虚拟符号,其对应于一个读写对象,该读写对象用于接收客户端发送的事件处理请求。示例性的,可将文件描述字绑定在一个特定的事件通知接口上,通过主线程监听该事件通知接口上绑定的文件描述字的状态,即可实现对该事件对应的事件处理请求的监听。当文件描述字的状态发生改变时,可通知主线程从文件描述字对应的读写对象中读取一个或多个客户端发送的事件处理请求数据。主线程对每一个读取到的事件处理请求进行合法性验证,验证通过时接受该事件处理请求并发送相应的反馈信息给发送该事件处理请求的客户端,以通知该客户端进行下一步事件数据的发送。可选的,事件通知接口由事件通知接口库libevent提供。由于在Linux和Windows这两类主流的桌面或服务器操作系统中,高性能的事件通知接口库libevent已经作为标准内核接口或扩展库进行了提供。作为跨平台的基于事件驱动的接口库,libevent对多个本文档来自技高网
...

【技术保护点】
1.一种基于服务器的事件处理方法,其特征在于,包括:通过主线程监听并接受至少一个客户端发送的事件处理请求,发送同意应答信息给对应的客户端;将所述客户端根据所述同意应答信息返回的事件数据添加至缓冲队列;将所述缓冲队列中的事件数据分发给空闲的工作线程;通过所述工作线程对所述事件数据进行处理;其中,所述主线程为同步处理线程,所述工作线程为异步处理线程。

【技术特征摘要】
1.一种基于服务器的事件处理方法,其特征在于,包括:通过主线程监听并接受至少一个客户端发送的事件处理请求,发送同意应答信息给对应的客户端;将所述客户端根据所述同意应答信息返回的事件数据添加至缓冲队列;将所述缓冲队列中的事件数据分发给空闲的工作线程;通过所述工作线程对所述事件数据进行处理;其中,所述主线程为同步处理线程,所述工作线程为异步处理线程。2.根据权利要求1所述的方法,其特征在于,所述事件数据包括连接请求;通过所述工作线程对所述事件数据进行处理,包括:根据所述连接请求建立所述工作线程与所述客户端之间的连接通道;通过所述工作线程对基于所述连接通道接收的业务数据进行处理。3.根据权利要求1所述的方法,其特征在于,所述事件数据包括连接请求以及业务数据;将所述缓冲队列中的事件数据分发给空闲的工作线程,包括:若确定所述事件数据为连接请求,则将所述连接请求注册至内部事件表中,并根据所述内部事件表将注册的连接请求依次分发给空闲的工作线程;若确定所述事件数据为业务数据,且与所述业务数据对应的目标工作线程为空闲状态,则将所述业务数据分配给所述目标工作线程。4.根据权利要求1所述的方法,其特征在于,所述通过主线程监听并接受至少一个客户端发送的事件处理请求,发送同意应答信息给对应的客户端,包括:通过主线程监听事件通知接口上绑定的文件描述字的状态;若所述文件描述字的状态变为目标状态,则通过所述主线程从所述文件描述字对应的读写对象中读取至少一个客户端发送的事件处理请求;接受所述事件处理请求并发送同意应答信息给对应的客户端。5.根据权利要求4所述的方法,其特征在于,所述事件通知接口由...

【专利技术属性】
技术研发人员:肖艳华何华强李进南刘志宏朱勇军邓兵龙吴韦盛
申请(专利权)人:深圳怡化电脑股份有限公司深圳市怡化时代科技有限公司深圳市怡化金融智能研究院
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1