本技术涉及计算机,尤其涉及一种请求处理方法、服务端及介质。
背景技术:
1、在客户端服务端模式(client/server,简称c/s)架构下,服务端在调用客户端处理一个处理任务时,服务端通常需要处理来自客户端的一个线程发送的多次处理请求。服务端在对每次处理请求进行处理时,可以基于处理请求的上下文进行处理。其中,上下文指的是处理请求的前因后果关系。示例性地,上下文可以指之前多次处理请求(或者一次处理请求)的处理结果信息或者处理过程信息。
2、现有技术中,服务端在对处理请求进行处理的过程中,是服务端的工作线程对处理请求进行处理的,而处理请求的上下文存储在工作线程的本地变量中。服务端在选择工作线程时,是从线程池中的多个工作线程中,任意选择一个工作线程,对处理请求进行处理。
3、但是,现有技术的请求处理方法,采用任意选择工作线程的方式,可能存在服务器选择的工作线程的本地变量中,并未存储与处理请求对应的上下文的情况,进而导致出现数据错乱的问题。
技术实现思路
1、本技术实施例提供一种请求处理方法、服务端及介质,用于解决现有技术中可能存在服务器选择的工作线程的本地变量中,并未存储与处理请求对应的上下文的情况,进而导致出现数据错乱的问题。
2、第一方面,本技术实施例提供一种请求处理方法,所述方法包括:
3、分发线程响应于客户端发送的处理请求,将所述处理请求发送至线程池管理器;其中,所述处理请求包括所述客户端的标识、客户端线程的标识和/或上下文的标识;
4、所述线程池管理器确定与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池,并将所述处理请求发送至所述上下文线程池;
5、所述上下文线程池利用所述上下文线程池中的工作线程,对所述处理请求进行处理,并向所述客户端反馈处理结果。
6、在一种实现方式中,所述线程池管理器确定与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池,并将所述处理请求发送至所述上下文线程池,包括:
7、所述线程池管理器确定是否存在与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池;
8、所述线程池管理器在确定存在与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池时,将所述处理请求发送至所述上下文线程池。
9、在一种实现方式中,还包括:
10、所述线程池管理器在确定不存在与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池时,创建与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池,并将所述处理请求发送至所述上下文线程池。
11、在一种实现方式中,所述上下文的标识为所述上下文在所述客户端中的内存地址。
12、在一种实现方式中,所述方法还包括:
13、所述分发线程响应于所述客户端发送的释放请求,将所述释放请求发送至所述线程池管理器;其中,所述释放请求包括所述客户端的标识、客户端线程的标识和/或上下文的标识;
14、所述线程池管理器对所述释放请求对应的上下文线程池,进行释放处理。
15、在一种实现方式中,后台线程与所述线程池管理器对应;所述方法还包括:
16、所述后台线程在识别到在预设时长内,所述线程池管理器未接收到与所述上下文线程池对应的处理请求时,向所述线程池管理器发送所述释放请求;
17、所述线程池管理器对所述释放请求对应的上下文线程池,进行释放处理。
18、在一种实现方式中,所述上下文存储在所述工作线程的本地变量中。
19、第二方面,本技术实施例提供一种服务端,包括:
20、分发线程,用于响应于客户端发送的处理请求,将所述处理请求发送至线程池管理器;其中,所述处理请求包括所述客户端的标识、客户端线程的标识和/或上下文的标识;
21、所述线程池管理器,用于确定与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池,并将所述处理请求发送至所述上下文线程池;
22、所述上下文线程池,用于利用所述上下文线程池中的工作线程,对所述处理请求进行处理,并向所述客户端反馈处理结果。
23、在一种实现方式中,所述线程池管理器,具体用于:
24、确定是否存在与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池;
25、在确定存在与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池时,将所述处理请求发送至所述上下文线程池。
26、在一种实现方式中,所述线程池管理器,还用于:
27、在确定不存在与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池时,创建与所述客户端的标识、所述客户端线程的标识和/或所述上下文的标识,对应的上下文线程池,并将所述处理请求发送至所述上下文线程池。
28、在一种实现方式中,所述上下文的标识为所述上下文在所述客户端中的内存地址。
29、在一种实现方式中,
30、所述分发线程,还用于响应于所述客户端发送的释放请求,将所述释放请求发送至所述线程池管理器;其中,所述释放请求包括所述客户端的标识、客户端线程的标识和/或上下文的标识;
31、所述线程池管理器,还用于对所述释放请求对应的上下文线程池,进行释放处理。
32、在一种实现方式中,后台线程与所述线程池管理器对应;
33、所述后台线程,用于在识别到在预设时长内,所述线程池管理器未接收到与所述上下文线程池对应的处理请求时,向所述线程池管理器发送所述释放请求;
34、所述线程池管理器,还用于对所述释放请求对应的上下文线程池,进行释放处理。
35、在一种实现方式中,所述上下文存储在所述工作线程的本地变量中。
36、第三方面,本技术实施例提供一种服务端,包括:
37、处理器,以及与所述处理器通信连接的存储器;
38、所述存储器用于存储计算机执行指令;
39、所述处理器用于执行所述存储器存储的计算机执行指令,以实现第一方面所述的请求处理方法。
40、第四方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面所述的请求处理方法。
41、本技术实施例提供一种请求处理方法、服务端及介质。该方法中,分发线程可以响应于客户端发送的处理请求,将处理请求发送至线程池管理器。处理请求包括客户端的标识、客户端线程的标识和/或上下文的标识。线程池管理器可以在接收到处理请求时,确定与客户端的标识、客户端线程的标识和/或上下文的标识,对应的上下文线程池,并将处理请求发送至上下文线程池。针对处理请求,上下文线程池利用上下文线程池中的工作线程,对处理请求进行处理,并向客户端反馈处理结果。相较于现有技术中,服务端在选择工作线程时,是从线程池中的多个工作线程中,任意选择一个工作线程,对处理请求进行处理,可能存在服务器选择的工作线程的本地变量中,并未存储与处理请求对应的上下文的情况,进而导致出现数据错乱的问题而言,本技术中,可以将处理请求与上下文线程池进行强绑定,也就是说,将处理请求与存储处理请求的上下文的工作线程所属的上下文线程池,进行强绑定。线程池管理器可以在获取处理请求时,确定多个上下文线程池中,与处理请求中的客户端的标识、客户端线程的标识和/或上下文的标识,对应的上下文线程池。该上下文线程池利用上下文线程池中的工作线程,对处理请求进行处理,并向客户端反馈处理结果。保证了对处理请求进行处理的工作线程为存储处理请求的上下文的工作线程,从而保证了上下文的强一致,进而保证了数据处理正确。