CN111556058A - 会话处理方法及装置 - Google Patents
会话处理方法及装置 Download PDFInfo
- Publication number
- CN111556058A CN111556058A CN202010355379.3A CN202010355379A CN111556058A CN 111556058 A CN111556058 A CN 111556058A CN 202010355379 A CN202010355379 A CN 202010355379A CN 111556058 A CN111556058 A CN 111556058A
- Authority
- CN
- China
- Prior art keywords
- session
- thread
- target
- processing
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开涉及一种会话处理方法、装置、电子设备及计算机可读介质。该方法包括:主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;将解析后的所述会话数据加入目标线程数据包队列;由多个数据处理线程中确定目标数据处理线程;基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;将处理结果存储到目标元素中以响应所述会话。本公开涉及的会话处理方法、装置、电子设备及计算机可读介质,实现服务器对多个客户端并发连接,高速处理的效果,同时还能够保持服务器和客户端之间会话的安全性和高效性。
Description
技术领域
本公开涉及计算机信息处理领域,具体而言,涉及一种会话处理方法、装置、电子设备及计算机可读介质。
背景技术
客户端与服务器之间进行通信需要双方确定一种协议,即一种特殊的报文。双方都可以封装和解析报文,客户端将数据封装成报文发送给服务器。服务器收到来自客户端的报文之后解析出数据并将结果反馈给客户端。因此客户端和服务器之间需要建立一个可靠的连接,即接收-确认机制。在真实的线上环境中,通常使用多个客户端与服务器进行通信,但常规服务器同一时间只能与一个客户端进行通信。当出于确认已发出的请求都得到确认再进行下一步请求的原因,其他的客户端会收不到服务器的相应而处于等待状态。
服务器花了大量时间用于从上一响应到下一请求之间的等待,浪费了大量的服务器CPU性能和接口带宽。这种做法效率过低,大规模规则下发场景耗时过长。因此,需要一种新的会话处理方法、装置、电子设备及计算机可读介质。
在所述背景技术部分公开的上述信息仅用于加强对本公开的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本公开提供一种会话处理方法、装置、电子设备及计算机可读介质,实现服务器对多个客户端并发连接,高速处理的效果,同时还能够保持服务器和客户端之间会话的安全性和高效性。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的一方面,提出一种会话处理方法,该方法包括:主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;将解析后的所述会话数据加入目标线程数据包队列;由多个数据处理线程中确定目标数据处理线程;基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;将处理结果存储到目标元素中以响应所述会话。
在本公开的一种示例性实施例中,还包括:在主服务器故障时,进行主备倒换操作;原主服务器重启后切换为备用服务器;原备用服务器接收切换信号,保留原主服务器的配置转换为主服务器。
在本公开的一种示例性实施例中,主服务器对来自客户端的会话进行认证之前,还包括:主服务器进行初始化,所述初始化包括:初始化会话表;初始化多个处理数据包线程;创建多个处理线程;初始化套接字;创建读取套接字线程;创建读取会话线程;启动套接字服务;创建多个线程池;初始化多个元素。
在本公开的一种示例性实施例中,主服务器对来自客户端的会话进行认证,包括:由所述会话的数据包中提取用户信息;对所述用户信息进行认证。
在本公开的一种示例性实施例中,还包括:所述主服务器确定所述客户端互联网协议地址的合法性;在合法性通过时,将所述会话的报文信息创建会话,将所述会话加入至会话表中。
在本公开的一种示例性实施例中,基于所述会话的标识确定目标数据包线程,包括:基于所述会话的标识确定目标线程池,所述目标线程池中包括多个数据包线程;在所述多个数据包线程中确定所述目标数据包线程。
在本公开的一种示例性实施例中,由多个数据处理线程中确定目标数据处理线程,包括:将多个虚拟处理器与所述多个数据处理线程绑定。
在本公开的一种示例性实施例中,基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理,包括:所述目标数据处理线程依次读取所述目标线程数据包队列中的节点;对所述节点中的解析后的所述会话数据进行处理。
在本公开的一种示例性实施例中,将处理结果存储到目标元素中以响应所述会话,包括:基于所述目标数据包线程由所述多个元素中确定目标元素;将所述处理结果存储到所述目标元素中以响应所述会话。
在本公开的一种示例性实施例中,将所述处理结果存储到所述目标元素中以响应所述会话,包括:将所述处理结果存储到所述目标元素中;将所述目标元素挂载在哈希链表上以以响应所述会话。
根据本公开的一方面,提出一种会话处理装置,该装置包括:认证模块,用于主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;解析模块,用于基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;队列模块,用于将解析后的所述会话数据加入目标线程数据包队列;线程模块,用于由多个数据处理线程中确定目标数据处理线程;处理模块,用于基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;存储模块,用于将处理结果存储到目标元素中以响应所述会话。
在本公开的一种示例性实施例中,还包括:切换模块,用于在主服务器故障时,进行主备倒换操作;原主服务器重启后切换为备用服务器;原备用服务器接收切换信号,保留原主服务器的配置转换为主服务器。
在本公开的一种示例性实施例中,还包括:初始化模块,用于主服务器进行初始化,所述初始化包括:初始化会话表;初始化多个处理数据包线程;创建多个处理线程;初始化套接字;创建读取套接字线程;创建读取会话线程;启动套接字服务;创建多个线程池;初始化多个元素。
根据本公开的一方面,提出一种电子设备,该电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上文的方法。
根据本公开的一方面,提出一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上文中的方法。
根据本公开的会话处理方法、装置、电子设备及计算机可读介质,主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;将解析后的所述会话数据加入目标线程数据包队列;由多个数据处理线程中确定目标数据处理线程;基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;将处理结果存储到目标元素中以响应所述会话的方式,实现服务器对多个客户端并发连接,高速处理的效果,同时还能够保持服务器和客户端之间会话的安全性和高效性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
通过参照附图详细描述其示例实施例,本公开的上述和其它目标、特征及优点将变得更加显而易见。下面描述的附图仅仅是本公开的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种会话处理方法的流程图。
图2是根据一示例性实施例示出的一种会话处理方法的示意图。
图3是根据另一示例性实施例示出的一种会话处理方法的流程图。
图4是根据另一示例性实施例示出的一种会话处理方法的示意图。
图5是根据另一示例性实施例示出的一种会话处理方法的示意图。
图6是根据另一示例性实施例示出的一种会话处理方法的示意图。
图7是根据一示例性实施例示出的一种会话处理装置的框图。
图8是根据另一示例性实施例示出的一种会话处理装置的框图。
图9是根据一示例性实施例示出的一种电子设备的框图。
图10是根据一示例性实施例示出的一种计算机可读介质的框图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应理解,虽然本文中可能使用术语第一、第二、第三等来描述各种组件,但这些组件不应受这些术语限制。这些术语乃用以区分一组件与另一组件。因此,下文论述的第一组件可称为第二组件而不偏离本公开概念的教示。如本文中所使用,术语“及/或”包括相关联的列出项目中的任一个及一或多者的所有组合。
本领域技术人员可以理解,附图是示例实施例的示意图,附图中模块或流程并不一定是实施本公开所必须的,因此不能用于限制本公开的保护范围。
本公开采用会话表与线程池结合的方法来处理来自多个客户端的报文,即提供了服务器处理来自客户端报文的具体方案。实际网络线上运行的采用设备通常会有主备之分,主设备主要处理实际业务,备用设备用于备份和当主设备出现问题的时候自动替代主设备。下面将会详细说明服务器是如何具体工作的。
值得一提的是,主服务器对来自客户端的会话进行认证之前,还包括:主服务器进行初始化,所述初始化包括:初始化会话表;初始化多个处理数据包线程;创建多个处理线程;初始化套接字;创建读取套接字线程;创建读取会话线程;启动套接字服务;创建多个线程池;初始化多个元素。
在设备启动后,服务器开始进行初始化,为接收客户端报文做如下准备:
1.初始化会话表,会话表用来存储每一条会话信息,当数据流到达设备的时候进行安全认证,当通过认证后数据流才被允许进入设备。会话表的结构如下:
会话ID | 用户请求认证次数 | 会话状态 | 建立会话的源IP地址 | 接收报文信息 | 读写报文线程 |
2.初始化处理数据包线程pkt_thread,该线程中含有数据包队列qkt_que。该线程会将数据包存储在结点中并挂在数据包队列中,以便后续处理数据包。该队列是线程独立的,即每个线程均有独立的qkt_que队列,因此不存在并发操作影响性能的问题。
3.创建处理线程handle_thread,用来处理数据包队列pkt_que上的结点。
4.初始化套接字,用于客户端和服务器端的通信。服务器端在指定端口监听。
5.创建读取套接字线程,将套接字中的数据包进行认证并读取至会话数据缓冲区。
6.创建线程读取session会话,对从客户端发送过来的报文进行解析。
7.启动服务器socket服务,进行监听端口。
8.创建n个线程池,以供处理报文使用。设备使用共x个线程来处理,即每个线程池初始化x/n个线程以备使用。每个线程池中的x/n个线程都绑定在同一个VCPU上,因此不同线程池在调度机会上不存在竞争关系。其中n和x取值原则上应选取2的幂(如n=4,x=64),这样分配比较简洁和均匀。
9.初始化n个元素的tlv_buff全局变量,分别用来存储各线程池中处理后的数据。
至此初始化完成,服务器进程开始接收客户端请求。
图1是根据一示例性实施例示出的一种会话处理方法的流程图。会话处理方法10至少包括步骤S102至S112。
如图1所示,在S102中,主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区。包括:由所述会话的数据包中提取用户信息;对所述用户信息进行认证。
更具体的,用户使用客户端将报文发送给服务器端。客户端会主动与服务器端建立连接,完成套接字初始化、连接和数据发送。客户端首先会通过套接字socket向服务器发送认证信息,并获得服务器的反馈。
在一个实施例中,还包括:所述主服务器确定所述客户端互联网协议地址的合法性;在合法性通过时,通过所述会话的报文信息创建会话;将所述会话加入至会话表中。
在S104中,基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析。包括:基于所述会话的标识确定目标线程池,所述目标线程池中包括多个数据包线程;在所述多个数据包线程中确定所述目标数据包线程
在S106中,将解析后的所述会话数据加入目标线程数据包队列。
在S108中,由多个数据处理线程中确定目标数据处理线程。可包括:将多个虚拟处理器与所述多个数据处理线程绑定。
在S110中,基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理。包括:所述目标数据处理线程依次读取所述目标线程数据包队列中的节点;对所述节点中的解析后的所述会话数据进行处理。
在S112中,存储处理结果以响应所述会话。包括:基于所述目标数据包线程由所述多个元素中确定目标元素;将所述处理结果存储到所述目标元素中以响应所述会话。还包括:将所述目标元素挂载在哈希链表上以响应所述会话。
根据本公开的会话处理方法,主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;将解析后的所述会话数据加入目标线程数据包队列;由多个数据处理线程中确定目标数据处理线程;基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;将处理结果存储到目标元素中以响应所述会话的方式,实现服务器对多个客户端并发连接,高速处理的效果,同时还能够保持服务器和客户端之间会话的安全性和高效性。
应清楚地理解,本公开描述了如何形成和使用特定示例,但本公开的原理不限于这些示例的任何细节。相反,基于本公开公开的内容的教导,这些原理能够应用于许多其它实施例。
图2是根据一示例性实施例示出的一种会话处理方法的示意图。如图2所示,在主服务器故障时,进行主备倒换操作;原主服务器重启后切换为备用服务器;原备用服务器接收切换信号,保留原主服务器的配置转换为主服务器。
主设备与备用设备由于使用功能不同,所以彼此流程设计也不相同。主设备主要功能是接收来自客户端的报文进行处理,备用设备的主要功能是同步主设备的数据以便在主设备故障时替代主设备进行工作。主备同步也是由会话来实现的,备用设备不对外发送数据,只接收来自主设备的同步数据。主设备与备用设备的协议数据处理过程基本一致,只是不会向客户端反馈,不会主动发送数据。
主设备在初始化的时候会建立一个连接socket,并且开始接收来自备用设备的连接请求。创建一个用于主备通信的会话,当备用设备连接后开始向备用设备发送主设备的数据,或者当主备都在工作时,主控接收到来自客户端的数据后会通过这个主备通信会话,将接收到的数据也发送给备用设备。备用设备的会话表也来自于主设备,备用设备不接受来自客户端的连接。
主设备出现故障需要主备倒换的时候,会主动向备设备发送主备倒换信号,此时主设备重启,备设备收到信号切换为主设备。首先会将x个用于同步数据的会话线程以及相应的n个线程池(与主设备的线程对应)进行销毁,再走主设备的流程。当主设备初始化流程结束,设备开始正常工作。
图3是根据另一示例性实施例示出的一种会话处理方法的流程图。图3所示的流程是对图1所示的流程中S102“主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区”的详细描述。
如图3所示,在S302中,检查客户端IP。
在S304中,利用数据包的报头信息创建会话,添加至会话表中。
在S306中,客户端IP有误时,生成反馈信息。
在S308中,检查客户端IP。
在S310中,对数据包中的用户名、密码等信息进行验证。
在S312中,在校验不通过时,生成反馈信息。
在S314中,创建读线程,将数据放入会话缓冲区。
在S316中,在放入缓冲区出错时,生成反馈信息。
服务器监听到套接字,触发服务器的接收流程,接收客户端的套接字。检查客户端ip的合法性即该ip是否被信任,即该套接字所属客户端是否被信任。通过检查后将此次会话添加至会话表中,并更新该会话相关信息。
若该报文为无效报文,则将信息反馈给客户端;如果报文为有效报文,则认证用户信息和读取数据。对用户的用户名、密码和客户端ip进行认证。如果认证失败,则将信息反馈给客户端;认证成功则创建一个读线程,读取套接字中的信息放入会话报文缓冲区中。读取完毕则与结束连接。
图4是根据另一示例性实施例示出的一种会话处理方法的示意图。如涂4所示,基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;将解析后的所述会话数据加入目标线程数据包队列。
更具体的,可例如创建x个线程pkt_thread,获取session会话,利用会话id除以n取余,得到线程池号,从该线程池中取一个空闲线程pkt_thread_i(数据包线程)来对从客户端发送过来的报文进行解析。同一时刻有n个线程在工作,可以实现n个用户并发处理。每个线程数据读取完毕,就将数据对应的结点加到线程数据包队列qkt_que上,这些数据将会被数据处理线程handle_thread处理。从读取数据包队列pkt_que取下一个结点给此次会话对应的数据包结点,用于接收socket缓冲区中的数据并返回。
图5是根据另一示例性实施例示出的一种会话处理方法的示意图。如图5所示,由多个数据处理线程中确定目标数据处理线程;基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理。
更具体的,可例如创建n个数据处理线程handle_thread,与n个VCPU分别绑定(这n个VCPU不同于线程池所绑定的VCPU,因此二者之间不存在调度竞争)。用来处理数据包队列qkt_que上的结点,当队列为空时,线程处于等待状态;如果不为空,则进入循环读取数据包队列结点中的报文信息,并做相应的处理,将处理后的数据放入tlv_buff相应下标对应的元素中。当处理完结点中的信息后再将结点挂载在数据包队列qkt_que的尾部,循环使用资源。当没有需要处理的数据包后继续进入线程等待状态。
图6是根据另一示例性实施例示出的一种会话处理方法的示意图。如图6所示,将处理结果存储到目标元素中以响应所述会话。
更具体的,可例如数据存储在一个哈希链表上,基本单位为链表上的一个规则结点。n个内核态管理线程从用户态进程拿到数据后会根据一定的算法计算出哈希值,从而***至哈希链表上。设备会提前预申请空闲结点以备使用,本发明中将原来单个空闲结点链表改成n个空闲结点链表,分别与n个用户态线程和n个内核态管理线程对应,初始状态下每个空闲结点链表上的空闲结点数相同。处理用户态数据时,将当前线程对应的空闲结点链表上的空闲结点预分配给各线程使用。当某个线程预分配的结点用完时,则遍历其它空闲结点链表,获取空闲结点,释放时放到当前线程的空闲结点链表上,对每个链表的访问用互斥锁进行并发保护。
一般情况下,各线程上的规则下发速度是均衡的,因此一般不会出现某个空闲结点链表被用光的情况;一旦出现了,才去其它线程对应的空闲结点链表上获取空闲结点,因此出现锁竞争的概率非常低。这样既保证了所有空闲规则结点全局并发使用,又最大限度地减少了线程之间的锁竞争。
本领域技术人员可以理解实现上述实施例的全部或部分步骤被实现为由CPU执行的计算机程序。在该计算机程序被CPU执行时,执行本公开提供的上述方法所限定的上述功能。所述的程序可以存储于一种计算机可读存储介质中,该存储介质可以是只读存储器,磁盘或光盘等。
此外,需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
图7是根据一示例性实施例示出的一种会话处理装置的框图。如图7所示,会话处理装置70包括:认证模块702,解析模块704,队列模块706,线程模块708,处理模块710,存储模块712。
认证模块702用于主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;包括:由所述会话的数据包中提取用户信息;对所述用户信息进行认证。
解析模块704用于基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;包括:基于所述会话的标识确定目标线程池,所述目标线程池中包括多个数据包线程;在所述多个数据包线程中确定所述目标数据包线程
队列模块706用于将解析后的所述会话数据加入目标线程数据包队列;
线程模块708用于由多个数据处理线程中确定目标数据处理线程;可包括:将多个虚拟处理器与所述多个数据处理线程绑定。
处理模块710用于基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;包括:所述目标数据处理线程依次读取所述目标线程数据包队列中的节点;对所述节点中的解析后的所述会话数据进行处理。
存储模块712用于将处理结果存储到目标元素中以响应所述会话。包括:基于所述目标数据包线程由所述多个元素中确定目标元素;将所述处理结果存储到所述目标元素中以响应所述会话。还包括:将所述目标元素挂载在哈希链表上以响应所述会话。
图8是根据另一示例性实施例示出的一种会话处理装置的框图。如图8所示,会话处理装置80包括:切换模块802,初始化模块804。
切换模块802用于在主服务器故障时,进行主备倒换操作;原主服务器重启后切换为备用服务器;原备用服务器接收切换信号,保留原主服务器的配置转换为主服务器。
初始化模块804用于主服务器进行初始化,所述初始化包括:初始化会话表;初始化多个处理数据包线程;创建多个处理线程;初始化套接字;创建读取套接字线程;创建读取会话线程;启动套接字服务;创建多个线程池;初始化多个元素。
根据本公开的会话处理装置,主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;将解析后的所述会话数据加入目标线程数据包队列;由多个数据处理线程中确定目标数据处理线程;基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;将处理结果存储到目标元素中以响应所述会话的方式,实现服务器对多个客户端并发连接,高速处理的效果,同时还能够保持服务器和客户端之间会话的安全性和高效性。
图9是根据一示例性实施例示出的一种电子设备的框图。
下面参照图9来描述根据本公开的这种实施方式的电子设备900。图9显示的电子设备900仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图9所示,电子设备900以通用计算设备的形式表现。电子设备900的组件可以包括但不限于:至少一个处理单元910、至少一个存储单元920、连接不同***组件(包括存储单元920和处理单元910)的总线930、显示单元940等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元910执行,使得所述处理单元910执行本说明书上述电子处方流转处理方法部分中描述的根据本公开各种示例性实施方式的步骤。例如,所述处理单元910可以执行如图1,图3中所示的步骤。
所述存储单元920可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)9201和/或高速缓存存储单元9202,还可以进一步包括只读存储单元(ROM)9203。
所述存储单元920还可以包括具有一组(至少一个)程序模块9205的程序/实用工具9204,这样的程序模块9205包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线930可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备900也可以与一个或多个外部设备900’(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备900交互的设备通信,和/或与使得该电子设备900能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口950进行。并且,电子设备900还可以通过网络适配器960与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器960可以通过总线930与电子设备900的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,如图10所示,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述方法。
所述软件产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该计算机可读介质实现如下功能:主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;将解析后的所述会话数据加入目标线程数据包队列;由多个数据处理线程中确定目标数据处理线程;基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;将处理结果存储到目标元素中以响应所述会话。
本领域技术人员可以理解上述各模块可以按照实施例的描述分布于装置中,也可以进行相应变化唯一不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上具体地示出和描述了本公开的示例性实施例。应可理解的是,本公开不限于这里描述的详细结构、设置方式或实现方法;相反,本公开意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (13)
1.一种会话处理方法,其特征在于,包括:
主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;
基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;
将解析后的所述会话数据加入目标线程数据包队列;
由多个数据处理线程中确定目标数据处理线程;
基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;
存储处理结果以响应所述会话。
2.如权利要求1所述的方法,其特征在于,还包括:
在主服务器故障时,进行主备倒换操作;
原主服务器重启后切换为备用服务器;
原备用服务器接收切换信号,保留原主服务器的配置转换为主服务器。
3.如权利要求2所述的方法,其特征在于,主服务器对来自客户端的会话进行认证之前,还包括:
主服务器进行初始化,所述初始化包括:
初始化会话表;初始化多个处理数据包线程;创建多个处理线程;初始化套接字;创建读取套接字线程;创建读取会话线程;启动套接字服务;创建多个线程池;初始化多个元素。
4.如权利要求1所述的方法,其特征在于,主服务器对来自客户端的会话进行认证,包括:
由所述会话的数据包中提取用户信息;
对所述用户信息进行认证。
5.如权利要求4所述的方法,其特征在于,还包括:
所述主服务器确定所述客户端互联网协议地址的合法性;
在合法性通过时,通过所述会话的报文信息创建会话;
将所述会话加入至会话表中。
6.如权利要求3所述的方法,其特征在于,基于所述会话的标识确定目标数据包线程,包括:
基于所述会话的标识确定目标线程池,所述目标线程池中包括多个数据包线程;
在所述多个数据包线程中确定所述目标数据包线程。
7.如权利要求1所述的方法,其特征在于,由多个数据处理线程中确定目标数据处理线程,包括:
将多个虚拟处理器与所述多个数据处理线程绑定。
8.如权利要求1所述的方法,其特征在于,基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理,包括:
所述目标数据处理线程依次读取所述目标线程数据包队列中的节点;
对所述节点中的解析后的所述会话数据进行处理。
9.如权利要求3所述的方法,其特征在于,存储处理结果以响应所述会话,包括:
基于所述目标数据包线程由所述多个元素中确定目标元素;
将所述处理结果存储到所述目标元素中以响应所述会话。
10.如权利要求9所述的方法,其特征在于,将所述处理结果存储到所述目标元素中以响应所述会话,包括:
将所述处理结果存储到所述目标元素中;
将所述目标元素挂载在哈希链表上以响应所述会话。
11.一种会话处理装置,其特征在于,包括:
认证模块,用于主服务器对来自客户端的会话进行认证,在认证通过后将会话数据存储到会话报文缓冲区;
解析模块,用于基于所述会话的标识确定目标数据包线程,并通过所述目标数据包线程对所述会话数据进行解析;
队列模块,用于将解析后的所述会话数据加入目标线程数据包队列;
线程模块,用于由多个数据处理线程中确定目标数据处理线程;
处理模块,用于基于所述目标线程数据包队列,通对所述目标数据处理线程对解析后的所述会话数据进行处理;
存储模块,用于将处理结果存储到目标元素中以响应所述会话。
12.如权利要求11所述的装置,其特征在于,还包括:
切换模块,用于在主服务器故障时,进行主备倒换操作;原主服务器重启后切换为备用服务器;原备用服务器接收切换信号,保留原主服务器的配置转换为主服务器。
13.如权利要求12所述的装置,其特征在于,还包括:
初始化模块,用于主服务器进行初始化,所述初始化包括:初始化会话表;初始化多个处理数据包线程;创建多个处理线程;初始化套接字;创建读取套接字线程;创建读取会话线程;启动套接字服务;创建多个线程池;初始化多个元素。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010355379.3A CN111556058B (zh) | 2020-04-29 | 2020-04-29 | 会话处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010355379.3A CN111556058B (zh) | 2020-04-29 | 2020-04-29 | 会话处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111556058A true CN111556058A (zh) | 2020-08-18 |
CN111556058B CN111556058B (zh) | 2022-09-09 |
Family
ID=72003145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010355379.3A Active CN111556058B (zh) | 2020-04-29 | 2020-04-29 | 会话处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111556058B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112437125A (zh) * | 2020-11-10 | 2021-03-02 | 北京百度网讯科技有限公司 | 信息并发处理方法、装置、电子设备及存储介质 |
CN113377265A (zh) * | 2021-06-25 | 2021-09-10 | 数字广东网络建设有限公司 | 一种批注方法、装置、移动终端和存储介质 |
CN113691589A (zh) * | 2021-07-27 | 2021-11-23 | 杭州迪普科技股份有限公司 | 报文传输方法、装置及*** |
CN115665042A (zh) * | 2022-12-12 | 2023-01-31 | 深圳艾灵网络有限公司 | 数据处理方法、装置、用户平面功能实体及存储介质 |
CN116668412A (zh) * | 2023-06-02 | 2023-08-29 | 北京首都在线科技股份有限公司 | 通信交互方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116505A1 (en) * | 2001-02-19 | 2002-08-22 | Geoff Higgins | Content provider and method for a computer system |
CN101453452A (zh) * | 2007-12-07 | 2009-06-10 | 国际商业机器公司 | 基于多核的sip消息处理方法及装置 |
CN107592303A (zh) * | 2017-08-28 | 2018-01-16 | 北京明朝万达科技股份有限公司 | 一种高速镜像网络流量中外发文件的提取方法及装置 |
-
2020
- 2020-04-29 CN CN202010355379.3A patent/CN111556058B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116505A1 (en) * | 2001-02-19 | 2002-08-22 | Geoff Higgins | Content provider and method for a computer system |
CN101453452A (zh) * | 2007-12-07 | 2009-06-10 | 国际商业机器公司 | 基于多核的sip消息处理方法及装置 |
CN107592303A (zh) * | 2017-08-28 | 2018-01-16 | 北京明朝万达科技股份有限公司 | 一种高速镜像网络流量中外发文件的提取方法及装置 |
Non-Patent Citations (1)
Title |
---|
丘志杰: "分布式文件***的研究―并发通信及网络互斥的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112437125A (zh) * | 2020-11-10 | 2021-03-02 | 北京百度网讯科技有限公司 | 信息并发处理方法、装置、电子设备及存储介质 |
CN112437125B (zh) * | 2020-11-10 | 2022-05-03 | 阿波罗智联(北京)科技有限公司 | 信息并发处理方法、装置、电子设备及存储介质 |
CN113377265A (zh) * | 2021-06-25 | 2021-09-10 | 数字广东网络建设有限公司 | 一种批注方法、装置、移动终端和存储介质 |
CN113377265B (zh) * | 2021-06-25 | 2024-05-28 | 数字广东网络建设有限公司 | 一种批注方法、装置、移动终端和存储介质 |
CN113691589A (zh) * | 2021-07-27 | 2021-11-23 | 杭州迪普科技股份有限公司 | 报文传输方法、装置及*** |
CN113691589B (zh) * | 2021-07-27 | 2023-12-26 | 杭州迪普科技股份有限公司 | 报文传输方法、装置及*** |
CN115665042A (zh) * | 2022-12-12 | 2023-01-31 | 深圳艾灵网络有限公司 | 数据处理方法、装置、用户平面功能实体及存储介质 |
CN115665042B (zh) * | 2022-12-12 | 2023-02-28 | 深圳艾灵网络有限公司 | 数据处理方法、装置、用户平面功能实体及存储介质 |
CN116668412A (zh) * | 2023-06-02 | 2023-08-29 | 北京首都在线科技股份有限公司 | 通信交互方法、装置、电子设备及存储介质 |
CN116668412B (zh) * | 2023-06-02 | 2024-02-13 | 北京首都在线科技股份有限公司 | 通信交互方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111556058B (zh) | 2022-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111556058B (zh) | 会话处理方法及装置 | |
RU2419986C2 (ru) | Объединение многострочных протокольных вхождений | |
US10037266B2 (en) | Game stream fuzz testing and automation | |
CN109213900B (zh) | 一种区块链的数据修改方法、装置、设备和介质 | |
US20220311607A1 (en) | Key generation method and apparatus, device, and medium | |
CN114218133A (zh) | 一种数据传输方法及装置 | |
Boutros et al. | Build fast, trade fast: FPGA-based high-frequency trading using high-level synthesis | |
CN109032796A (zh) | 一种数据处理方法和装置 | |
CN109254854A (zh) | 异步调用方法、计算机装置及存储介质 | |
US20190294466A1 (en) | Network-accessible volume creation and leasing | |
CN112187491A (zh) | 服务器的管理方法、装置和设备 | |
JP2009123201A (ja) | データを処理するためのサーバ‐プロセッサ・ハイブリッド・システムおよび方法 | |
CN113922968A (zh) | 访问令牌的生成及校验方法、装置、电子设备和存储介质 | |
CN113946816A (zh) | 基于云服务的鉴权方法、装置、电子设备和存储介质 | |
US20090132582A1 (en) | Processor-server hybrid system for processing data | |
CN111221655B (zh) | 管理OpenStack平台的资源的方法及装置 | |
EP1949228A4 (en) | ASYNCHRONOUS JUST-IN-TIME COMPILATION | |
US20170279777A1 (en) | File signature system and method | |
CN115499889A (zh) | 基于vpp的upf转发面实现方法、装置、***及相关设备 | |
CN109697132A (zh) | 一种终端设备的即时通信***及方法 | |
CN111905361B (zh) | 游戏服务***、游戏处理方法、存储介质及设备 | |
WO2021128936A1 (zh) | 报文的处理方法及装置 | |
CN114461912A (zh) | 一种信息处理方法、装置、电子设备及存储介质 | |
KR101946620B1 (ko) | 서버의 서명 데이터를 포함하는 데이터 블록을 생성하는 방법 및 그 서버 | |
CN113761419A (zh) | 拓扑信息的显示方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |