一种实现单机支持高并发处理方法及系统技术方案

技术编号:8834111 阅读:329 留言:0更新日期:2013-06-22 20:23
本发明专利技术公开了一种实现单机支持高并发处理方法及系统,包括位于同一服务器上的接收消息队列、主线程和工作线程,主线程监听到事件后,判断事件类型,当事件类型为客户端新连接事件时,接收新的套接字并对新的套接字进行处理;当事件类型为传输请求事件时,接收传输请求指令,并根据指令生成请求消息添加到接收消息队列;当事件类型为输出事件时,将处于发送状态的数据进行发送处理;工作线程读取接收消息队列中的请求消息,获取请求消息的响应数据并将响应数据处置为发送状态。本发明专利技术使单机系统实现了支持更多用户的并发访问,不需要分布式的集群部署,架构简单,整体成本较低。

【技术实现步骤摘要】

本专利技术涉及一种网络数据传输,尤其涉及单机支持高并发访问的处理方法及系统。
技术介绍
并发是指网站在同一时间访问的人数,人数越多,瞬间带宽要求更高,也就是要求服务器瞬间处理的流量越大,当并发数超过一定量(例如百万级)后称为高并发,网站如果要在短时间内响应高并发的请求,需要对服务器的处理能力提出更高要求。目前已有的高并发解决方案,多采用分布式的集群部署方式。这种方式要求前端布置一个服务器,后端布置多台服务器,前端的一个服务器用于负载均衡,将并发转发给后端的服务器,后端的服务器进行业务处理。这种分布式的系统架构虽然对高并发处理具有一定的效果,但其系统设计及部署都比较复杂,并且整体成本较高。而单机(即单服务器)环境下支持的并发数小,当单机系统需要支持更多用户时,只能通过部署更多软硬件来扩容,造成资源浪费,成本增加。
技术实现思路
本专利技术要解决的主要技术问题是,提供一种实现单机支持高并发处理方法及系统,不需要分布式的集群部署,而是采用单机系统来支持多用户的高并发处理,使单机系统实现支持更多用户。根据本专利技术的第一方面,提供一种实现单机支持高并发处理方法,包括由同一服务器执行的主线程工作步骤和工作线程工作步骤,所述主线程工作步骤包括:主线程监听事件;当主线程监听到事件后,判断事件类型;按照事件类型对该事件进行响应和处理,当事件类型为客户端新连接事件时,接收新的套接字并对新的套接字进行处理;当事件类型为传输请求事件时,接收传输请求指令,根据传输请求指令生成请求消息添加到接收消息队列等待工作线程的读取;当事件类型为输出事件时,将处于发送状态的数据进行发送处理;所述工作线程工作步骤包括:读取接收消息队列中的请求消息;获取请求消息的响应数据并将响应数据处置为发送状态,以供主线程进行发送处理。根据本专利技术的第二方面,提供一种实现单机支持高并发处理系统,包括:接收消息队列,其用于接收消息;主线程,其用于监听事件,当监听到事件后,判断事件类型,按照事件类型对该事件进行响应和处理,当事件类型为客户端新连接事件时,接收新的套接字并对新的套接字进行处理;当事件类型为传输请求事件时,接收传输请求指令,并根据指令生成请求消息添加到接收消息队列;当事件类型为输出事件时,将处于发送状态的数据进行发送处理;工作线程,其用于读取接收消息队列中的请求消息,获取请求消息的响应数据并将响应数据处置为发送状态,以供主线程进行发送处理;所述接收消息队列、主线程和工作线程位于同一服务器上。根据本专利技术的第三方面,提供一种实现单机支持高并发状态下对传输请求事件的处理方法,包括:主线程检测到一个传输请求事件时,读取指令头及指令体数据,根据请求的指令头及指令体生成一个请求消息,将请求消息添加到接收消息队列;工作线程从接收消息队列中取出一条请求消息,根据请求消息创建响应消息头,然后调用业务处理函数对请求消息进行处理,生成响应数据,将响应数据关联到数据发送指针上,并触发输出事件;主线程检测到输出事件后,从数据发送指针上取出关联的响应数据,并将响应数据发送出去。本专利技术通过主要包括主线程、接收消息队列和工作线程的高并发处理系统架构,对不同类型事件进行不同处理,使单机系统实现了支持更多用户的并发访问,不需要分布式的集群部署,架构简单,整体成本较低。附图说明图1为本专利技术一种实施例中高并发处理系统的架构图;图2为本专利技术一种实施例中主线程工作流程图;图3为本专利技术一种实施例中工作线程工作流程图;图4为本专利技术一种实施例中对传输请求事件的处理流程图;图5为本专利技术一种实施例中实现单机支持高并发处理的主流程图;图6为本专利技术一种具体实例中主线程工作流程图;图7为本专利技术一种具体实例中工作线程工作流程图。具体实施例方式下面通过具体实施方式结合附图对本专利技术作进一步详细说明。本申请通过在单机(即同一台服务器)系统上设计高并发处理系统,通过对不同类型事件的不同处理,对多用户(例如百万级用户)的并发请求做出响应和处理。请参考图1,实现单机支持高并发处理系统的架构如图1所示,包括位于同一服务器I上主线程10、接收消息队列20和工作线程30,其中主线程10用于创建工作线程30、监听事件,当监听到事件后,判断事件类型,按照事件类型对该事件进行响应和处理,当事件类型为客户端新连接事件时,接收新的套接字并对新的套接字进行处理;当事件类型为传输请求事件时,接收传输请求指令,根据传输请求指令生成请求消息添加到接收消息队列;当事件类型为输出事件时,将处于发送状态的数据进行发送处理。接收消息队列20用于接收主线程10发送来的消息,将消息进行先入先出处理或按照预先设定的优先级缓存和输出。工作线程30用于读取接收消息队列中的请求消息,调用函数处理后得到请求消息的响应数据并将响应数据处置为发送状态,以供主线程10进行发送处理。在一具体实例中,主线程10包括监听模块11、输入处理模块12和输出处理模块13。监听模块11用于监听服务器系统底层触发的事件,读取底层在事件中设置的标识,根据标识判断事件类型,当事件类型为客户端新连接事件或已连接客户的传输请求事件时,作为输入事件发信息给输入处理模块12,并通知输入处理模块12事件的类型。输入处理模块12根据事件类型进行接收和处理。当事件类型为客户端新连接事件时,输入处理模块12循环接收新的套接字,如果接收失败,则结束内部循环,如果接收成功,将新的套接字加入服务器系统的I/O模型队列中,当接收到数据读取完毕标识时,则结束事件处理。当事件类型为传输请求事件时,输入处理模块12接收传输请求指令的指令头及指令体,验证合法后,组成一个请求消息,添加到接收消息队列中。在接收指令时,输入处理模块12根据指令头中描述的长度信息动态分配指令体缓存空间,接收指令体数据,并将接收到的指令体数据放入指令体缓存空间,判断指令的接收状态,如果整个指令接收成功,则将指令体缓存空间中的指令体数据放入消息队列;如果接收到数据读取完毕标识,则结束事件处理;如果接收失败则结束事件的处理。当事件类型为输出事件时,监听模块11发信息给输出处理模块13,输出处理模块13从数据发送指针上读取处于发送状态的数据,将该数据打包发送,在发送数据后判断数据发送状态,当判断数据发送成功后,将I/O模型队列中与接收该数据的客户端的套接字中的输出事件修改为传输请求事件,以便接收来自于该客户端的下一传输请求事件,提高响应速度。当输出处理模块13判断数据发送失败后,结束事件处理。在另一实施例中,请参考图1,实现单机支持高并发处理系统还包括与接收消息队列20、主线程10和工作线程30位于同一服务器I上的会话管理器40,会话管理器40用于对客户端信息进行添加、更新或删除,所述客户端信息由主线程写入或删除。当事件类型为客户端新连接事件且输入处理模块12接收该客户端的套接字成功后,输入处理模块12将客户端信息写入会话管理器40。客户端信息包括客户端登录网站信息、心跳信息和连接时长中的至少一种。当事件类型为来自于已在会话管理器40中建立客户端信息的客户端的传输请求事件时,如果输入处理模块12接收该客户端的传输请求指令不成功,则将I/O模型队列中该客户端的套接字删除,并将会话管理器40中该客户端的客户端信息删除。当事件类型为输出事件时,如果输出处理模块1本文档来自技高网...

【技术保护点】
一种实现单机支持高并发处理方法,其特征在于包括,由同一服务器执行的主线程工作步骤和工作线程工作步骤,所述主线程工作步骤包括:主线程监听事件;当主线程监听到事件后,判断事件类型;按照事件类型对该事件进行响应和处理,当事件类型为客户端新连接事件时,接收新的套接字并对新的套接字进行处理;当事件类型为传输请求事件时,接收传输请求指令,根据传输请求指令生成请求消息添加到接收消息队列等待工作线程的读取;当事件类型为输出事件时,将处于发送状态的数据进行发送处理;所述工作线程工作步骤包括:读取接收消息队列中的请求消息;获取请求消息的响应数据并将响应数据处置为发送状态,以供主线程进行发送处理。

【技术特征摘要】
1.一种实现单机支持高并发处理方法,其特征在于包括,由同一服务器执行的主线程工作步骤和工作线程工作步骤,所述主线程工作步骤包括: 主线程监听事件; 当主线程监听到事件后,判断事件类型; 按照事件类型对该事件进行响应和处理,当事件类型为客户端新连接事件时,接收新的套接字并对新的套接字进行处理;当事件类型为传输请求事件时,接收传输请求指令,根据传输请求指令生成请求消息添加到接收消息队列等待工作线程的读取;当事件类型为输出事件时,将处于发送状态的数据进行发送处理; 所述工作线程工作步骤包括: 读取接收消息队列中的请求消息; 获取请求消息的响应数据并将响应数据处置为发送状态,以供主线程进行发送处理。2.如权利要求1所述的方法,其特征在于,所述主线程监听事件之前还包括:创建监听套接字,将监听套接字绑定所述服务器的IP地址和端口,在主线程监听事件过程中监听来自于被绑定的服务器的IP地址和端口的事件,所述主线程监听到事件后,根据所述服务器底层对事件设置的标识判断事件类型。3.如权利要求1或2所述的方法,其特征在于,当事件类型为客户端新连接事件时,所述接收新的套接字并对新的套接字进行处理步骤包括: 循环接收新的套接字,如果接收失败,则结束内部循环,如果接收成功,则记录客户端信息,当接收到数据读取完毕标识时,则结束事件处理。4.如权利要求3所述的方法,其特征在于,新的套接字接收成功后,将新的套接字设置为非阻塞状态,所述记录客户端信息包括:将新的套接字加入服务器系统的I/O模型队列中,并将与该新的套接字对应的客户端信息添加到会话管理器中。5.如权利要求1或2所述的方法,其特征在于,当事件类型为传输请求事件时,所述接收传输请求指令,并将指令体中的请求消息添加到接收消息队列步骤包括: 接收传输请求指令的指令头; 根据指令头中描述的长度信息动态分配指令体缓存空间; 接收指令体数据,并将接收到的指令体数据放入指令体缓存空间; 判断指令的接收状态,如果整个指令接收成功,则根据请求的指令头及指令体生成一个请求消息,将请求消息添加到接收消息队列;如果接收到数据读取完毕标识,则结束事件处理;如果接收失败,则删除I/o模型队列中与发送传输请求指令的客户端对应的套接字,删除会话管理器中该客户端信息。6.如权利要求1或2所述的方法,其特征在于,当事件类型为输出事件时,将处于发送状态的数据进行发送处理步骤包括: 当判断数据发送成功后,将I/o模型队列中与接收该数据的客户端的套接字中的输出事件修改为传输请求事件; 当判断数据发送失败后,将I/o模型队列中与接收该数据的客户端的套接字删除,并删除会话管理器中该客户端信息。7.如权利要求1或2所述的方法,其特征在于,获取请求消息的响应数据并将响应数据处置为发送状态包括:根据请求消息动态分配响应数据缓存空间; 调用业务处理函数对请求消息进行处理; 将响应数据存入响应数据缓存空间; 将响应数据缓存空间关联到数据发送指针上,并触发输出事件。8.一种实现单机支持高并发处理系统,其特征在于包括: 接收消息队列,其用于接收消息; 主线程,其用于监听事件,当监听到事件后,判断事件类型,按照事件类型对该事件进行响应和处理,当事件类型为客户端新连接事件时...

【专利技术属性】
技术研发人员:刘小杰伍正勇
申请(专利权)人:深圳市快播科技有限公司
类型:发明
国别省市:

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

1